| From 76d0a277cf1e91a4b8c436de6569d17a64181aa9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 13 Jul 2025 22:27:32 +0300 |
| Subject: wifi: rtw88: Fix macid assigned to TDLS station |
| |
| From: Bitterblue Smith <rtl8821cerfe2@gmail.com> |
| |
| [ 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 | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c |
| index bc2c1a5a30b3..c589727c525e 100644 |
| --- a/drivers/net/wireless/realtek/rtw88/main.c |
| +++ b/drivers/net/wireless/realtek/rtw88/main.c |
| @@ -349,7 +349,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); |
| @@ -386,7 +386,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); |
| -- |
| 2.39.5 |
| |