Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: BSD-3-Clause */
0002 /* Copyright 2016-2018 NXP
0003  * Copyright (c) 2018-2019, Vladimir Oltean <olteanv@gmail.com>
0004  */
0005 #ifndef _SJA1105_STATIC_CONFIG_H
0006 #define _SJA1105_STATIC_CONFIG_H
0007 
0008 #include <linux/packing.h>
0009 #include <linux/types.h>
0010 #include <asm/types.h>
0011 
0012 #define SJA1105_NUM_PORTS               5
0013 #define SJA1110_NUM_PORTS               11
0014 #define SJA1105_MAX_NUM_PORTS               SJA1110_NUM_PORTS
0015 #define SJA1105_NUM_TC                  8
0016 
0017 #define SJA1105_SIZE_SPI_MSG_HEADER         4
0018 #define SJA1105_SIZE_SPI_MSG_MAXLEN         (64 * 4)
0019 #define SJA1105_SIZE_DEVICE_ID              4
0020 #define SJA1105_SIZE_TABLE_HEADER           12
0021 #define SJA1105_SIZE_SCHEDULE_ENTRY         8
0022 #define SJA1110_SIZE_SCHEDULE_ENTRY         12
0023 #define SJA1105_SIZE_SCHEDULE_ENTRY_POINTS_ENTRY    4
0024 #define SJA1110_SIZE_SCHEDULE_ENTRY_POINTS_ENTRY    8
0025 #define SJA1105_SIZE_VL_LOOKUP_ENTRY            12
0026 #define SJA1105_SIZE_VL_POLICING_ENTRY          8
0027 #define SJA1105_SIZE_VL_FORWARDING_ENTRY        4
0028 #define SJA1105_SIZE_L2_POLICING_ENTRY          8
0029 #define SJA1105_SIZE_VLAN_LOOKUP_ENTRY          8
0030 #define SJA1110_SIZE_VLAN_LOOKUP_ENTRY          12
0031 #define SJA1105_SIZE_L2_FORWARDING_ENTRY        8
0032 #define SJA1105_SIZE_L2_FORWARDING_PARAMS_ENTRY     12
0033 #define SJA1105_SIZE_RETAGGING_ENTRY            8
0034 #define SJA1105_SIZE_XMII_PARAMS_ENTRY          4
0035 #define SJA1110_SIZE_XMII_PARAMS_ENTRY          8
0036 #define SJA1105_SIZE_SCHEDULE_PARAMS_ENTRY      12
0037 #define SJA1105_SIZE_SCHEDULE_ENTRY_POINTS_PARAMS_ENTRY 4
0038 #define SJA1105_SIZE_VL_FORWARDING_PARAMS_ENTRY         12
0039 #define SJA1105ET_SIZE_L2_LOOKUP_ENTRY          12
0040 #define SJA1105ET_SIZE_MAC_CONFIG_ENTRY         28
0041 #define SJA1105ET_SIZE_L2_LOOKUP_PARAMS_ENTRY       4
0042 #define SJA1105ET_SIZE_GENERAL_PARAMS_ENTRY     40
0043 #define SJA1105ET_SIZE_AVB_PARAMS_ENTRY         12
0044 #define SJA1105ET_SIZE_CBS_ENTRY            16
0045 #define SJA1105PQRS_SIZE_L2_LOOKUP_ENTRY        20
0046 #define SJA1110_SIZE_L2_LOOKUP_ENTRY            24
0047 #define SJA1105PQRS_SIZE_MAC_CONFIG_ENTRY       32
0048 #define SJA1105PQRS_SIZE_L2_LOOKUP_PARAMS_ENTRY     16
0049 #define SJA1110_SIZE_L2_LOOKUP_PARAMS_ENTRY     28
0050 #define SJA1105PQRS_SIZE_GENERAL_PARAMS_ENTRY       44
0051 #define SJA1110_SIZE_GENERAL_PARAMS_ENTRY       56
0052 #define SJA1105PQRS_SIZE_AVB_PARAMS_ENTRY       16
0053 #define SJA1105PQRS_SIZE_CBS_ENTRY          20
0054 #define SJA1110_SIZE_PCP_REMAPPING_ENTRY        4
0055 
0056 /* UM10944.pdf Page 11, Table 2. Configuration Blocks */
0057 enum {
0058     BLKID_SCHEDULE                  = 0x00,
0059     BLKID_SCHEDULE_ENTRY_POINTS         = 0x01,
0060     BLKID_VL_LOOKUP                 = 0x02,
0061     BLKID_VL_POLICING               = 0x03,
0062     BLKID_VL_FORWARDING             = 0x04,
0063     BLKID_L2_LOOKUP                 = 0x05,
0064     BLKID_L2_POLICING               = 0x06,
0065     BLKID_VLAN_LOOKUP               = 0x07,
0066     BLKID_L2_FORWARDING             = 0x08,
0067     BLKID_MAC_CONFIG                = 0x09,
0068     BLKID_SCHEDULE_PARAMS               = 0x0A,
0069     BLKID_SCHEDULE_ENTRY_POINTS_PARAMS      = 0x0B,
0070     BLKID_VL_FORWARDING_PARAMS          = 0x0C,
0071     BLKID_L2_LOOKUP_PARAMS              = 0x0D,
0072     BLKID_L2_FORWARDING_PARAMS          = 0x0E,
0073     BLKID_AVB_PARAMS                = 0x10,
0074     BLKID_GENERAL_PARAMS                = 0x11,
0075     BLKID_RETAGGING                 = 0x12,
0076     BLKID_CBS                   = 0x13,
0077     BLKID_PCP_REMAPPING             = 0x1C,
0078     BLKID_XMII_PARAMS               = 0x4E,
0079 };
0080 
0081 enum sja1105_blk_idx {
0082     BLK_IDX_SCHEDULE = 0,
0083     BLK_IDX_SCHEDULE_ENTRY_POINTS,
0084     BLK_IDX_VL_LOOKUP,
0085     BLK_IDX_VL_POLICING,
0086     BLK_IDX_VL_FORWARDING,
0087     BLK_IDX_L2_LOOKUP,
0088     BLK_IDX_L2_POLICING,
0089     BLK_IDX_VLAN_LOOKUP,
0090     BLK_IDX_L2_FORWARDING,
0091     BLK_IDX_MAC_CONFIG,
0092     BLK_IDX_SCHEDULE_PARAMS,
0093     BLK_IDX_SCHEDULE_ENTRY_POINTS_PARAMS,
0094     BLK_IDX_VL_FORWARDING_PARAMS,
0095     BLK_IDX_L2_LOOKUP_PARAMS,
0096     BLK_IDX_L2_FORWARDING_PARAMS,
0097     BLK_IDX_AVB_PARAMS,
0098     BLK_IDX_GENERAL_PARAMS,
0099     BLK_IDX_RETAGGING,
0100     BLK_IDX_CBS,
0101     BLK_IDX_XMII_PARAMS,
0102     BLK_IDX_PCP_REMAPPING,
0103     BLK_IDX_MAX,
0104     /* Fake block indices that are only valid for dynamic access */
0105     BLK_IDX_MGMT_ROUTE,
0106     BLK_IDX_MAX_DYN,
0107     BLK_IDX_INVAL = -1,
0108 };
0109 
0110 #define SJA1105_MAX_SCHEDULE_COUNT          1024
0111 #define SJA1110_MAX_SCHEDULE_COUNT          4096
0112 #define SJA1105_MAX_SCHEDULE_ENTRY_POINTS_COUNT     2048
0113 #define SJA1105_MAX_VL_LOOKUP_COUNT         1024
0114 #define SJA1110_MAX_VL_LOOKUP_COUNT         4096
0115 #define SJA1105_MAX_VL_POLICING_COUNT           1024
0116 #define SJA1110_MAX_VL_POLICING_COUNT           4096
0117 #define SJA1105_MAX_VL_FORWARDING_COUNT         1024
0118 #define SJA1110_MAX_VL_FORWARDING_COUNT         4096
0119 #define SJA1105_MAX_L2_LOOKUP_COUNT         1024
0120 #define SJA1105_MAX_L2_POLICING_COUNT           45
0121 #define SJA1110_MAX_L2_POLICING_COUNT           110
0122 #define SJA1105_MAX_VLAN_LOOKUP_COUNT           4096
0123 #define SJA1105_MAX_L2_FORWARDING_COUNT         13
0124 #define SJA1110_MAX_L2_FORWARDING_COUNT         19
0125 #define SJA1105_MAX_MAC_CONFIG_COUNT            5
0126 #define SJA1110_MAX_MAC_CONFIG_COUNT            11
0127 #define SJA1105_MAX_SCHEDULE_PARAMS_COUNT       1
0128 #define SJA1105_MAX_SCHEDULE_ENTRY_POINTS_PARAMS_COUNT  1
0129 #define SJA1105_MAX_VL_FORWARDING_PARAMS_COUNT      1
0130 #define SJA1105_MAX_L2_LOOKUP_PARAMS_COUNT      1
0131 #define SJA1105_MAX_L2_FORWARDING_PARAMS_COUNT      1
0132 #define SJA1105_MAX_GENERAL_PARAMS_COUNT        1
0133 #define SJA1105_MAX_RETAGGING_COUNT         32
0134 #define SJA1105_MAX_XMII_PARAMS_COUNT           1
0135 #define SJA1105_MAX_AVB_PARAMS_COUNT            1
0136 #define SJA1105ET_MAX_CBS_COUNT             10
0137 #define SJA1105PQRS_MAX_CBS_COUNT           16
0138 #define SJA1110_MAX_CBS_COUNT               80
0139 #define SJA1110_MAX_PCP_REMAPPING_COUNT         11
0140 
0141 #define SJA1105_MAX_FRAME_MEMORY            929
0142 #define SJA1110_MAX_FRAME_MEMORY            1820
0143 #define SJA1105_FRAME_MEMORY_RETAGGING_OVERHEAD     19
0144 #define SJA1105_VL_FRAME_MEMORY             100
0145 
0146 #define SJA1105E_DEVICE_ID              0x9C00000Cull
0147 #define SJA1105T_DEVICE_ID              0x9E00030Eull
0148 #define SJA1105PR_DEVICE_ID             0xAF00030Eull
0149 #define SJA1105QS_DEVICE_ID             0xAE00030Eull
0150 #define SJA1110_DEVICE_ID               0xB700030Full
0151 
0152 #define SJA1105ET_PART_NO               0x9A83
0153 #define SJA1105P_PART_NO                0x9A84
0154 #define SJA1105Q_PART_NO                0x9A85
0155 #define SJA1105R_PART_NO                0x9A86
0156 #define SJA1105S_PART_NO                0x9A87
0157 #define SJA1110A_PART_NO                0x1110
0158 #define SJA1110B_PART_NO                0x1111
0159 #define SJA1110C_PART_NO                0x1112
0160 #define SJA1110D_PART_NO                0x1113
0161 
0162 #define SJA1110_ACU         0x1c4400
0163 #define SJA1110_RGU         0x1c6000
0164 #define SJA1110_CGU         0x1c6400
0165 
0166 #define SJA1110_SPI_ADDR(x)     ((x) / 4)
0167 #define SJA1110_ACU_ADDR(x)     (SJA1110_ACU + SJA1110_SPI_ADDR(x))
0168 #define SJA1110_CGU_ADDR(x)     (SJA1110_CGU + SJA1110_SPI_ADDR(x))
0169 #define SJA1110_RGU_ADDR(x)     (SJA1110_RGU + SJA1110_SPI_ADDR(x))
0170 
0171 #define SJA1105_RSV_ADDR        0xffffffffffffffffull
0172 
0173 struct sja1105_schedule_entry {
0174     u64 winstindex;
0175     u64 winend;
0176     u64 winst;
0177     u64 destports;
0178     u64 setvalid;
0179     u64 txen;
0180     u64 resmedia_en;
0181     u64 resmedia;
0182     u64 vlindex;
0183     u64 delta;
0184 };
0185 
0186 struct sja1105_schedule_params_entry {
0187     u64 subscheind[8];
0188 };
0189 
0190 struct sja1105_general_params_entry {
0191     u64 vllupformat;
0192     u64 mirr_ptacu;
0193     u64 switchid;
0194     u64 hostprio;
0195     u64 mac_fltres1;
0196     u64 mac_fltres0;
0197     u64 mac_flt1;
0198     u64 mac_flt0;
0199     u64 incl_srcpt1;
0200     u64 incl_srcpt0;
0201     u64 send_meta1;
0202     u64 send_meta0;
0203     u64 casc_port;
0204     u64 host_port;
0205     u64 mirr_port;
0206     u64 vlmarker;
0207     u64 vlmask;
0208     u64 tpid;
0209     u64 ignore2stf;
0210     u64 tpid2;
0211     /* P/Q/R/S only */
0212     u64 queue_ts;
0213     u64 egrmirrvid;
0214     u64 egrmirrpcp;
0215     u64 egrmirrdei;
0216     u64 replay_port;
0217     /* SJA1110 only */
0218     u64 tte_en;
0219     u64 tdmaconfigidx;
0220     u64 header_type;
0221 };
0222 
0223 struct sja1105_schedule_entry_points_entry {
0224     u64 subschindx;
0225     u64 delta;
0226     u64 address;
0227 };
0228 
0229 struct sja1105_schedule_entry_points_params_entry {
0230     u64 clksrc;
0231     u64 actsubsch;
0232 };
0233 
0234 struct sja1105_vlan_lookup_entry {
0235     u64 ving_mirr;
0236     u64 vegr_mirr;
0237     u64 vmemb_port;
0238     u64 vlan_bc;
0239     u64 tag_port;
0240     u64 vlanid;
0241     u64 type_entry; /* SJA1110 only */
0242 };
0243 
0244 struct sja1105_l2_lookup_entry {
0245     u64 vlanid;
0246     u64 macaddr;
0247     u64 destports;
0248     u64 enfport;
0249     u64 index;
0250     /* P/Q/R/S only */
0251     u64 mask_iotag;
0252     u64 mask_vlanid;
0253     u64 mask_macaddr;
0254     u64 mask_srcport;
0255     u64 iotag;
0256     u64 srcport;
0257     u64 lockeds;
0258     union {
0259         /* LOCKEDS=1: Static FDB entries */
0260         struct {
0261             /* TSREG is deprecated in SJA1110, TRAP is supported only
0262              * in SJA1110.
0263              */
0264             u64 trap;
0265             u64 tsreg;
0266             u64 mirrvlan;
0267             u64 takets;
0268             u64 mirr;
0269             u64 retag;
0270         };
0271         /* LOCKEDS=0: Dynamically learned FDB entries */
0272         struct {
0273             u64 touched;
0274             u64 age;
0275         };
0276     };
0277 };
0278 
0279 struct sja1105_l2_lookup_params_entry {
0280     u64 maxaddrp[SJA1105_MAX_NUM_PORTS]; /* P/Q/R/S only */
0281     u64 start_dynspc;    /* P/Q/R/S only */
0282     u64 drpnolearn;      /* P/Q/R/S only */
0283     u64 use_static;      /* P/Q/R/S only */
0284     u64 owr_dyn;         /* P/Q/R/S only */
0285     u64 learn_once;      /* P/Q/R/S only */
0286     u64 maxage;          /* Shared */
0287     u64 dyn_tbsz;        /* E/T only */
0288     u64 poly;            /* E/T only */
0289     u64 shared_learn;    /* Shared */
0290     u64 no_enf_hostprt;  /* Shared */
0291     u64 no_mgmt_learn;   /* Shared */
0292 };
0293 
0294 struct sja1105_l2_forwarding_entry {
0295     u64 bc_domain;
0296     u64 reach_port;
0297     u64 fl_domain;
0298     /* This is actually max(SJA1105_NUM_TC, SJA1105_MAX_NUM_PORTS) */
0299     u64 vlan_pmap[SJA1105_MAX_NUM_PORTS];
0300     bool type_egrpcp2outputq;
0301 };
0302 
0303 struct sja1105_l2_forwarding_params_entry {
0304     u64 max_dynp;
0305     u64 part_spc[8];
0306 };
0307 
0308 struct sja1105_l2_policing_entry {
0309     u64 sharindx;
0310     u64 smax;
0311     u64 rate;
0312     u64 maxlen;
0313     u64 partition;
0314 };
0315 
0316 struct sja1105_avb_params_entry {
0317     u64 cas_master;
0318     u64 destmeta;
0319     u64 srcmeta;
0320 };
0321 
0322 struct sja1105_mac_config_entry {
0323     u64 top[8];
0324     u64 base[8];
0325     u64 enabled[8];
0326     u64 ifg;
0327     u64 speed;
0328     u64 tp_delin;
0329     u64 tp_delout;
0330     u64 maxage;
0331     u64 vlanprio;
0332     u64 vlanid;
0333     u64 ing_mirr;
0334     u64 egr_mirr;
0335     u64 drpnona664;
0336     u64 drpdtag;
0337     u64 drpuntag;
0338     u64 retag;
0339     u64 dyn_learn;
0340     u64 egress;
0341     u64 ingress;
0342 };
0343 
0344 struct sja1105_retagging_entry {
0345     u64 egr_port;
0346     u64 ing_port;
0347     u64 vlan_ing;
0348     u64 vlan_egr;
0349     u64 do_not_learn;
0350     u64 use_dest_ports;
0351     u64 destports;
0352 };
0353 
0354 struct sja1105_cbs_entry {
0355     u64 port; /* Not used for SJA1110 */
0356     u64 prio; /* Not used for SJA1110 */
0357     u64 credit_hi;
0358     u64 credit_lo;
0359     u64 send_slope;
0360     u64 idle_slope;
0361 };
0362 
0363 struct sja1105_xmii_params_entry {
0364     u64 phy_mac[SJA1105_MAX_NUM_PORTS];
0365     u64 xmii_mode[SJA1105_MAX_NUM_PORTS];
0366     /* The SJA1110 insists being a snowflake, and requires SGMII,
0367      * 2500base-x and internal MII ports connected to the 100base-TX PHY to
0368      * set this bit. We set it unconditionally from the high-level logic,
0369      * and only sja1110_xmii_params_entry_packing writes it to the static
0370      * config. I have no better name for it than "special".
0371      */
0372     u64 special[SJA1105_MAX_NUM_PORTS];
0373 };
0374 
0375 struct sja1110_pcp_remapping_entry {
0376     u64 egrpcp[SJA1105_NUM_TC];
0377 };
0378 
0379 enum {
0380     SJA1105_VL_FORMAT_PSFP      = 0,
0381     SJA1105_VL_FORMAT_ARINC664  = 1,
0382 };
0383 
0384 struct sja1105_vl_lookup_entry {
0385     u64 format;
0386     u64 port;
0387     union {
0388         /* SJA1105_VL_FORMAT_PSFP */
0389         struct {
0390             u64 destports;
0391             u64 iscritical;
0392             u64 macaddr;
0393             u64 vlanid;
0394             u64 vlanprior;
0395         };
0396         /* SJA1105_VL_FORMAT_ARINC664 */
0397         struct {
0398             u64 egrmirr;
0399             u64 ingrmirr;
0400             u64 vlid;
0401         };
0402     };
0403     /* Not part of hardware structure */
0404     unsigned long flow_cookie;
0405 };
0406 
0407 struct sja1105_vl_policing_entry {
0408     u64 type;
0409     u64 maxlen;
0410     u64 sharindx;
0411     u64 bag;
0412     u64 jitter;
0413 };
0414 
0415 struct sja1105_vl_forwarding_entry {
0416     u64 type;
0417     u64 priority;
0418     u64 partition;
0419     u64 destports;
0420 };
0421 
0422 struct sja1105_vl_forwarding_params_entry {
0423     u64 partspc[8];
0424     u64 debugen;
0425 };
0426 
0427 struct sja1105_table_header {
0428     u64 block_id;
0429     u64 len;
0430     u64 crc;
0431 };
0432 
0433 struct sja1105_table_ops {
0434     size_t (*packing)(void *buf, void *entry_ptr, enum packing_op op);
0435     size_t unpacked_entry_size;
0436     size_t packed_entry_size;
0437     size_t max_entry_count;
0438 };
0439 
0440 struct sja1105_table {
0441     const struct sja1105_table_ops *ops;
0442     size_t entry_count;
0443     void *entries;
0444 };
0445 
0446 struct sja1105_static_config {
0447     u64 device_id;
0448     struct sja1105_table tables[BLK_IDX_MAX];
0449 };
0450 
0451 extern const struct sja1105_table_ops sja1105e_table_ops[BLK_IDX_MAX];
0452 extern const struct sja1105_table_ops sja1105t_table_ops[BLK_IDX_MAX];
0453 extern const struct sja1105_table_ops sja1105p_table_ops[BLK_IDX_MAX];
0454 extern const struct sja1105_table_ops sja1105q_table_ops[BLK_IDX_MAX];
0455 extern const struct sja1105_table_ops sja1105r_table_ops[BLK_IDX_MAX];
0456 extern const struct sja1105_table_ops sja1105s_table_ops[BLK_IDX_MAX];
0457 extern const struct sja1105_table_ops sja1110_table_ops[BLK_IDX_MAX];
0458 
0459 size_t sja1105_table_header_packing(void *buf, void *hdr, enum packing_op op);
0460 void
0461 sja1105_table_header_pack_with_crc(void *buf, struct sja1105_table_header *hdr);
0462 size_t
0463 sja1105_static_config_get_length(const struct sja1105_static_config *config);
0464 
0465 typedef enum {
0466     SJA1105_CONFIG_OK = 0,
0467     SJA1105_TTETHERNET_NOT_SUPPORTED,
0468     SJA1105_INCORRECT_TTETHERNET_CONFIGURATION,
0469     SJA1105_INCORRECT_VIRTUAL_LINK_CONFIGURATION,
0470     SJA1105_MISSING_L2_POLICING_TABLE,
0471     SJA1105_MISSING_L2_FORWARDING_TABLE,
0472     SJA1105_MISSING_L2_FORWARDING_PARAMS_TABLE,
0473     SJA1105_MISSING_GENERAL_PARAMS_TABLE,
0474     SJA1105_MISSING_VLAN_TABLE,
0475     SJA1105_MISSING_XMII_TABLE,
0476     SJA1105_MISSING_MAC_TABLE,
0477     SJA1105_OVERCOMMITTED_FRAME_MEMORY,
0478 } sja1105_config_valid_t;
0479 
0480 extern const char *sja1105_static_config_error_msg[];
0481 
0482 sja1105_config_valid_t
0483 sja1105_static_config_check_valid(const struct sja1105_static_config *config,
0484                   int max_mem);
0485 void
0486 sja1105_static_config_pack(void *buf, struct sja1105_static_config *config);
0487 int sja1105_static_config_init(struct sja1105_static_config *config,
0488                    const struct sja1105_table_ops *static_ops,
0489                    u64 device_id);
0490 void sja1105_static_config_free(struct sja1105_static_config *config);
0491 
0492 int sja1105_table_delete_entry(struct sja1105_table *table, int i);
0493 int sja1105_table_resize(struct sja1105_table *table, size_t new_count);
0494 
0495 u32 sja1105_crc32(const void *buf, size_t len);
0496 
0497 void sja1105_pack(void *buf, const u64 *val, int start, int end, size_t len);
0498 void sja1105_unpack(const void *buf, u64 *val, int start, int end, size_t len);
0499 void sja1105_packing(void *buf, u64 *val, int start, int end,
0500              size_t len, enum packing_op op);
0501 
0502 /* Common implementations for the static and dynamic configs */
0503 size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
0504                         enum packing_op op);
0505 size_t sja1110_general_params_entry_packing(void *buf, void *entry_ptr,
0506                         enum packing_op op);
0507 size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
0508                           enum packing_op op);
0509 size_t sja1110_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
0510                           enum packing_op op);
0511 size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
0512                        enum packing_op op);
0513 size_t sja1110_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
0514                        enum packing_op op);
0515 size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
0516                        enum packing_op op);
0517 size_t sja1105et_l2_lookup_entry_packing(void *buf, void *entry_ptr,
0518                      enum packing_op op);
0519 size_t sja1110_l2_lookup_entry_packing(void *buf, void *entry_ptr,
0520                        enum packing_op op);
0521 size_t sja1105_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
0522                      enum packing_op op);
0523 size_t sja1110_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
0524                      enum packing_op op);
0525 size_t sja1105_retagging_entry_packing(void *buf, void *entry_ptr,
0526                        enum packing_op op);
0527 size_t sja1110_retagging_entry_packing(void *buf, void *entry_ptr,
0528                        enum packing_op op);
0529 size_t sja1105pqrs_mac_config_entry_packing(void *buf, void *entry_ptr,
0530                         enum packing_op op);
0531 size_t sja1110_mac_config_entry_packing(void *buf, void *entry_ptr,
0532                     enum packing_op op);
0533 size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
0534                         enum packing_op op);
0535 size_t sja1105_vl_lookup_entry_packing(void *buf, void *entry_ptr,
0536                        enum packing_op op);
0537 size_t sja1110_vl_lookup_entry_packing(void *buf, void *entry_ptr,
0538                        enum packing_op op);
0539 size_t sja1110_vl_policing_entry_packing(void *buf, void *entry_ptr,
0540                      enum packing_op op);
0541 size_t sja1110_xmii_params_entry_packing(void *buf, void *entry_ptr,
0542                      enum packing_op op);
0543 size_t sja1110_l2_policing_entry_packing(void *buf, void *entry_ptr,
0544                      enum packing_op op);
0545 size_t sja1110_l2_forwarding_params_entry_packing(void *buf, void *entry_ptr,
0546                           enum packing_op op);
0547 
0548 #endif