[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