drivers/net/wireless/realtek/rtw88/usb.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/realtek/rtw88/usb.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/realtek/rtw88/usb.h
Extension
.h
Size
2366 bytes
Lines
104
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_usb_ctrl_block {
	struct rtw_dev *rtwdev;
	struct urb *rx_urb;
	struct sk_buff *rx_skb;
};

struct rtw_usb_tx_data {
	u8 sn;
};

struct rtw_usb {
	struct rtw_dev *rtwdev;
	struct usb_device *udev;

	/* protects usb_data_index */
	spinlock_t usb_lock;
	__le32 *usb_data;
	unsigned int usb_data_index;

	u8 pipe_interrupt;
	u8 pipe_in;
	u8 out_ep[RTW_USB_EP_MAX];
	int qsel_to_ep[TX_DESC_QSEL_MAX];

	struct workqueue_struct *txwq, *rxwq;

	struct sk_buff_head tx_queue[RTW_USB_EP_MAX];
	struct work_struct tx_work;

	struct rx_usb_ctrl_block rx_cb[RTW_USB_RXCB_NUM];
	struct sk_buff_head rx_queue;
	struct sk_buff_head rx_free_queue;
	struct work_struct rx_work;
	struct work_struct rx_urb_work;
};

static inline struct rtw_usb_tx_data *rtw_usb_get_tx_data(struct sk_buff *skb)
{
	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);

	BUILD_BUG_ON(sizeof(struct rtw_usb_tx_data) >
		     sizeof(info->status.status_driver_data));

	return (struct rtw_usb_tx_data *)info->status.status_driver_data;
}

int rtw_usb_probe(struct usb_interface *intf, const struct usb_device_id *id);
void rtw_usb_disconnect(struct usb_interface *intf);

#endif

Annotation

Implementation Notes