drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h
Extension
.h
Size
1792 bytes
Lines
50
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

struct ionic_rx_filter {
	u32 flow_id;
	u32 filter_id;
	u16 rxq_index;
	enum ionic_filter_state state;
	struct ionic_rx_filter_add_cmd cmd;
	struct hlist_node by_hash;
	struct hlist_node by_id;
};

#define IONIC_RX_FILTER_HASH_BITS	10
#define IONIC_RX_FILTER_HLISTS		BIT(IONIC_RX_FILTER_HASH_BITS)
#define IONIC_RX_FILTER_HLISTS_MASK	(IONIC_RX_FILTER_HLISTS - 1)
struct ionic_rx_filters {
	spinlock_t lock;				    /* filter list lock */
	struct hlist_head by_hash[IONIC_RX_FILTER_HLISTS];  /* by skb hash */
	struct hlist_head by_id[IONIC_RX_FILTER_HLISTS];    /* by filter_id */
};

void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f);
void ionic_rx_filter_replay(struct ionic_lif *lif);
int ionic_rx_filters_init(struct ionic_lif *lif);
void ionic_rx_filters_deinit(struct ionic_lif *lif);
int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index,
			 u32 hash, struct ionic_admin_ctx *ctx,
			 enum ionic_filter_state state);
struct ionic_rx_filter *ionic_rx_filter_by_vlan(struct ionic_lif *lif, u16 vid);
struct ionic_rx_filter *ionic_rx_filter_by_addr(struct ionic_lif *lif, const u8 *addr);
struct ionic_rx_filter *ionic_rx_filter_rxsteer(struct ionic_lif *lif);
void ionic_rx_filter_sync(struct ionic_lif *lif);
int ionic_lif_list_addr(struct ionic_lif *lif, const u8 *addr, bool mode);
int ionic_lif_vlan_add(struct ionic_lif *lif, const u16 vid);
int ionic_lif_vlan_del(struct ionic_lif *lif, const u16 vid);

#endif /* _IONIC_RX_FILTER_H_ */

Annotation

Implementation Notes