Re: [External] RE: [RFC -v1] wifi: rtw88: sdio: Tx status for management frames

From: Zhen XIN
Date: Mon Apr 07 2025 - 23:30:08 EST



On 1/1/1970 8:00 AM, Ping-Ke Shih wrote:
Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx> wrote:
@@ -1195,7 +1195,7 @@ static void rtw_sdio_indicate_tx_status(struct rtw_dev *rtwdev,
skb_pull(skb, rtwdev->chip->tx_pkt_desc_sz);

/* enqueue to wait for tx report */
- if (info->flags & IEEE80211_TX_CTL_REQ_TX_STATUS) {
+ if (info->flags & IEEE80211_TX_CTL_REQ_TX_STATUS && queue
+ <= RTW_TX_QUEUE_VO) {
Is this because you have seen "failed to get tx report"?
Have you tried to increasing RTW_TX_PROBE_TIMEOUT?

If it still can't get TX report, we might take this workaround with
comments to mention why we need it. Or a local variable with proper
naming to point out this, like

bool queue_has_no_tx_report = queue > RTW_TX_QUEUE_VO;


By the way, USB behavior is very like to SDIO, but TX report seems to work well.
On my RTL8822CS I can confirm your thought:
I don't notice any extra "failed to get tx report" messages regardless
of whether I have "&& queue <= RTW_TX_QUEUE_VO" or not.

This workaround might need an chip attribute to enable then.
Not sure if people in the GitHub thread have experiments on all supported SDIO WiFi chips.

On my RTL8723DS, without condition"&& queue <= RTW_TX_QUEUE_VO", there are messages in the console:

[ 23.298425] rtw_8723ds mmc2:0001:1: failed to get tx report from firmware

Ever after I doubled the RTW_TX_PROBE_TIMEOUT (500 * 2), there messages were still there, and AP mode didn't work:

root@OpenWrt:~# iw dev phy0-ap0 station dump Station 04:ea:56:2f:6f:07 (on phy0-ap0) inactive time: 480 ms ... authorized: no authenticated: yes associated: yes

Seems tx status report didn't reach hostapd.