Commit cea40665 authored by Zong-Zhe Yang's avatar Zong-Zhe Yang Committed by Ping-Ke Shih
Browse files

wifi: rtw89: ser: avoid multiple deinit on same CAM



We did deinit CAM in STA iteration in VIF loop. But, the STA iteration
missed to restrict the target VIF. So, if there are multiple VIFs, we
would deinit a CAM multiple times. Now, fix it.

Signed-off-by: default avatarZong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Link: https://msgid.link/20240509090646.35304-2-pkshih@realtek.com
parent 28818b4d
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -308,9 +308,13 @@ static void ser_reset_vif(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)

static void ser_sta_deinit_cam_iter(void *data, struct ieee80211_sta *sta)
{
	struct rtw89_vif *rtwvif = (struct rtw89_vif *)data;
	struct rtw89_dev *rtwdev = rtwvif->rtwdev;
	struct rtw89_vif *target_rtwvif = (struct rtw89_vif *)data;
	struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
	struct rtw89_vif *rtwvif = rtwsta->rtwvif;
	struct rtw89_dev *rtwdev = rtwvif->rtwdev;

	if (rtwvif != target_rtwvif)
		return;

	if (rtwvif->net_type == RTW89_NET_TYPE_AP_MODE || sta->tdls)
		rtw89_cam_deinit_addr_cam(rtwdev, &rtwsta->addr_cam);