xref: /linux/drivers/net/dsa/sja1105/sja1105_static_config.h (revision e83332842a46c091992ad06145b5c1b65a08ab05)
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright (c) 2016-2018, NXP Semiconductors
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 };
221 
222 struct sja1105_schedule_entry_points_entry {
223 	u64 subschindx;
224 	u64 delta;
225 	u64 address;
226 };
227 
228 struct sja1105_schedule_entry_points_params_entry {
229 	u64 clksrc;
230 	u64 actsubsch;
231 };
232 
233 struct sja1105_vlan_lookup_entry {
234 	u64 ving_mirr;
235 	u64 vegr_mirr;
236 	u64 vmemb_port;
237 	u64 vlan_bc;
238 	u64 tag_port;
239 	u64 vlanid;
240 	u64 type_entry; /* SJA1110 only */
241 };
242 
243 struct sja1105_l2_lookup_entry {
244 	u64 vlanid;
245 	u64 macaddr;
246 	u64 destports;
247 	u64 enfport;
248 	u64 index;
249 	/* P/Q/R/S only */
250 	u64 mask_iotag;
251 	u64 mask_vlanid;
252 	u64 mask_macaddr;
253 	u64 mask_srcport;
254 	u64 iotag;
255 	u64 srcport;
256 	u64 lockeds;
257 	union {
258 		/* LOCKEDS=1: Static FDB entries */
259 		struct {
260 			/* TSREG is deprecated in SJA1110, TRAP is supported only
261 			 * in SJA1110.
262 			 */
263 			u64 trap;
264 			u64 tsreg;
265 			u64 mirrvlan;
266 			u64 takets;
267 			u64 mirr;
268 			u64 retag;
269 		};
270 		/* LOCKEDS=0: Dynamically learned FDB entries */
271 		struct {
272 			u64 touched;
273 			u64 age;
274 		};
275 	};
276 };
277 
278 struct sja1105_l2_lookup_params_entry {
279 	u64 maxaddrp[SJA1105_MAX_NUM_PORTS]; /* P/Q/R/S only */
280 	u64 start_dynspc;    /* P/Q/R/S only */
281 	u64 drpnolearn;      /* P/Q/R/S only */
282 	u64 use_static;      /* P/Q/R/S only */
283 	u64 owr_dyn;         /* P/Q/R/S only */
284 	u64 learn_once;      /* P/Q/R/S only */
285 	u64 maxage;          /* Shared */
286 	u64 dyn_tbsz;        /* E/T only */
287 	u64 poly;            /* E/T only */
288 	u64 shared_learn;    /* Shared */
289 	u64 no_enf_hostprt;  /* Shared */
290 	u64 no_mgmt_learn;   /* Shared */
291 };
292 
293 struct sja1105_l2_forwarding_entry {
294 	u64 bc_domain;
295 	u64 reach_port;
296 	u64 fl_domain;
297 	/* This is actually max(SJA1105_NUM_TC, SJA1105_MAX_NUM_PORTS) */
298 	u64 vlan_pmap[SJA1105_MAX_NUM_PORTS];
299 	bool type_egrpcp2outputq;
300 };
301 
302 struct sja1105_l2_forwarding_params_entry {
303 	u64 max_dynp;
304 	u64 part_spc[8];
305 };
306 
307 struct sja1105_l2_policing_entry {
308 	u64 sharindx;
309 	u64 smax;
310 	u64 rate;
311 	u64 maxlen;
312 	u64 partition;
313 };
314 
315 struct sja1105_avb_params_entry {
316 	u64 cas_master;
317 	u64 destmeta;
318 	u64 srcmeta;
319 };
320 
321 struct sja1105_mac_config_entry {
322 	u64 top[8];
323 	u64 base[8];
324 	u64 enabled[8];
325 	u64 ifg;
326 	u64 speed;
327 	u64 tp_delin;
328 	u64 tp_delout;
329 	u64 maxage;
330 	u64 vlanprio;
331 	u64 vlanid;
332 	u64 ing_mirr;
333 	u64 egr_mirr;
334 	u64 drpnona664;
335 	u64 drpdtag;
336 	u64 drpuntag;
337 	u64 retag;
338 	u64 dyn_learn;
339 	u64 egress;
340 	u64 ingress;
341 };
342 
343 struct sja1105_retagging_entry {
344 	u64 egr_port;
345 	u64 ing_port;
346 	u64 vlan_ing;
347 	u64 vlan_egr;
348 	u64 do_not_learn;
349 	u64 use_dest_ports;
350 	u64 destports;
351 };
352 
353 struct sja1105_cbs_entry {
354 	u64 port; /* Not used for SJA1110 */
355 	u64 prio; /* Not used for SJA1110 */
356 	u64 credit_hi;
357 	u64 credit_lo;
358 	u64 send_slope;
359 	u64 idle_slope;
360 };
361 
362 struct sja1105_xmii_params_entry {
363 	u64 phy_mac[SJA1105_MAX_NUM_PORTS];
364 	u64 xmii_mode[SJA1105_MAX_NUM_PORTS];
365 	/* The SJA1110 insists being a snowflake, and requires SGMII,
366 	 * 2500base-x and internal MII ports connected to the 100base-TX PHY to
367 	 * set this bit. We set it unconditionally from the high-level logic,
368 	 * and only sja1110_xmii_params_entry_packing writes it to the static
369 	 * config. I have no better name for it than "special".
370 	 */
371 	u64 special[SJA1105_MAX_NUM_PORTS];
372 };
373 
374 struct sja1110_pcp_remapping_entry {
375 	u64 egrpcp[SJA1105_NUM_TC];
376 };
377 
378 enum {
379 	SJA1105_VL_FORMAT_PSFP		= 0,
380 	SJA1105_VL_FORMAT_ARINC664	= 1,
381 };
382 
383 struct sja1105_vl_lookup_entry {
384 	u64 format;
385 	u64 port;
386 	union {
387 		/* SJA1105_VL_FORMAT_PSFP */
388 		struct {
389 			u64 destports;
390 			u64 iscritical;
391 			u64 macaddr;
392 			u64 vlanid;
393 			u64 vlanprior;
394 		};
395 		/* SJA1105_VL_FORMAT_ARINC664 */
396 		struct {
397 			u64 egrmirr;
398 			u64 ingrmirr;
399 			u64 vlid;
400 		};
401 	};
402 	/* Not part of hardware structure */
403 	unsigned long flow_cookie;
404 };
405 
406 struct sja1105_vl_policing_entry {
407 	u64 type;
408 	u64 maxlen;
409 	u64 sharindx;
410 	u64 bag;
411 	u64 jitter;
412 };
413 
414 struct sja1105_vl_forwarding_entry {
415 	u64 type;
416 	u64 priority;
417 	u64 partition;
418 	u64 destports;
419 };
420 
421 struct sja1105_vl_forwarding_params_entry {
422 	u64 partspc[8];
423 	u64 debugen;
424 };
425 
426 struct sja1105_table_header {
427 	u64 block_id;
428 	u64 len;
429 	u64 crc;
430 };
431 
432 struct sja1105_table_ops {
433 	size_t (*packing)(void *buf, void *entry_ptr, enum packing_op op);
434 	size_t unpacked_entry_size;
435 	size_t packed_entry_size;
436 	size_t max_entry_count;
437 };
438 
439 struct sja1105_table {
440 	const struct sja1105_table_ops *ops;
441 	size_t entry_count;
442 	void *entries;
443 };
444 
445 struct sja1105_static_config {
446 	u64 device_id;
447 	struct sja1105_table tables[BLK_IDX_MAX];
448 };
449 
450 extern const struct sja1105_table_ops sja1105e_table_ops[BLK_IDX_MAX];
451 extern const struct sja1105_table_ops sja1105t_table_ops[BLK_IDX_MAX];
452 extern const struct sja1105_table_ops sja1105p_table_ops[BLK_IDX_MAX];
453 extern const struct sja1105_table_ops sja1105q_table_ops[BLK_IDX_MAX];
454 extern const struct sja1105_table_ops sja1105r_table_ops[BLK_IDX_MAX];
455 extern const struct sja1105_table_ops sja1105s_table_ops[BLK_IDX_MAX];
456 extern const struct sja1105_table_ops sja1110_table_ops[BLK_IDX_MAX];
457 
458 size_t sja1105_table_header_packing(void *buf, void *hdr, enum packing_op op);
459 void
460 sja1105_table_header_pack_with_crc(void *buf, struct sja1105_table_header *hdr);
461 size_t
462 sja1105_static_config_get_length(const struct sja1105_static_config *config);
463 
464 typedef enum {
465 	SJA1105_CONFIG_OK = 0,
466 	SJA1105_TTETHERNET_NOT_SUPPORTED,
467 	SJA1105_INCORRECT_TTETHERNET_CONFIGURATION,
468 	SJA1105_INCORRECT_VIRTUAL_LINK_CONFIGURATION,
469 	SJA1105_MISSING_L2_POLICING_TABLE,
470 	SJA1105_MISSING_L2_FORWARDING_TABLE,
471 	SJA1105_MISSING_L2_FORWARDING_PARAMS_TABLE,
472 	SJA1105_MISSING_GENERAL_PARAMS_TABLE,
473 	SJA1105_MISSING_VLAN_TABLE,
474 	SJA1105_MISSING_XMII_TABLE,
475 	SJA1105_MISSING_MAC_TABLE,
476 	SJA1105_OVERCOMMITTED_FRAME_MEMORY,
477 } sja1105_config_valid_t;
478 
479 extern const char *sja1105_static_config_error_msg[];
480 
481 sja1105_config_valid_t
482 sja1105_static_config_check_valid(const struct sja1105_static_config *config,
483 				  int max_mem);
484 void
485 sja1105_static_config_pack(void *buf, struct sja1105_static_config *config);
486 int sja1105_static_config_init(struct sja1105_static_config *config,
487 			       const struct sja1105_table_ops *static_ops,
488 			       u64 device_id);
489 void sja1105_static_config_free(struct sja1105_static_config *config);
490 
491 int sja1105_table_delete_entry(struct sja1105_table *table, int i);
492 int sja1105_table_resize(struct sja1105_table *table, size_t new_count);
493 
494 u32 sja1105_crc32(const void *buf, size_t len);
495 
496 void sja1105_pack(void *buf, const u64 *val, int start, int end, size_t len);
497 void sja1105_unpack(const void *buf, u64 *val, int start, int end, size_t len);
498 void sja1105_packing(void *buf, u64 *val, int start, int end,
499 		     size_t len, enum packing_op op);
500 
501 /* Common implementations for the static and dynamic configs */
502 size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
503 						enum packing_op op);
504 size_t sja1110_general_params_entry_packing(void *buf, void *entry_ptr,
505 					    enum packing_op op);
506 size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
507 						  enum packing_op op);
508 size_t sja1110_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
509 					      enum packing_op op);
510 size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
511 					   enum packing_op op);
512 size_t sja1110_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
513 					   enum packing_op op);
514 size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
515 					   enum packing_op op);
516 size_t sja1105et_l2_lookup_entry_packing(void *buf, void *entry_ptr,
517 					 enum packing_op op);
518 size_t sja1110_l2_lookup_entry_packing(void *buf, void *entry_ptr,
519 				       enum packing_op op);
520 size_t sja1105_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
521 					 enum packing_op op);
522 size_t sja1110_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
523 					 enum packing_op op);
524 size_t sja1105_retagging_entry_packing(void *buf, void *entry_ptr,
525 				       enum packing_op op);
526 size_t sja1110_retagging_entry_packing(void *buf, void *entry_ptr,
527 				       enum packing_op op);
528 size_t sja1105pqrs_mac_config_entry_packing(void *buf, void *entry_ptr,
529 					    enum packing_op op);
530 size_t sja1110_mac_config_entry_packing(void *buf, void *entry_ptr,
531 					enum packing_op op);
532 size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
533 					    enum packing_op op);
534 size_t sja1105_vl_lookup_entry_packing(void *buf, void *entry_ptr,
535 				       enum packing_op op);
536 size_t sja1110_vl_lookup_entry_packing(void *buf, void *entry_ptr,
537 				       enum packing_op op);
538 size_t sja1110_vl_policing_entry_packing(void *buf, void *entry_ptr,
539 					 enum packing_op op);
540 size_t sja1110_xmii_params_entry_packing(void *buf, void *entry_ptr,
541 					 enum packing_op op);
542 size_t sja1110_l2_policing_entry_packing(void *buf, void *entry_ptr,
543 					 enum packing_op op);
544 size_t sja1110_l2_forwarding_params_entry_packing(void *buf, void *entry_ptr,
545 						  enum packing_op op);
546 
547 #endif
548