drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.h
Extension
.h
Size
1694 bytes
Lines
56
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 mlxsw_sp_nve_config {
	enum mlxsw_sp_nve_type type;
	u8 ttl;
	u8 learning_en:1;
	__be16 udp_dport;
	__be32 flowlabel;
	u32 ul_tb_id;
	enum mlxsw_sp_l3proto ul_proto;
	union mlxsw_sp_l3addr ul_sip;
};

struct mlxsw_sp_nve {
	struct mlxsw_sp_nve_config config;
	struct rhashtable mc_list_ht;
	struct rhashtable ipv6_ht;
	struct list_head ipv6_addr_list; /* Saves hash table nodes. */
	struct mlxsw_sp *mlxsw_sp;
	const struct mlxsw_sp_nve_ops **nve_ops_arr;
	unsigned int num_nve_tunnels;	/* Protected by RTNL */
	unsigned int num_max_mc_entries[MLXSW_SP_L3_PROTO_MAX];
	u32 tunnel_index;
	u16 ul_rif_index;	/* Reserved for Spectrum */
};

struct mlxsw_sp_nve_ops {
	enum mlxsw_sp_nve_type type;
	bool (*can_offload)(const struct mlxsw_sp_nve *nve,
			    const struct mlxsw_sp_nve_params *params,
			    struct netlink_ext_ack *extack);
	void (*nve_config)(const struct mlxsw_sp_nve *nve,
			   const struct mlxsw_sp_nve_params *params,
			   struct mlxsw_sp_nve_config *config);
	int (*init)(struct mlxsw_sp_nve *nve,
		    const struct mlxsw_sp_nve_config *config);
	void (*fini)(struct mlxsw_sp_nve *nve);
	int (*fdb_replay)(const struct net_device *nve_dev, __be32 vni,
			  struct netlink_ext_ack *extack);
	void (*fdb_clear_offload)(const struct net_device *nve_dev, __be32 vni);
};

extern const struct mlxsw_sp_nve_ops mlxsw_sp1_nve_vxlan_ops;
extern const struct mlxsw_sp_nve_ops mlxsw_sp2_nve_vxlan_ops;

#endif

Annotation

Implementation Notes