]> git.baikalelectronics.ru Git - kernel.git/commitdiff
ath11k: change to use dynamic memory for channel list of scan
authorWen Gong <quic_wgong@quicinc.com>
Mon, 29 Nov 2021 11:09:39 +0000 (06:09 -0500)
committerKalle Valo <quic_kvalo@quicinc.com>
Tue, 7 Dec 2021 15:20:29 +0000 (17:20 +0200)
Currently there are about 60 channels for 6 GHz, then the size of
chan_list in struct scan_req_params which is 40 is not enough to
fill all the channel list of 6 GHz.

Use dynamic memory to save the channel list of scan.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20211129110939.15711-1-quic_wgong@quicinc.com
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath11k/wmi.h

index 0050e2c84888eb5a8d36bbde0c1cfafbf065073c..ffedd22dd1c0de55148daa18070ced2804d22780 100644 (file)
@@ -3501,6 +3501,14 @@ static int ath11k_mac_op_hw_scan(struct ieee80211_hw *hw,
 
        if (req->n_channels) {
                arg.num_chan = req->n_channels;
+               arg.chan_list = kcalloc(arg.num_chan, sizeof(*arg.chan_list),
+                                       GFP_KERNEL);
+
+               if (!arg.chan_list) {
+                       ret = -ENOMEM;
+                       goto exit;
+               }
+
                for (i = 0; i < arg.num_chan; i++)
                        arg.chan_list[i] = req->channels[i]->center_freq;
        }
@@ -3519,6 +3527,8 @@ static int ath11k_mac_op_hw_scan(struct ieee80211_hw *hw,
                                                      ATH11K_MAC_SCAN_TIMEOUT_MSECS));
 
 exit:
+       kfree(arg.chan_list);
+
        if (req->ie_len)
                kfree(arg.extraie.ptr);
 
index 8e8bac1b737089a014c7a83ef9cd3bdcb568fdd5..35f5432357f5a9d00650a96d3716a4fbfa4c6ed8 100644 (file)
@@ -3082,7 +3082,6 @@ enum scan_dwelltime_adaptive_mode {
 
 #define WLAN_SCAN_MAX_NUM_SSID          10
 #define WLAN_SCAN_MAX_NUM_BSSID         10
-#define WLAN_SCAN_MAX_NUM_CHANNELS      40
 
 #define WLAN_SSID_MAX_LEN 32
 
@@ -3303,7 +3302,7 @@ struct scan_req_params {
        u32 num_bssid;
        u32 num_ssids;
        u32 n_probes;
-       u32 chan_list[WLAN_SCAN_MAX_NUM_CHANNELS];
+       u32 *chan_list;
        u32 notify_scan_events;
        struct wlan_ssid ssid[WLAN_SCAN_MAX_NUM_SSID];
        struct wmi_mac_addr bssid_list[WLAN_SCAN_MAX_NUM_BSSID];