Merge tag 'drm-misc-next-2021-10-14' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / net / dsa / sja1105 / sja1105_static_config.h
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright 2016-2018 NXP
3  * Copyright (c) 2018-2019, Vladimir Oltean <olteanv@gmail.com>
4  */
5 #ifndef _SJA1105_STATIC_CONFIG_H
6 #define _SJA1105_STATIC_CONFIG_H
7
8 #include <linux/packing.h>
9 #include <linux/types.h>
10 #include <asm/types.h>
11
12 #define SJA1105_NUM_PORTS                               5
13 #define SJA1110_NUM_PORTS                               11
14 #define SJA1105_MAX_NUM_PORTS                           SJA1110_NUM_PORTS
15 #define SJA1105_NUM_TC                                  8
16
17 #define SJA1105_SIZE_SPI_MSG_HEADER                     4
18 #define SJA1105_SIZE_SPI_MSG_MAXLEN                     (64 * 4)
19 #define SJA1105_SIZE_DEVICE_ID                          4
20 #define SJA1105_SIZE_TABLE_HEADER                       12
21 #define SJA1105_SIZE_SCHEDULE_ENTRY                     8
22 #define SJA1110_SIZE_SCHEDULE_ENTRY                     12
23 #define SJA1105_SIZE_SCHEDULE_ENTRY_POINTS_ENTRY        4
24 #define SJA1110_SIZE_SCHEDULE_ENTRY_POINTS_ENTRY        8
25 #define SJA1105_SIZE_VL_LOOKUP_ENTRY                    12
26 #define SJA1105_SIZE_VL_POLICING_ENTRY                  8
27 #define SJA1105_SIZE_VL_FORWARDING_ENTRY                4
28 #define SJA1105_SIZE_L2_POLICING_ENTRY                  8
29 #define SJA1105_SIZE_VLAN_LOOKUP_ENTRY                  8
30 #define SJA1110_SIZE_VLAN_LOOKUP_ENTRY                  12
31 #define SJA1105_SIZE_L2_FORWARDING_ENTRY                8
32 #define SJA1105_SIZE_L2_FORWARDING_PARAMS_ENTRY         12
33 #define SJA1105_SIZE_RETAGGING_ENTRY                    8
34 #define SJA1105_SIZE_XMII_PARAMS_ENTRY                  4
35 #define SJA1110_SIZE_XMII_PARAMS_ENTRY                  8
36 #define SJA1105_SIZE_SCHEDULE_PARAMS_ENTRY              12
37 #define SJA1105_SIZE_SCHEDULE_ENTRY_POINTS_PARAMS_ENTRY 4
38 #define SJA1105_SIZE_VL_FORWARDING_PARAMS_ENTRY         12
39 #define SJA1105ET_SIZE_L2_LOOKUP_ENTRY                  12
40 #define SJA1105ET_SIZE_MAC_CONFIG_ENTRY                 28
41 #define SJA1105ET_SIZE_L2_LOOKUP_PARAMS_ENTRY           4
42 #define SJA1105ET_SIZE_GENERAL_PARAMS_ENTRY             40
43 #define SJA1105ET_SIZE_AVB_PARAMS_ENTRY                 12
44 #define SJA1105ET_SIZE_CBS_ENTRY                        16
45 #define SJA1105PQRS_SIZE_L2_LOOKUP_ENTRY                20
46 #define SJA1110_SIZE_L2_LOOKUP_ENTRY                    24
47 #define SJA1105PQRS_SIZE_MAC_CONFIG_ENTRY               32
48 #define SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_ENTRY         16
49 #define SJA1110_SIZE_L2_LOOKUP_PARAMS_ENTRY             28
50 #define SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY           44
51 #define SJA1110_SIZE_GENERAL_PARAMS_ENTRY               56
52 #define SJA1105PQRS_SIZE_AVB_PARAMS_ENTRY               16
53 #define SJA1105PQRS_SIZE_CBS_ENTRY                      20
54 #define SJA1110_SIZE_PCP_REMAPPING_ENTRY                4
55
56 /* UM10944.pdf Page 11, Table 2. Configuration Blocks */
57 enum {
58         BLKID_SCHEDULE                                  = 0x00,
59         BLKID_SCHEDULE_ENTRY_POINTS                     = 0x01,
60         BLKID_VL_LOOKUP                                 = 0x02,
61         BLKID_VL_POLICING                               = 0x03,
62         BLKID_VL_FORWARDING                             = 0x04,
63         BLKID_L2_LOOKUP                                 = 0x05,
64         BLKID_L2_POLICING                               = 0x06,
65         BLKID_VLAN_LOOKUP                               = 0x07,
66         BLKID_L2_FORWARDING                             = 0x08,
67         BLKID_MAC_CONFIG                                = 0x09,
68         BLKID_SCHEDULE_PARAMS                           = 0x0A,
69         BLKID_SCHEDULE_ENTRY_POINTS_PARAMS              = 0x0B,
70         BLKID_VL_FORWARDING_PARAMS                      = 0x0C,
71         BLKID_L2_LOOKUP_PARAMS                          = 0x0D,
72         BLKID_L2_FORWARDING_PARAMS                      = 0x0E,
73         BLKID_AVB_PARAMS                                = 0x10,
74         BLKID_GENERAL_PARAMS                            = 0x11,
75         BLKID_RETAGGING                                 = 0x12,
76         BLKID_CBS                                       = 0x13,
77         BLKID_PCP_REMAPPING                             = 0x1C,
78         BLKID_XMII_PARAMS                               = 0x4E,
79 };
80
81 enum sja1105_blk_idx {
82         BLK_IDX_SCHEDULE = 0,
83         BLK_IDX_SCHEDULE_ENTRY_POINTS,
84         BLK_IDX_VL_LOOKUP,
85         BLK_IDX_VL_POLICING,
86         BLK_IDX_VL_FORWARDING,
87         BLK_IDX_L2_LOOKUP,
88         BLK_IDX_L2_POLICING,
89         BLK_IDX_VLAN_LOOKUP,
90         BLK_IDX_L2_FORWARDING,
91         BLK_IDX_MAC_CONFIG,
92         BLK_IDX_SCHEDULE_PARAMS,
93         BLK_IDX_SCHEDULE_ENTRY_POINTS_PARAMS,
94         BLK_IDX_VL_FORWARDING_PARAMS,
95         BLK_IDX_L2_LOOKUP_PARAMS,
96         BLK_IDX_L2_FORWARDING_PARAMS,
97         BLK_IDX_AVB_PARAMS,
98         BLK_IDX_GENERAL_PARAMS,
99         BLK_IDX_RETAGGING,
100         BLK_IDX_CBS,
101         BLK_IDX_XMII_PARAMS,
102         BLK_IDX_PCP_REMAPPING,
103         BLK_IDX_MAX,
104         /* Fake block indices that are only valid for dynamic access */
105         BLK_IDX_MGMT_ROUTE,
106         BLK_IDX_MAX_DYN,
107         BLK_IDX_INVAL = -1,
108 };
109
110 #define SJA1105_MAX_SCHEDULE_COUNT                      1024
111 #define SJA1110_MAX_SCHEDULE_COUNT                      4096
112 #define SJA1105_MAX_SCHEDULE_ENTRY_POINTS_COUNT         2048
113 #define SJA1105_MAX_VL_LOOKUP_COUNT                     1024
114 #define SJA1110_MAX_VL_LOOKUP_COUNT                     4096
115 #define SJA1105_MAX_VL_POLICING_COUNT                   1024
116 #define SJA1110_MAX_VL_POLICING_COUNT                   4096
117 #define SJA1105_MAX_VL_FORWARDING_COUNT                 1024
118 #define SJA1110_MAX_VL_FORWARDING_COUNT                 4096
119 #define SJA1105_MAX_L2_LOOKUP_COUNT                     1024
120 #define SJA1105_MAX_L2_POLICING_COUNT                   45
121 #define SJA1110_MAX_L2_POLICING_COUNT                   110
122 #define SJA1105_MAX_VLAN_LOOKUP_COUNT                   4096
123 #define SJA1105_MAX_L2_FORWARDING_COUNT                 13
124 #define SJA1110_MAX_L2_FORWARDING_COUNT                 19
125 #define SJA1105_MAX_MAC_CONFIG_COUNT                    5
126 #define SJA1110_MAX_MAC_CONFIG_COUNT                    11
127 #define SJA1105_MAX_SCHEDULE_PARAMS_COUNT               1
128 #define SJA1105_MAX_SCHEDULE_ENTRY_POINTS_PARAMS_COUNT  1
129 #define SJA1105_MAX_VL_FORWARDING_PARAMS_COUNT          1
130 #define SJA1105_MAX_L2_LOOKUP_PARAMS_COUNT              1
131 #define SJA1105_MAX_L2_FORWARDING_PARAMS_COUNT          1
132 #define SJA1105_MAX_GENERAL_PARAMS_COUNT                1
133 #define SJA1105_MAX_RETAGGING_COUNT                     32
134 #define SJA1105_MAX_XMII_PARAMS_COUNT                   1
135 #define SJA1105_MAX_AVB_PARAMS_COUNT                    1
136 #define SJA1105ET_MAX_CBS_COUNT                         10
137 #define SJA1105PQRS_MAX_CBS_COUNT                       16
138 #define SJA1110_MAX_CBS_COUNT                           80
139 #define SJA1110_MAX_PCP_REMAPPING_COUNT                 11
140
141 #define SJA1105_MAX_FRAME_MEMORY                        929
142 #define SJA1110_MAX_FRAME_MEMORY                        1820
143 #define SJA1105_FRAME_MEMORY_RETAGGING_OVERHEAD         19
144 #define SJA1105_VL_FRAME_MEMORY                         100
145
146 #define SJA1105E_DEVICE_ID                              0x9C00000Cull
147 #define SJA1105T_DEVICE_ID                              0x9E00030Eull
148 #define SJA1105PR_DEVICE_ID                             0xAF00030Eull
149 #define SJA1105QS_DEVICE_ID                             0xAE00030Eull
150 #define SJA1110_DEVICE_ID                               0xB700030Full
151
152 #define SJA1105ET_PART_NO                               0x9A83
153 #define SJA1105P_PART_NO                                0x9A84
154 #define SJA1105Q_PART_NO                                0x9A85
155 #define SJA1105R_PART_NO                                0x9A86
156 #define SJA1105S_PART_NO                                0x9A87
157 #define SJA1110A_PART_NO                                0x1110
158 #define SJA1110B_PART_NO                                0x1111
159 #define SJA1110C_PART_NO                                0x1112
160 #define SJA1110D_PART_NO                                0x1113
161
162 #define SJA1110_ACU                     0x1c4400
163 #define SJA1110_RGU                     0x1c6000
164 #define SJA1110_CGU                     0x1c6400
165
166 #define SJA1110_SPI_ADDR(x)             ((x) / 4)
167 #define SJA1110_ACU_ADDR(x)             (SJA1110_ACU + SJA1110_SPI_ADDR(x))
168 #define SJA1110_CGU_ADDR(x)             (SJA1110_CGU + SJA1110_SPI_ADDR(x))
169 #define SJA1110_RGU_ADDR(x)             (SJA1110_RGU + SJA1110_SPI_ADDR(x))
170
171 #define SJA1105_RSV_ADDR                0xffffffffffffffffull
172
173 struct sja1105_schedule_entry {
174         u64 winstindex;
175         u64 winend;
176         u64 winst;
177         u64 destports;
178         u64 setvalid;
179         u64 txen;
180         u64 resmedia_en;
181         u64 resmedia;
182         u64 vlindex;
183         u64 delta;
184 };
185
186 struct sja1105_schedule_params_entry {
187         u64 subscheind[8];
188 };
189
190 struct sja1105_general_params_entry {
191         u64 vllupformat;
192         u64 mirr_ptacu;
193         u64 switchid;
194         u64 hostprio;
195         u64 mac_fltres1;
196         u64 mac_fltres0;
197         u64 mac_flt1;
198         u64 mac_flt0;
199         u64 incl_srcpt1;
200         u64 incl_srcpt0;
201         u64 send_meta1;
202         u64 send_meta0;
203         u64 casc_port;
204         u64 host_port;
205         u64 mirr_port;
206         u64 vlmarker;
207         u64 vlmask;
208         u64 tpid;
209         u64 ignore2stf;
210         u64 tpid2;
211         /* P/Q/R/S only */
212         u64 queue_ts;
213         u64 egrmirrvid;
214         u64 egrmirrpcp;
215         u64 egrmirrdei;
216         u64 replay_port;
217         /* SJA1110 only */
218         u64 tte_en;
219         u64 tdmaconfigidx;
220         u64 header_type;
221 };
222
223 struct sja1105_schedule_entry_points_entry {
224         u64 subschindx;
225         u64 delta;
226         u64 address;
227 };
228
229 struct sja1105_schedule_entry_points_params_entry {
230         u64 clksrc;
231         u64 actsubsch;
232 };
233
234 struct sja1105_vlan_lookup_entry {
235         u64 ving_mirr;
236         u64 vegr_mirr;
237         u64 vmemb_port;
238         u64 vlan_bc;
239         u64 tag_port;
240         u64 vlanid;
241         u64 type_entry; /* SJA1110 only */
242 };
243
244 struct sja1105_l2_lookup_entry {
245         u64 vlanid;
246         u64 macaddr;
247         u64 destports;
248         u64 enfport;
249         u64 index;
250         /* P/Q/R/S only */
251         u64 mask_iotag;
252         u64 mask_vlanid;
253         u64 mask_macaddr;
254         u64 mask_srcport;
255         u64 iotag;
256         u64 srcport;
257         u64 lockeds;
258         union {
259                 /* LOCKEDS=1: Static FDB entries */
260                 struct {
261                         /* TSREG is deprecated in SJA1110, TRAP is supported only
262                          * in SJA1110.
263                          */
264                         u64 trap;
265                         u64 tsreg;
266                         u64 mirrvlan;
267                         u64 takets;
268                         u64 mirr;
269                         u64 retag;
270                 };
271                 /* LOCKEDS=0: Dynamically learned FDB entries */
272                 struct {
273                         u64 touched;
274                         u64 age;
275                 };
276         };
277 };
278
279 struct sja1105_l2_lookup_params_entry {
280         u64 maxaddrp[SJA1105_MAX_NUM_PORTS]; /* P/Q/R/S only */
281         u64 start_dynspc;    /* P/Q/R/S only */
282         u64 drpnolearn;      /* P/Q/R/S only */
283         u64 use_static;      /* P/Q/R/S only */
284         u64 owr_dyn;         /* P/Q/R/S only */
285         u64 learn_once;      /* P/Q/R/S only */
286         u64 maxage;          /* Shared */
287         u64 dyn_tbsz;        /* E/T only */
288         u64 poly;            /* E/T only */
289         u64 shared_learn;    /* Shared */
290         u64 no_enf_hostprt;  /* Shared */
291         u64 no_mgmt_learn;   /* Shared */
292 };
293
294 struct sja1105_l2_forwarding_entry {
295         u64 bc_domain;
296         u64 reach_port;
297         u64 fl_domain;
298         /* This is actually max(SJA1105_NUM_TC, SJA1105_MAX_NUM_PORTS) */
299         u64 vlan_pmap[SJA1105_MAX_NUM_PORTS];
300         bool type_egrpcp2outputq;
301 };
302
303 struct sja1105_l2_forwarding_params_entry {
304         u64 max_dynp;
305         u64 part_spc[8];
306 };
307
308 struct sja1105_l2_policing_entry {
309         u64 sharindx;
310         u64 smax;
311         u64 rate;
312         u64 maxlen;
313         u64 partition;
314 };
315
316 struct sja1105_avb_params_entry {
317         u64 cas_master;
318         u64 destmeta;
319         u64 srcmeta;
320 };
321
322 struct sja1105_mac_config_entry {
323         u64 top[8];
324         u64 base[8];
325         u64 enabled[8];
326         u64 ifg;
327         u64 speed;
328         u64 tp_delin;
329         u64 tp_delout;
330         u64 maxage;
331         u64 vlanprio;
332         u64 vlanid;
333         u64 ing_mirr;
334         u64 egr_mirr;
335         u64 drpnona664;
336         u64 drpdtag;
337         u64 drpuntag;
338         u64 retag;
339         u64 dyn_learn;
340         u64 egress;
341         u64 ingress;
342 };
343
344 struct sja1105_retagging_entry {
345         u64 egr_port;
346         u64 ing_port;
347         u64 vlan_ing;
348         u64 vlan_egr;
349         u64 do_not_learn;
350         u64 use_dest_ports;
351         u64 destports;
352 };
353
354 struct sja1105_cbs_entry {
355         u64 port; /* Not used for SJA1110 */
356         u64 prio; /* Not used for SJA1110 */
357         u64 credit_hi;
358         u64 credit_lo;
359         u64 send_slope;
360         u64 idle_slope;
361 };
362
363 struct sja1105_xmii_params_entry {
364         u64 phy_mac[SJA1105_MAX_NUM_PORTS];
365         u64 xmii_mode[SJA1105_MAX_NUM_PORTS];
366         /* The SJA1110 insists being a snowflake, and requires SGMII,
367          * 2500base-x and internal MII ports connected to the 100base-TX PHY to
368          * set this bit. We set it unconditionally from the high-level logic,
369          * and only sja1110_xmii_params_entry_packing writes it to the static
370          * config. I have no better name for it than "special".
371          */
372         u64 special[SJA1105_MAX_NUM_PORTS];
373 };
374
375 struct sja1110_pcp_remapping_entry {
376         u64 egrpcp[SJA1105_NUM_TC];
377 };
378
379 enum {
380         SJA1105_VL_FORMAT_PSFP          = 0,
381         SJA1105_VL_FORMAT_ARINC664      = 1,
382 };
383
384 struct sja1105_vl_lookup_entry {
385         u64 format;
386         u64 port;
387         union {
388                 /* SJA1105_VL_FORMAT_PSFP */
389                 struct {
390                         u64 destports;
391                         u64 iscritical;
392                         u64 macaddr;
393                         u64 vlanid;
394                         u64 vlanprior;
395                 };
396                 /* SJA1105_VL_FORMAT_ARINC664 */
397                 struct {
398                         u64 egrmirr;
399                         u64 ingrmirr;
400                         u64 vlid;
401                 };
402         };
403         /* Not part of hardware structure */
404         unsigned long flow_cookie;
405 };
406
407 struct sja1105_vl_policing_entry {
408         u64 type;
409         u64 maxlen;
410         u64 sharindx;
411         u64 bag;
412         u64 jitter;
413 };
414
415 struct sja1105_vl_forwarding_entry {
416         u64 type;
417         u64 priority;
418         u64 partition;
419         u64 destports;
420 };
421
422 struct sja1105_vl_forwarding_params_entry {
423         u64 partspc[8];
424         u64 debugen;
425 };
426
427 struct sja1105_table_header {
428         u64 block_id;
429         u64 len;
430         u64 crc;
431 };
432
433 struct sja1105_table_ops {
434         size_t (*packing)(void *buf, void *entry_ptr, enum packing_op op);
435         size_t unpacked_entry_size;
436         size_t packed_entry_size;
437         size_t max_entry_count;
438 };
439
440 struct sja1105_table {
441         const struct sja1105_table_ops *ops;
442         size_t entry_count;
443         void *entries;
444 };
445
446 struct sja1105_static_config {
447         u64 device_id;
448         struct sja1105_table tables[BLK_IDX_MAX];
449 };
450
451 extern const struct sja1105_table_ops sja1105e_table_ops[BLK_IDX_MAX];
452 extern const struct sja1105_table_ops sja1105t_table_ops[BLK_IDX_MAX];
453 extern const struct sja1105_table_ops sja1105p_table_ops[BLK_IDX_MAX];
454 extern const struct sja1105_table_ops sja1105q_table_ops[BLK_IDX_MAX];
455 extern const struct sja1105_table_ops sja1105r_table_ops[BLK_IDX_MAX];
456 extern const struct sja1105_table_ops sja1105s_table_ops[BLK_IDX_MAX];
457 extern const struct sja1105_table_ops sja1110_table_ops[BLK_IDX_MAX];
458
459 size_t sja1105_table_header_packing(void *buf, void *hdr, enum packing_op op);
460 void
461 sja1105_table_header_pack_with_crc(void *buf, struct sja1105_table_header *hdr);
462 size_t
463 sja1105_static_config_get_length(const struct sja1105_static_config *config);
464
465 typedef enum {
466         SJA1105_CONFIG_OK = 0,
467         SJA1105_TTETHERNET_NOT_SUPPORTED,
468         SJA1105_INCORRECT_TTETHERNET_CONFIGURATION,
469         SJA1105_INCORRECT_VIRTUAL_LINK_CONFIGURATION,
470         SJA1105_MISSING_L2_POLICING_TABLE,
471         SJA1105_MISSING_L2_FORWARDING_TABLE,
472         SJA1105_MISSING_L2_FORWARDING_PARAMS_TABLE,
473         SJA1105_MISSING_GENERAL_PARAMS_TABLE,
474         SJA1105_MISSING_VLAN_TABLE,
475         SJA1105_MISSING_XMII_TABLE,
476         SJA1105_MISSING_MAC_TABLE,
477         SJA1105_OVERCOMMITTED_FRAME_MEMORY,
478 } sja1105_config_valid_t;
479
480 extern const char *sja1105_static_config_error_msg[];
481
482 sja1105_config_valid_t
483 sja1105_static_config_check_valid(const struct sja1105_static_config *config,
484                                   int max_mem);
485 void
486 sja1105_static_config_pack(void *buf, struct sja1105_static_config *config);
487 int sja1105_static_config_init(struct sja1105_static_config *config,
488                                const struct sja1105_table_ops *static_ops,
489                                u64 device_id);
490 void sja1105_static_config_free(struct sja1105_static_config *config);
491
492 int sja1105_table_delete_entry(struct sja1105_table *table, int i);
493 int sja1105_table_resize(struct sja1105_table *table, size_t new_count);
494
495 u32 sja1105_crc32(const void *buf, size_t len);
496
497 void sja1105_pack(void *buf, const u64 *val, int start, int end, size_t len);
498 void sja1105_unpack(const void *buf, u64 *val, int start, int end, size_t len);
499 void sja1105_packing(void *buf, u64 *val, int start, int end,
500                      size_t len, enum packing_op op);
501
502 /* Common implementations for the static and dynamic configs */
503 size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
504                                                 enum packing_op op);
505 size_t sja1110_general_params_entry_packing(void *buf, void *entry_ptr,
506                                             enum packing_op op);
507 size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
508                                                   enum packing_op op);
509 size_t sja1110_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
510                                               enum packing_op op);
511 size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
512                                            enum packing_op op);
513 size_t sja1110_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
514                                            enum packing_op op);
515 size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
516                                            enum packing_op op);
517 size_t sja1105et_l2_lookup_entry_packing(void *buf, void *entry_ptr,
518                                          enum packing_op op);
519 size_t sja1110_l2_lookup_entry_packing(void *buf, void *entry_ptr,
520                                        enum packing_op op);
521 size_t sja1105_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
522                                          enum packing_op op);
523 size_t sja1110_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
524                                          enum packing_op op);
525 size_t sja1105_retagging_entry_packing(void *buf, void *entry_ptr,
526                                        enum packing_op op);
527 size_t sja1110_retagging_entry_packing(void *buf, void *entry_ptr,
528                                        enum packing_op op);
529 size_t sja1105pqrs_mac_config_entry_packing(void *buf, void *entry_ptr,
530                                             enum packing_op op);
531 size_t sja1110_mac_config_entry_packing(void *buf, void *entry_ptr,
532                                         enum packing_op op);
533 size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
534                                             enum packing_op op);
535 size_t sja1105_vl_lookup_entry_packing(void *buf, void *entry_ptr,
536                                        enum packing_op op);
537 size_t sja1110_vl_lookup_entry_packing(void *buf, void *entry_ptr,
538                                        enum packing_op op);
539 size_t sja1110_vl_policing_entry_packing(void *buf, void *entry_ptr,
540                                          enum packing_op op);
541 size_t sja1110_xmii_params_entry_packing(void *buf, void *entry_ptr,
542                                          enum packing_op op);
543 size_t sja1110_l2_policing_entry_packing(void *buf, void *entry_ptr,
544                                          enum packing_op op);
545 size_t sja1110_l2_forwarding_params_entry_packing(void *buf, void *entry_ptr,
546                                                   enum packing_op op);
547
548 #endif