ath10k: use scan burst for hw roc
authorMichal Kazior <michal.kazior@tieto.com>
Tue, 31 Mar 2015 11:03:48 +0000 (11:03 +0000)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 15 Apr 2015 12:07:39 +0000 (15:07 +0300)
This improves chances of getting onto a foreign
channel and thus makes P2P a bit more reliable.

Without scan burst it was possible for firmware to
not switch to foreign channel resulting in "failed
to switch to channel for roc scan" warning. This
would also effectively fail some offchan tx
requests and lead to P2P find/connect taking
longer. This could be observed when other vifs
were running/busy, e.g. with P2P GO.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/mac.c
drivers/net/wireless/ath/ath10k/wmi-tlv.c
drivers/net/wireless/ath/ath10k/wmi.h

index ddf5712835e33976e4e15bd21dddb56ebe82e93d..4e2eee01a4c6b23690c60b9172e5c3de20b6936a 100644 (file)
@@ -5435,6 +5435,7 @@ static int ath10k_remain_on_channel(struct ieee80211_hw *hw,
        arg.max_scan_time = scan_time_msec;
        arg.scan_ctrl_flags |= WMI_SCAN_FLAG_PASSIVE;
        arg.scan_ctrl_flags |= WMI_SCAN_FILTER_PROBE_REQ;
+       arg.burst_duration_ms = duration;
 
        ret = ath10k_start_scan(ar, &arg);
        if (ret) {
index ae120782e737a764617f0c79c9567165814e8f8e..563fde73623c19037be244470abc523db00df971 100644 (file)
@@ -1406,7 +1406,7 @@ ath10k_wmi_tlv_op_gen_start_scan(struct ath10k *ar,
        cmd = (void *)tlv->value;
 
        ath10k_wmi_put_start_scan_common(&cmd->common, arg);
-       cmd->burst_duration_ms = __cpu_to_le32(0);
+       cmd->burst_duration_ms = __cpu_to_le32(arg->burst_duration_ms);
        cmd->num_channels = __cpu_to_le32(arg->n_channels);
        cmd->num_ssids = __cpu_to_le32(arg->n_ssids);
        cmd->num_bssids = __cpu_to_le32(arg->n_bssids);
index d0942b0a4326aba5110616c79b81bfa63ebc7296..e9216192917fbccc81d2d4afe3c2ca8aa1f6165f 100644 (file)
@@ -2169,6 +2169,7 @@ struct wmi_start_scan_arg {
        u32 max_scan_time;
        u32 probe_delay;
        u32 scan_ctrl_flags;
+       u32 burst_duration_ms;
 
        u32 ie_len;
        u32 n_channels;