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 4 |
18 | #define SJA1105_SIZE_SPI_MSG_MAXLEN (64 * 4) |
19 | #define SJA1105_SIZE_DEVICE_ID 4 |
20 | #define 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 ; |
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 { |
428 | u64 ; |
429 | u64 ; |
430 | u64 ; |
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 (void *buf, void *hdr, enum packing_op op); |
460 | void |
461 | (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 |
549 | |