drivers/net/ethernet/ti/icssm/icssm_vlan_mcast_filter_mmap.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/ti/icssm/icssm_vlan_mcast_filter_mmap.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/ti/icssm/icssm_vlan_mcast_filter_mmap.h
Extension
.h
Size
4713 bytes
Lines
121
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 ICSS_VLAN_MULTICAST_FILTER_MM_H
#define ICSS_VLAN_MULTICAST_FILTER_MM_H

/* VLAN/Multicast filter defines & offsets,
 * present on both PRU0 and PRU1 DRAM
 */

/* Feature enable/disable values for multicast filtering */
#define ICSS_EMAC_FW_MULTICAST_FILTER_CTRL_DISABLED		0x00
#define ICSS_EMAC_FW_MULTICAST_FILTER_CTRL_ENABLED		0x01

/* Feature enable/disable values for VLAN filtering */
#define ICSS_EMAC_FW_VLAN_FILTER_CTRL_DISABLED			0x00
#define ICSS_EMAC_FW_VLAN_FILTER_CTRL_ENABLED			0x01

/* Add/remove multicast mac id for filtering bin */
#define ICSS_EMAC_FW_MULTICAST_FILTER_HOST_RCV_ALLOWED		0x01
#define ICSS_EMAC_FW_MULTICAST_FILTER_HOST_RCV_NOT_ALLOWED	0x00

/* Default HASH value for the multicast filtering Mask */
#define ICSS_EMAC_FW_MULTICAST_FILTER_INIT_VAL			0xFF

/* Size requirements for Multicast filtering feature */
#define ICSS_EMAC_FW_MULTICAST_TABLE_SIZE_BYTES			       256
#define ICSS_EMAC_FW_MULTICAST_FILTER_MASK_SIZE_BYTES			 6
#define ICSS_EMAC_FW_MULTICAST_FILTER_CTRL_SIZE_BYTES			 1
#define ICSS_EMAC_FW_MULTICAST_FILTER_MASK_OVERRIDE_STATUS_SIZE_BYTES	 1
#define ICSS_EMAC_FW_MULTICAST_FILTER_DROP_CNT_SIZE_BYTES		 4

/* Size requirements for VLAN filtering feature : 4096 bits = 512 bytes */
#define ICSS_EMAC_FW_VLAN_FILTER_TABLE_SIZE_BYTES		       512
#define ICSS_EMAC_FW_VLAN_FILTER_CTRL_SIZE_BYTES			 1
#define ICSS_EMAC_FW_VLAN_FILTER_DROP_CNT_SIZE_BYTES			 4

/* Mask override set status */
#define ICSS_EMAC_FW_MULTICAST_FILTER_MASK_OVERRIDE_SET			 1
/* Mask override not set status */
#define ICSS_EMAC_FW_MULTICAST_FILTER_MASK_OVERRIDE_NOT_SET		 0
/* 6 bytes HASH Mask for the MAC */
#define ICSS_EMAC_FW_MULTICAST_FILTER_MASK_OFFSET	  0xF4
/* 0 -> multicast filtering disabled | 1 -> multicast filtering enabled */
#define ICSS_EMAC_FW_MULTICAST_FILTER_CTRL_OFFSET	\
	(ICSS_EMAC_FW_MULTICAST_FILTER_MASK_OFFSET +	\
	 ICSS_EMAC_FW_MULTICAST_FILTER_MASK_SIZE_BYTES)
/* Status indicating if the HASH override is done or not: 0: no, 1: yes */
#define ICSS_EMAC_FW_MULTICAST_FILTER_OVERRIDE_STATUS	\
	(ICSS_EMAC_FW_MULTICAST_FILTER_CTRL_OFFSET +	\
	 ICSS_EMAC_FW_MULTICAST_FILTER_CTRL_SIZE_BYTES)
/* Multicast drop statistics */
#define ICSS_EMAC_FW_MULTICAST_FILTER_DROP_CNT_OFFSET	\
	(ICSS_EMAC_FW_MULTICAST_FILTER_OVERRIDE_STATUS +\
	 ICSS_EMAC_FW_MULTICAST_FILTER_MASK_OVERRIDE_STATUS_SIZE_BYTES)
/* Multicast table */
#define ICSS_EMAC_FW_MULTICAST_FILTER_TABLE		\
	(ICSS_EMAC_FW_MULTICAST_FILTER_DROP_CNT_OFFSET +\
	 ICSS_EMAC_FW_MULTICAST_FILTER_DROP_CNT_SIZE_BYTES)

/* Multicast filter defines & offsets for LRE
 */
#define ICSS_LRE_FW_MULTICAST_TABLE_SEARCH_OP_CONTROL_BIT	0xE0
/* one byte field :
 * 0 -> multicast filtering disabled
 * 1 -> multicast filtering enabled
 */
#define ICSS_LRE_FW_MULTICAST_FILTER_MASK			 0xE4
#define ICSS_LRE_FW_MULTICAST_FILTER_TABLE			 0x100

/* VLAN table Offsets */
#define ICSS_EMAC_FW_VLAN_FLTR_TBL_BASE_ADDR		 0x200
#define ICSS_EMAC_FW_VLAN_FILTER_CTRL_BITMAP_OFFSET	 0xEF
#define ICSS_EMAC_FW_VLAN_FILTER_DROP_CNT_OFFSET	\
	(ICSS_EMAC_FW_VLAN_FILTER_CTRL_BITMAP_OFFSET +	\
	 ICSS_EMAC_FW_VLAN_FILTER_CTRL_SIZE_BYTES)

/* VLAN filter Control Bit maps */
/* one bit field, bit 0: | 0 : VLAN filter disabled (default),
 * 1: VLAN filter enabled
 */
#define ICSS_EMAC_FW_VLAN_FILTER_CTRL_ENABLE_BIT		       0
/* one bit field, bit 1: | 0 : untagged host rcv allowed (default),
 * 1: untagged host rcv not allowed
 */
#define ICSS_EMAC_FW_VLAN_FILTER_UNTAG_HOST_RCV_ALLOW_CTRL_BIT	       1
/* one bit field, bit 1: | 0 : priotag host rcv allowed (default),
 * 1: priotag host rcv not allowed
 */
#define ICSS_EMAC_FW_VLAN_FILTER_PRIOTAG_HOST_RCV_ALLOW_CTRL_BIT       2
/* one bit field, bit 1: | 0 : skip sv vlan flow
 * :1 : take sv vlan flow  (not applicable for dual emac )
 */

Annotation

Implementation Notes