drivers/net/wireless/intel/ipw2x00/ipw2200.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/intel/ipw2x00/ipw2200.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/intel/ipw2x00/ipw2200.h
Extension
.h
Size
57964 bytes
Lines
1981
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 ipw_qos_info {
	int qos_enable;
	struct libipw_qos_parameters *def_qos_parm_OFDM;
	struct libipw_qos_parameters *def_qos_parm_CCK;
	u32 burst_duration_CCK;
	u32 burst_duration_OFDM;
	u16 qos_no_ack_mask;
	int burst_enable;
};

/**************************************************************/
/**
 * Generic queue structure
 *
 * Contains common data for Rx and Tx queues
 */
struct clx2_queue {
	int n_bd;		       /**< number of BDs in this queue */
	int first_empty;	       /**< 1-st empty entry (index) */
	int last_used;		       /**< last used entry (index) */
	u32 reg_w;		     /**< 'write' reg (queue head), addr in domain 1 */
	u32 reg_r;		     /**< 'read' reg (queue tail), addr in domain 1 */
	dma_addr_t dma_addr;		/**< physical addr for BD's */
	int low_mark;		       /**< low watermark, resume queue if free space more than this */
	int high_mark;		       /**< high watermark, stop queue if free space less than this */
} __packed; /* XXX */

struct machdr32 {
	__le16 frame_ctl;
	__le16 duration;		// watch out for endians!
	u8 addr1[MACADRR_BYTE_LEN];
	u8 addr2[MACADRR_BYTE_LEN];
	u8 addr3[MACADRR_BYTE_LEN];
	__le16 seq_ctrl;		// more endians!
	u8 addr4[MACADRR_BYTE_LEN];
	__le16 qos_ctrl;
} __packed;

struct machdr30 {
	__le16 frame_ctl;
	__le16 duration;		// watch out for endians!
	u8 addr1[MACADRR_BYTE_LEN];
	u8 addr2[MACADRR_BYTE_LEN];
	u8 addr3[MACADRR_BYTE_LEN];
	__le16 seq_ctrl;		// more endians!
	u8 addr4[MACADRR_BYTE_LEN];
} __packed;

struct machdr26 {
	__le16 frame_ctl;
	__le16 duration;		// watch out for endians!
	u8 addr1[MACADRR_BYTE_LEN];
	u8 addr2[MACADRR_BYTE_LEN];
	u8 addr3[MACADRR_BYTE_LEN];
	__le16 seq_ctrl;		// more endians!
	__le16 qos_ctrl;
} __packed;

struct machdr24 {
	__le16 frame_ctl;
	__le16 duration;		// watch out for endians!
	u8 addr1[MACADRR_BYTE_LEN];
	u8 addr2[MACADRR_BYTE_LEN];
	u8 addr3[MACADRR_BYTE_LEN];
	__le16 seq_ctrl;		// more endians!
} __packed;

// TX TFD with 32 byte MAC Header
struct tx_tfd_32 {
	struct machdr32 mchdr;	// 32
	__le32 uivplaceholder[2];	// 8
} __packed;

// TX TFD with 30 byte MAC Header
struct tx_tfd_30 {
	struct machdr30 mchdr;	// 30
	u8 reserved[2];		// 2
	__le32 uivplaceholder[2];	// 8
} __packed;

// tx tfd with 26 byte mac header
struct tx_tfd_26 {
	struct machdr26 mchdr;	// 26
	u8 reserved1[2];	// 2
	__le32 uivplaceholder[2];	// 8
	u8 reserved2[4];	// 4
} __packed;

// tx tfd with 24 byte mac header
struct tx_tfd_24 {

Annotation

Implementation Notes