drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/ath/ath12k/wifi7/hal_rx_desc.h
Extension
.h
Size
50654 bytes
Lines
1509
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 rx_mpdu_start_qcn9274 {
	__le32 info0;
	__le32 reo_queue_desc_lo;
	__le32 info1;
	__le32 pn[4];
	__le32 info2;
	__le32 peer_meta_data;
	__le16 info3;
	__le16 phy_ppdu_id;
	__le16 ast_index;
	__le16 sw_peer_id;
	__le32 info4;
	__le32 info5;
	__le32 info6;
	__le16 frame_ctrl;
	__le16 duration;
	u8 addr1[ETH_ALEN];
	u8 addr2[ETH_ALEN];
	u8 addr3[ETH_ALEN];
	__le16 seq_ctrl;
	u8 addr4[ETH_ALEN];
	__le16 qos_ctrl;
	__le32 ht_ctrl;
	__le32 info7;
	u8 multi_link_addr1[ETH_ALEN];
	u8 multi_link_addr2[ETH_ALEN];
	__le32 info8;
	__le32 res0;
	__le32 res1;
} __packed;

#define QCN9274_MPDU_START_SELECT_MPDU_START_TAG			BIT(0)
#define QCN9274_MPDU_START_SELECT_INFO0_REO_QUEUE_DESC_LO		BIT(1)
#define QCN9274_MPDU_START_SELECT_INFO1_PN_31_0				BIT(2)
#define QCN9274_MPDU_START_SELECT_PN_95_32				BIT(3)
#define QCN9274_MPDU_START_SELECT_PN_127_96_INFO2			BIT(4)
#define QCN9274_MPDU_START_SELECT_PEER_MDATA_INFO3_PHY_PPDU_ID		BIT(5)
#define QCN9274_MPDU_START_SELECT_AST_IDX_SW_PEER_ID_INFO4		BIT(6)
#define QCN9274_MPDU_START_SELECT_INFO5_INFO6				BIT(7)
#define QCN9274_MPDU_START_SELECT_FRAME_CTRL_DURATION_ADDR1_31_0	BIT(8)
#define QCN9274_MPDU_START_SELECT_ADDR2_47_0_ADDR1_47_32		BIT(9)
#define QCN9274_MPDU_START_SELECT_ADDR3_47_0_SEQ_CTRL			BIT(10)
#define QCN9274_MPDU_START_SELECT_ADDR4_47_0_QOS_CTRL			BIT(11)
#define QCN9274_MPDU_START_SELECT_HT_CTRL_INFO7				BIT(12)
#define QCN9274_MPDU_START_SELECT_ML_ADDR1_47_0_ML_ADDR2_15_0		BIT(13)
#define QCN9274_MPDU_START_SELECT_ML_ADDR2_47_16_INFO8			BIT(14)
#define QCN9274_MPDU_START_SELECT_RES_0_RES_1				BIT(15)

#define QCN9274_MPDU_START_WMASK (QCN9274_MPDU_START_SELECT_INFO1_PN_31_0 |	\
		QCN9274_MPDU_START_SELECT_PN_95_32 |				\
		QCN9274_MPDU_START_SELECT_PN_127_96_INFO2 |			\
		QCN9274_MPDU_START_SELECT_PEER_MDATA_INFO3_PHY_PPDU_ID |	\
		QCN9274_MPDU_START_SELECT_AST_IDX_SW_PEER_ID_INFO4 |		\
		QCN9274_MPDU_START_SELECT_INFO5_INFO6 |				\
		QCN9274_MPDU_START_SELECT_FRAME_CTRL_DURATION_ADDR1_31_0 |	\
		QCN9274_MPDU_START_SELECT_ADDR2_47_0_ADDR1_47_32 |		\
		QCN9274_MPDU_START_SELECT_ADDR3_47_0_SEQ_CTRL |			\
		QCN9274_MPDU_START_SELECT_ADDR4_47_0_QOS_CTRL)

/* The below rx_mpdu_start_qcn9274_compact structure is tied with the mask
 * value QCN9274_MPDU_START_WMASK. If the mask value changes the structure
 * will also change.
 */

struct rx_mpdu_start_qcn9274_compact {
	__le32 info1;
	__le32 pn[4];
	__le32 info2;
	__le32 peer_meta_data;
	__le16 info3;
	__le16 phy_ppdu_id;
	__le16 ast_index;
	__le16 sw_peer_id;
	__le32 info4;
	__le32 info5;
	__le32 info6;
	__le16 frame_ctrl;
	__le16 duration;
	u8 addr1[ETH_ALEN];
	u8 addr2[ETH_ALEN];
	u8 addr3[ETH_ALEN];
	__le16 seq_ctrl;
	u8 addr4[ETH_ALEN];
	__le16 qos_ctrl;
} __packed;

/* rx_mpdu_start
 *
 * reo_destination_indication
 *		The id of the reo exit ring where the msdu frame shall push

Annotation

Implementation Notes