]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: rtw88: Fix macid assigned to TDLS station
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Sun, 13 Jul 2025 19:27:32 +0000 (22:27 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 10:13:43 +0000 (12:13 +0200)
[ Upstream commit 526b000991b557c40ea53e64ba24bb9e0fff0071 ]

When working in station mode, TDLS peers are assigned macid 0, even
though 0 was already assigned to the AP. This causes the connection
with the AP to stop working after the TDLS connection is torn down.

Assign the next available macid to TDLS peers, same as client stations
in AP mode.

Fixes: 902cb7b11f9a ("wifi: rtw88: assign mac_id for vif/sta and update to TX desc")
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/58648c09-8553-4bcc-a977-9dc9afd63780@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/realtek/rtw88/main.c

index a808af2f085ec88f985c39075ab7a76871f3e7e0..01c8b748b20b344e055deb708914eeee178983c9 100644 (file)
@@ -329,7 +329,7 @@ int rtw_sta_add(struct rtw_dev *rtwdev, struct ieee80211_sta *sta,
        struct rtw_vif *rtwvif = (struct rtw_vif *)vif->drv_priv;
        int i;
 
-       if (vif->type == NL80211_IFTYPE_STATION) {
+       if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) {
                si->mac_id = rtwvif->mac_id;
        } else {
                si->mac_id = rtw_acquire_macid(rtwdev);
@@ -366,7 +366,7 @@ void rtw_sta_remove(struct rtw_dev *rtwdev, struct ieee80211_sta *sta,
 
        cancel_work_sync(&si->rc_work);
 
-       if (vif->type != NL80211_IFTYPE_STATION)
+       if (vif->type != NL80211_IFTYPE_STATION || sta->tdls)
                rtw_release_macid(rtwdev, si->mac_id);
        if (fw_exist)
                rtw_fw_media_status_report(rtwdev, si->mac_id, false);