提交 d881d0a1 编写于 作者: K Kuan-Chung Chen 提交者: Kalle Valo

wifi: rtw89: disallow enter PS mode after create TDLS link

Buffer STA on TDLS links are not currently supported. Therefore, it
is not allowed to enter the PS mode after TDLS link is established.
Signed-off-by: NKuan-Chung Chen <damon.chen@realtek.com>
Signed-off-by: NPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: NKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230119064631.66971-1-pkshih@realtek.com
上级 214a98b1
...@@ -2206,8 +2206,9 @@ static bool rtw89_traffic_stats_track(struct rtw89_dev *rtwdev) ...@@ -2206,8 +2206,9 @@ static bool rtw89_traffic_stats_track(struct rtw89_dev *rtwdev)
static void rtw89_vif_enter_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif) static void rtw89_vif_enter_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
{ {
if (rtwvif->wifi_role != RTW89_WIFI_ROLE_STATION && if ((rtwvif->wifi_role != RTW89_WIFI_ROLE_STATION &&
rtwvif->wifi_role != RTW89_WIFI_ROLE_P2P_CLIENT) rtwvif->wifi_role != RTW89_WIFI_ROLE_P2P_CLIENT) ||
rtwvif->tdls_peer)
return; return;
if (rtwvif->stats.tx_tfc_lv == RTW89_TFC_IDLE && if (rtwvif->stats.tx_tfc_lv == RTW89_TFC_IDLE &&
...@@ -2466,9 +2467,12 @@ int rtw89_core_sta_disassoc(struct rtw89_dev *rtwdev, ...@@ -2466,9 +2467,12 @@ int rtw89_core_sta_disassoc(struct rtw89_dev *rtwdev,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
struct ieee80211_sta *sta) struct ieee80211_sta *sta)
{ {
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv; struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
rtwdev->total_sta_assoc--; rtwdev->total_sta_assoc--;
if (sta->tdls)
rtwvif->tdls_peer--;
rtwsta->disassoc = true; rtwsta->disassoc = true;
return 0; return 0;
...@@ -2587,6 +2591,8 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev, ...@@ -2587,6 +2591,8 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev,
} }
rtwdev->total_sta_assoc++; rtwdev->total_sta_assoc++;
if (sta->tdls)
rtwvif->tdls_peer++;
rtw89_phy_ra_assoc(rtwdev, sta); rtw89_phy_ra_assoc(rtwdev, sta);
rtw89_mac_bf_assoc(rtwdev, vif, sta); rtw89_mac_bf_assoc(rtwdev, vif, sta);
rtw89_mac_bf_monitor_calc(rtwdev, sta, false); rtw89_mac_bf_monitor_calc(rtwdev, sta, false);
......
...@@ -2452,6 +2452,7 @@ struct rtw89_vif { ...@@ -2452,6 +2452,7 @@ struct rtw89_vif {
bool last_a_ctrl; bool last_a_ctrl;
bool dyn_tb_bedge_en; bool dyn_tb_bedge_en;
u8 def_tri_idx; u8 def_tri_idx;
u32 tdls_peer;
struct work_struct update_beacon_work; struct work_struct update_beacon_work;
struct rtw89_addr_cam_entry addr_cam; struct rtw89_addr_cam_entry addr_cam;
struct rtw89_bssid_cam_entry bssid_cam; struct rtw89_bssid_cam_entry bssid_cam;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册