drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8180.h
Extension
.h
Size
4034 bytes
Lines
187
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 rtl8180_tx_desc {
	__le32 flags;
	__le16 rts_duration;
	__le16 plcp_len;
	__le32 tx_buf;
	union{
		__le32 frame_len;
		struct {
			__le16 frame_len_se;
			__le16 frame_duration;
		} __packed;
	} __packed;
	__le32 next_tx_desc;
	u8 cw;
	u8 retry_limit;
	u8 agc;
	u8 flags2;
	/* rsvd for 8180/8185.
	 * valid for 8187se but we dont use it
	 */
	u32 reserved;
	/* all rsvd for 8180/8185 */
	__le16 flags3;
	__le16 frag_qsize;
} __packed;

struct rtl818x_rx_cmd_desc {
	__le32 flags;
	u32 reserved;
	__le32 rx_buf;
} __packed;

struct rtl8180_rx_desc {
	__le32 flags;
	__le32 flags2;
	__le64 tsft;

} __packed;

struct rtl8187se_rx_desc {
	__le32 flags;
	__le64 tsft;
	__le32 flags2;
	__le32 flags3;
	u32 reserved[3];
} __packed;

struct rtl8180_tx_ring {
	struct rtl8180_tx_desc *desc;
	dma_addr_t dma;
	unsigned int idx;
	unsigned int entries;
	struct sk_buff_head queue;
};

struct rtl8180_vif {
	struct ieee80211_hw *dev;

	/* beaconing */
	struct delayed_work beacon_work;
	bool enable_beacon;
};

struct rtl8180_priv {
	/* common between rtl818x drivers */
	struct rtl818x_csr __iomem *map;
	const struct rtl818x_rf_ops *rf;
	struct ieee80211_vif *vif;

	/* rtl8180 driver specific */
	bool map_pio;
	spinlock_t lock;
	void *rx_ring;
	u8 rx_ring_sz;
	dma_addr_t rx_ring_dma;
	unsigned int rx_idx;
	struct sk_buff *rx_buf[32];
	struct rtl8180_tx_ring tx_ring[RTL818X_NR_TX_QUEUES];
	struct ieee80211_channel channels[14];
	struct ieee80211_rate rates[12];
	struct ieee80211_supported_band band;
	struct ieee80211_tx_queue_params queue_param[4];
	struct pci_dev *pdev;
	u32 rx_conf;
	u8 slot_time;
	u16 ack_time;

	enum {
		RTL818X_CHIP_FAMILY_RTL8180,
		RTL818X_CHIP_FAMILY_RTL8185,

Annotation

Implementation Notes