]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw89: mcc: enlarge TX retry count when GC auth
authorChih-Kang Chang <gary.chang@realtek.com>
Tue, 10 Jun 2025 13:00:33 +0000 (21:00 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 16 Jun 2025 05:36:07 +0000 (13:36 +0800)
The auth retry only continue 40ms, but the GO might switch to STA role
50ms when MCC. Therefore, enlarge the TX retry count from 32 to 60 to
let GC TX time overlapping with GO timeslot.

Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20250610130034.14692-12-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c
drivers/net/wireless/realtek/rtw89/core.h

index 9c4360df77f17b25370004c6adf89f755f8f475f..4026cda04ef6d52cb7da792a720bbdd457449fcd 100644 (file)
@@ -4006,6 +4006,12 @@ int rtw89_core_sta_link_add(struct rtw89_dev *rtwdev,
                rtw89_btc_ntfy_role_info(rtwdev, rtwvif_link, rtwsta_link,
                                         BTC_ROLE_MSTS_STA_CONN_START);
                rtw89_chip_rfk_channel(rtwdev, rtwvif_link);
+
+               if (vif->p2p) {
+                       rtw89_mac_get_tx_retry_limit(rtwdev, rtwsta_link,
+                                                    &rtwsta_link->tx_retry);
+                       rtw89_mac_set_tx_retry_limit(rtwdev, rtwsta_link, false, 60);
+               }
        } else if (vif->type == NL80211_IFTYPE_AP || sta->tdls) {
                ret = rtw89_mac_set_macid_pause(rtwdev, rtwsta_link->mac_id, false);
                if (ret) {
@@ -4190,6 +4196,10 @@ int rtw89_core_sta_link_assoc(struct rtw89_dev *rtwdev,
                }
 
                rtw89_fw_h2c_set_bcn_fltr_cfg(rtwdev, rtwvif_link, true);
+
+               if (vif->p2p)
+                       rtw89_mac_set_tx_retry_limit(rtwdev, rtwsta_link, false,
+                                                    rtwsta_link->tx_retry);
        }
 
        rtw89_assoc_link_set(rtwsta_link);
@@ -4208,6 +4218,10 @@ int rtw89_core_sta_link_remove(struct rtw89_dev *rtwdev,
                rtw89_reg_6ghz_recalc(rtwdev, rtwvif_link, false);
                rtw89_btc_ntfy_role_info(rtwdev, rtwvif_link, rtwsta_link,
                                         BTC_ROLE_MSTS_STA_DIS_CONN);
+
+               if (vif->p2p)
+                       rtw89_mac_set_tx_retry_limit(rtwdev, rtwsta_link, false,
+                                                    rtwsta_link->tx_retry);
        } else if (vif->type == NL80211_IFTYPE_AP || sta->tdls) {
                ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif_link, rtwsta_link,
                                                 RTW89_ROLE_REMOVE);
index c017bdaf0500e734bedda095a902a3e459913b76..342f6b379f86a53bb42ec200e939df89b79eddb0 100644 (file)
@@ -3385,6 +3385,7 @@ struct rtw89_sta_link {
        unsigned int link_id;
 
        u8 mac_id;
+       u8 tx_retry;
        bool er_cap;
        struct rtw89_vif_link *rtwvif_link;
        struct rtw89_ra_info ra;