cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sja1105_static_config.h (15470B)


      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 */
     57enum {
     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
     81enum 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
    173struct 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
    186struct sja1105_schedule_params_entry {
    187	u64 subscheind[8];
    188};
    189
    190struct 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
    223struct sja1105_schedule_entry_points_entry {
    224	u64 subschindx;
    225	u64 delta;
    226	u64 address;
    227};
    228
    229struct sja1105_schedule_entry_points_params_entry {
    230	u64 clksrc;
    231	u64 actsubsch;
    232};
    233
    234struct 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
    244struct 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
    279struct 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
    294struct 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
    303struct sja1105_l2_forwarding_params_entry {
    304	u64 max_dynp;
    305	u64 part_spc[8];
    306};
    307
    308struct sja1105_l2_policing_entry {
    309	u64 sharindx;
    310	u64 smax;
    311	u64 rate;
    312	u64 maxlen;
    313	u64 partition;
    314};
    315
    316struct sja1105_avb_params_entry {
    317	u64 cas_master;
    318	u64 destmeta;
    319	u64 srcmeta;
    320};
    321
    322struct 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
    344struct 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
    354struct 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
    363struct 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
    375struct sja1110_pcp_remapping_entry {
    376	u64 egrpcp[SJA1105_NUM_TC];
    377};
    378
    379enum {
    380	SJA1105_VL_FORMAT_PSFP		= 0,
    381	SJA1105_VL_FORMAT_ARINC664	= 1,
    382};
    383
    384struct 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
    407struct sja1105_vl_policing_entry {
    408	u64 type;
    409	u64 maxlen;
    410	u64 sharindx;
    411	u64 bag;
    412	u64 jitter;
    413};
    414
    415struct sja1105_vl_forwarding_entry {
    416	u64 type;
    417	u64 priority;
    418	u64 partition;
    419	u64 destports;
    420};
    421
    422struct sja1105_vl_forwarding_params_entry {
    423	u64 partspc[8];
    424	u64 debugen;
    425};
    426
    427struct sja1105_table_header {
    428	u64 block_id;
    429	u64 len;
    430	u64 crc;
    431};
    432
    433struct 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
    440struct sja1105_table {
    441	const struct sja1105_table_ops *ops;
    442	size_t entry_count;
    443	void *entries;
    444};
    445
    446struct sja1105_static_config {
    447	u64 device_id;
    448	struct sja1105_table tables[BLK_IDX_MAX];
    449};
    450
    451extern const struct sja1105_table_ops sja1105e_table_ops[BLK_IDX_MAX];
    452extern const struct sja1105_table_ops sja1105t_table_ops[BLK_IDX_MAX];
    453extern const struct sja1105_table_ops sja1105p_table_ops[BLK_IDX_MAX];
    454extern const struct sja1105_table_ops sja1105q_table_ops[BLK_IDX_MAX];
    455extern const struct sja1105_table_ops sja1105r_table_ops[BLK_IDX_MAX];
    456extern const struct sja1105_table_ops sja1105s_table_ops[BLK_IDX_MAX];
    457extern const struct sja1105_table_ops sja1110_table_ops[BLK_IDX_MAX];
    458
    459size_t sja1105_table_header_packing(void *buf, void *hdr, enum packing_op op);
    460void
    461sja1105_table_header_pack_with_crc(void *buf, struct sja1105_table_header *hdr);
    462size_t
    463sja1105_static_config_get_length(const struct sja1105_static_config *config);
    464
    465typedef 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
    480extern const char *sja1105_static_config_error_msg[];
    481
    482sja1105_config_valid_t
    483sja1105_static_config_check_valid(const struct sja1105_static_config *config,
    484				  int max_mem);
    485void
    486sja1105_static_config_pack(void *buf, struct sja1105_static_config *config);
    487int sja1105_static_config_init(struct sja1105_static_config *config,
    488			       const struct sja1105_table_ops *static_ops,
    489			       u64 device_id);
    490void sja1105_static_config_free(struct sja1105_static_config *config);
    491
    492int sja1105_table_delete_entry(struct sja1105_table *table, int i);
    493int sja1105_table_resize(struct sja1105_table *table, size_t new_count);
    494
    495u32 sja1105_crc32(const void *buf, size_t len);
    496
    497void sja1105_pack(void *buf, const u64 *val, int start, int end, size_t len);
    498void sja1105_unpack(const void *buf, u64 *val, int start, int end, size_t len);
    499void 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 */
    503size_t sja1105pqrs_general_params_entry_packing(void *buf, void *entry_ptr,
    504						enum packing_op op);
    505size_t sja1110_general_params_entry_packing(void *buf, void *entry_ptr,
    506					    enum packing_op op);
    507size_t sja1105pqrs_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
    508						  enum packing_op op);
    509size_t sja1110_l2_lookup_params_entry_packing(void *buf, void *entry_ptr,
    510					      enum packing_op op);
    511size_t sja1105_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
    512					   enum packing_op op);
    513size_t sja1110_l2_forwarding_entry_packing(void *buf, void *entry_ptr,
    514					   enum packing_op op);
    515size_t sja1105pqrs_l2_lookup_entry_packing(void *buf, void *entry_ptr,
    516					   enum packing_op op);
    517size_t sja1105et_l2_lookup_entry_packing(void *buf, void *entry_ptr,
    518					 enum packing_op op);
    519size_t sja1110_l2_lookup_entry_packing(void *buf, void *entry_ptr,
    520				       enum packing_op op);
    521size_t sja1105_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
    522					 enum packing_op op);
    523size_t sja1110_vlan_lookup_entry_packing(void *buf, void *entry_ptr,
    524					 enum packing_op op);
    525size_t sja1105_retagging_entry_packing(void *buf, void *entry_ptr,
    526				       enum packing_op op);
    527size_t sja1110_retagging_entry_packing(void *buf, void *entry_ptr,
    528				       enum packing_op op);
    529size_t sja1105pqrs_mac_config_entry_packing(void *buf, void *entry_ptr,
    530					    enum packing_op op);
    531size_t sja1110_mac_config_entry_packing(void *buf, void *entry_ptr,
    532					enum packing_op op);
    533size_t sja1105pqrs_avb_params_entry_packing(void *buf, void *entry_ptr,
    534					    enum packing_op op);
    535size_t sja1105_vl_lookup_entry_packing(void *buf, void *entry_ptr,
    536				       enum packing_op op);
    537size_t sja1110_vl_lookup_entry_packing(void *buf, void *entry_ptr,
    538				       enum packing_op op);
    539size_t sja1110_vl_policing_entry_packing(void *buf, void *entry_ptr,
    540					 enum packing_op op);
    541size_t sja1110_xmii_params_entry_packing(void *buf, void *entry_ptr,
    542					 enum packing_op op);
    543size_t sja1110_l2_policing_entry_packing(void *buf, void *entry_ptr,
    544					 enum packing_op op);
    545size_t sja1110_l2_forwarding_params_entry_packing(void *buf, void *entry_ptr,
    546						  enum packing_op op);
    547
    548#endif