OSDN Git Service

rtw89: configure rx_filter according to FIF_PROBE_REQ
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 7 Jan 2022 03:42:21 +0000 (11:42 +0800)
committerKalle Valo <kvalo@kernel.org>
Fri, 28 Jan 2022 15:56:34 +0000 (17:56 +0200)
With this patch, we can receive probe_req and reply probe_resp, and STA
can find us.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220107034239.22002-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac80211.c

index 00b0349..3e4a476 100644 (file)
@@ -161,7 +161,7 @@ static void rtw89_ops_configure_filter(struct ieee80211_hw *hw,
        rtw89_leave_ps_mode(rtwdev);
 
        *new_flags &= FIF_ALLMULTI | FIF_OTHER_BSS | FIF_FCSFAIL |
-                     FIF_BCN_PRBRESP_PROMISC;
+                     FIF_BCN_PRBRESP_PROMISC | FIF_PROBE_REQ;
 
        if (changed_flags & FIF_ALLMULTI) {
                if (*new_flags & FIF_ALLMULTI)
@@ -192,6 +192,15 @@ static void rtw89_ops_configure_filter(struct ieee80211_hw *hw,
                        rtwdev->hal.rx_fltr |= B_AX_A_A1_MATCH;
                }
        }
+       if (changed_flags & FIF_PROBE_REQ) {
+               if (*new_flags & FIF_PROBE_REQ) {
+                       rtwdev->hal.rx_fltr &= ~B_AX_A_BC_CAM_MATCH;
+                       rtwdev->hal.rx_fltr &= ~B_AX_A_UC_CAM_MATCH;
+               } else {
+                       rtwdev->hal.rx_fltr |= B_AX_A_BC_CAM_MATCH;
+                       rtwdev->hal.rx_fltr |= B_AX_A_UC_CAM_MATCH;
+               }
+       }
 
        rtw89_write32_mask(rtwdev,
                           rtw89_mac_reg_by_idx(R_AX_RX_FLTR_OPT, RTW89_MAC_0),