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.
- 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
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
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
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.