wifi: ath11k: change scan flag scan_f_filter_prb_req for QCA6390/WCN6855/QCA2066
authorKang Yang <quic_kangyang@quicinc.com>
Wed, 28 Feb 2024 09:35:36 +0000 (17:35 +0800)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 14 Mar 2024 16:41:24 +0000 (18:41 +0200)
Current ROC scan will filter probe request. So P2P device cannot receive
probe request. But it is necessary for P2P mode. A P2P device cannot be
discovered if it doesn't respond to others' probe request.

In addition, station won't filter probe request with common scan. But
for station, there is no needed to receive probe request.

Based on the above two points, change scan flag scan_f_filter_prb_req
for QCA6390/WCN6855/QCA2066.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37
Tested-on: QCA2066 hw2.1 PCI WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.2

Signed-off-by: Kang Yang <quic_kangyang@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240228093537.25052-6-quic_kangyang@quicinc.com
drivers/net/wireless/ath/ath11k/mac.c

index e14da5e0f519e52284a58157018374ad02f4a49e..0c9c3f0fa6902df0b257942ac3c632bc4b11466e 100644 (file)
@@ -4076,6 +4076,9 @@ static int ath11k_mac_op_hw_scan(struct ieee80211_hw *hw,
        arg->vdev_id = arvif->vdev_id;
        arg->scan_id = ATH11K_SCAN_ID;
 
+       if (ar->ab->hw_params.single_pdev_only)
+               arg->scan_f_filter_prb_req = 1;
+
        if (req->ie_len) {
                arg->extraie.ptr = kmemdup(req->ie, req->ie_len, GFP_KERNEL);
                if (!arg->extraie.ptr) {
@@ -9333,9 +9336,11 @@ static int ath11k_mac_op_remain_on_channel(struct ieee80211_hw *hw,
        arg->dwell_time_passive = scan_time_msec;
        arg->max_scan_time = scan_time_msec;
        arg->scan_f_passive = 1;
-       arg->scan_f_filter_prb_req = 1;
        arg->burst_duration = duration;
 
+       if (!ar->ab->hw_params.single_pdev_only)
+               arg->scan_f_filter_prb_req = 1;
+
        ret = ath11k_start_scan(ar, arg);
        if (ret) {
                ath11k_warn(ar->ab, "failed to start roc scan: %d\n", ret);