[lvc-project] [PATCH rtw-next v3 9/9] wifi: rtw89: process TX wait skbs for USB via C2H handler
Ping-Ke Shih
pkshih at realtek.com
Wed Oct 22 12:03:01 MSK 2025
Fedor Pchelkin <pchelkin at ispras.ru> wrote:
> TX wait skbs need to be completed when they are done. PCIe part does this
> inside rtw89_pci_tx_status() during RPP processing. Other HCIs use a
> mechanism based on C2H firmware messages.
>
> Store TX wait skbs inside TX report queue so that it'll be possible to
> identify completed items inside the C2H handler via private driver data of
> skb. Try to do this as similar to PCIe path as possible. When the
> corresponding TX wait skb is found inside TX report queue, unlink it from
> there and call rtw89_core_tx_wait_complete() to mark the completion.
>
> If the callee waiting for the completion has already timed out, the TX
> wait skb is placed into TX wait list (like PCIe part does).
>
> Found by Linux Verification Center (linuxtesting.org).
>
> Signed-off-by: Fedor Pchelkin <pchelkin at ispras.ru>
Acked-by: Ping-Ke Shih <pkshih at realtek.com>
[...]
> static inline
> void rtw89_tx_rpt_tx_status(struct rtw89_dev *rtwdev, struct sk_buff *skb, u8 tx_status)
> {
> + struct rtw89_tx_skb_data *skb_data = RTW89_TX_SKB_CB(skb);
> struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
>
> + if (rtw89_core_tx_wait_complete(rtwdev, skb_data, tx_status))
> + return;
> +
nit: move 'info = IEEE80211_SKB_CB(skb);' here like PCIE does.
> ieee80211_tx_info_clear_status(info);
> if (tx_status == RTW89_TX_DONE)
> info->flags |= IEEE80211_TX_STAT_ACK;
More information about the lvc-project
mailing list