drivers/net/ethernet/microchip/vcap/vcap_ag_api.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/microchip/vcap/vcap_ag_api.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/microchip/vcap/vcap_ag_api.h
Extension
.h
Size
40126 bytes
Lines
907
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef __VCAP_AG_API__
#define __VCAP_AG_API__

enum vcap_type {
	VCAP_TYPE_ES0,
	VCAP_TYPE_ES2,
	VCAP_TYPE_IS0,
	VCAP_TYPE_IS1,
	VCAP_TYPE_IS2,
	VCAP_TYPE_MAX
};

/* Keyfieldset names with origin information */
enum vcap_keyfield_set {
	VCAP_KFS_NO_VALUE,          /* initial value */
	VCAP_KFS_5TUPLE_IP4,        /* lan966x is1 X2 */
	VCAP_KFS_5TUPLE_IP6,        /* lan966x is1 X4 */
	VCAP_KFS_7TUPLE,            /* lan966x is1 X4 */
	VCAP_KFS_ARP,               /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */
	VCAP_KFS_DBL_VID,           /* lan966x is1 X1 */
	VCAP_KFS_DMAC_VID,          /* lan966x is1 X1 */
	VCAP_KFS_ETAG,              /* sparx5 is0 X2 */
	VCAP_KFS_IP4_OTHER,         /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */
	VCAP_KFS_IP4_TCP_UDP,       /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */
	VCAP_KFS_IP4_VID,           /* sparx5 es2 X3 */
	VCAP_KFS_IP6_OTHER,         /* lan966x is2 X4 */
	VCAP_KFS_IP6_STD,           /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */
	VCAP_KFS_IP6_TCP_UDP,       /* lan966x is2 X4 */
	VCAP_KFS_IP6_VID,           /* sparx5 es2 X6 */
	VCAP_KFS_IP_7TUPLE,         /* sparx5 is2 X12, sparx5 es2 X12 */
	VCAP_KFS_ISDX,              /* sparx5 es0 X1 */
	VCAP_KFS_LL_FULL,           /* sparx5 is0 X6 */
	VCAP_KFS_MAC_ETYPE,         /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */
	VCAP_KFS_MAC_LLC,           /* lan966x is2 X2 */
	VCAP_KFS_MAC_SNAP,          /* lan966x is2 X2 */
	VCAP_KFS_NORMAL,            /* lan966x is1 X2 */
	VCAP_KFS_NORMAL_5TUPLE_IP4,  /* sparx5 is0 X6 */
	VCAP_KFS_NORMAL_7TUPLE,     /* sparx5 is0 X12 */
	VCAP_KFS_NORMAL_IP6,        /* lan966x is1 X4 */
	VCAP_KFS_OAM,               /* lan966x is2 X2 */
	VCAP_KFS_PURE_5TUPLE_IP4,   /* sparx5 is0 X3 */
	VCAP_KFS_RT,                /* lan966x is1 X1 */
	VCAP_KFS_SMAC_SIP4,         /* lan966x is2 X1 */
	VCAP_KFS_SMAC_SIP6,         /* lan966x is2 X2 */
	VCAP_KFS_VID,               /* lan966x es0 X1 */
};

/* List of keyfields with description
 *
 * Keys ending in _IS are booleans derived from frame data
 * Keys ending in _CLS are classified frame data
 *
 * VCAP_KF_8021BR_ECID_BASE: W12, sparx5: is0
 *   Used by 802.1BR Bridge Port Extension in an E-Tag
 * VCAP_KF_8021BR_ECID_EXT: W8, sparx5: is0
 *   Used by 802.1BR Bridge Port Extension in an E-Tag
 * VCAP_KF_8021BR_E_TAGGED: W1, sparx5: is0
 *   Set for frames containing an E-TAG (802.1BR Ethertype 893f)
 * VCAP_KF_8021BR_GRP: W2, sparx5: is0
 *   E-Tag group bits in 802.1BR Bridge Port Extension
 * VCAP_KF_8021BR_IGR_ECID_BASE: W12, sparx5: is0
 *   Used by 802.1BR Bridge Port Extension in an E-Tag
 * VCAP_KF_8021BR_IGR_ECID_EXT: W8, sparx5: is0
 *   Used by 802.1BR Bridge Port Extension in an E-Tag
 * VCAP_KF_8021CB_R_TAGGED_IS: W1, lan966x: is1
 *   Set if frame contains an RTAG: IEEE 802.1CB (FRER Redundancy tag, Ethertype
 *   0xf1c1)
 * VCAP_KF_8021Q_DEI0: W1, sparx5: is0, lan966x: is1
 *   First DEI in multiple vlan tags (outer tag or default port tag)
 * VCAP_KF_8021Q_DEI1: W1, sparx5: is0, lan966x: is1
 *   Second DEI in multiple vlan tags (inner tag)
 * VCAP_KF_8021Q_DEI2: W1, sparx5: is0
 *   Third DEI in multiple vlan tags (not always available)
 * VCAP_KF_8021Q_DEI_CLS: W1, sparx5: is2/es2, lan966x: is2/es0
 *   Classified DEI
 * VCAP_KF_8021Q_PCP0: W3, sparx5: is0, lan966x: is1
 *   First PCP in multiple vlan tags (outer tag or default port tag)
 * VCAP_KF_8021Q_PCP1: W3, sparx5: is0, lan966x: is1
 *   Second PCP in multiple vlan tags (inner tag)
 * VCAP_KF_8021Q_PCP2: W3, sparx5: is0
 *   Third PCP in multiple vlan tags (not always available)
 * VCAP_KF_8021Q_PCP_CLS: W3, sparx5: is2/es2, lan966x: is2/es0
 *   Classified PCP
 * VCAP_KF_8021Q_TPID: W3, sparx5: es0
 *   TPID for outer tag: 0: Customer TPID 1: Service TPID (88A8 or programmable)
 * VCAP_KF_8021Q_TPID0: sparx5 is0 W3, lan966x is1 W1
 *   First TPIC in multiple vlan tags (outer tag or default port tag)
 * VCAP_KF_8021Q_TPID1: sparx5 is0 W3, lan966x is1 W1
 *   Second TPID in multiple vlan tags (inner tag)
 * VCAP_KF_8021Q_TPID2: W3, sparx5: is0

Annotation

Implementation Notes