drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.h
Extension
.h
Size
6200 bytes
Lines
266
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 mlx5hws_wqe_ctrl_seg {
	__be32 opmod_idx_opcode;
	__be32 qpn_ds;
	__be32 flags;
	__be32 imm;
};

struct mlx5hws_wqe_gta_ctrl_seg {
	__be32 op_dirix;
	__be32 stc_ix[5];
	__be32 rsvd0[6];
};

struct mlx5hws_wqe_gta_data_seg_ste {
	__be32 rsvd0_ctr_id;
	__be32 rsvd1_definer;
	__be32 rsvd2[3];
	union {
		struct {
		__be32 action[3];
		__be32 tag[8];
		};
		__be32 jumbo[11];
	};
};

struct mlx5hws_wqe_gta_data_seg_arg {
	__be32 action_args[8];
};

struct mlx5hws_wqe_gta {
	struct mlx5hws_wqe_gta_ctrl_seg gta_ctrl;
	union {
		struct mlx5hws_wqe_gta_data_seg_ste seg_ste;
		struct mlx5hws_wqe_gta_data_seg_arg seg_arg;
	};
};

struct mlx5hws_send_ring_cq {
	struct mlx5_core_dev *mdev;
	struct mlx5_cqwq wq;
	struct mlx5_wq_ctrl wq_ctrl;
	struct mlx5_core_cq mcq;
	u16 poll_wqe;
};

struct mlx5hws_send_ring_priv {
	struct mlx5hws_rule *rule;
	void *user_data;
	u32 num_wqebbs;
	u32 id;
	u32 retry_id;
	u32 *used_id;
};

struct mlx5hws_send_ring_dep_wqe {
	struct mlx5hws_wqe_gta_ctrl_seg wqe_ctrl;
	struct mlx5hws_wqe_gta_data_seg_ste wqe_data;
	struct mlx5hws_rule *rule;
	u32 rtc_0;
	u32 rtc_1;
	u32 retry_rtc_0;
	u32 retry_rtc_1;
	u32 direct_index;
	void *user_data;
};

struct mlx5hws_send_ring_sq {
	struct mlx5_core_dev *mdev;
	u16 cur_post;
	u16 buf_mask;
	struct mlx5hws_send_ring_priv *wr_priv;
	unsigned int last_idx;
	struct mlx5hws_send_ring_dep_wqe *dep_wqe;
	unsigned int head_dep_idx;
	unsigned int tail_dep_idx;
	u32 sqn;
	struct mlx5_wq_cyc wq;
	struct mlx5_wq_ctrl wq_ctrl;
	void __iomem *uar_map;
};

struct mlx5hws_send_ring {
	struct mlx5hws_send_ring_cq send_cq;
	struct mlx5hws_send_ring_sq send_sq;
};

struct mlx5hws_completed_poll_entry {
	void *user_data;
	enum mlx5hws_flow_op_status status;

Annotation

Implementation Notes