[RFC] wmi: Handle failure to start scan.

Michal Kazior michal.kazior at tieto.com
Fri Feb 14 01:47:58 EST 2014


On 13 February 2014 20:09,  <greearb at candelatech.com> wrote:
> From: Ben Greear <greearb at candelatech.com>
>
> Properly clean up driver state in case firmware fails
> to start scan for some reason.
>
> Signed-off-by: Ben Greear <greearb at candelatech.com>
> ---
>  drivers/net/wireless/ath/ath10k/wmi.c | 20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
> index 20f7c79..a5be0d3 100644
> --- a/drivers/net/wireless/ath/ath10k/wmi.c
> +++ b/drivers/net/wireless/ath/ath10k/wmi.c
> @@ -770,7 +770,25 @@ static int ath10k_wmi_event_scan(struct ath10k *ar, struct sk_buff *skb)
>                 ath10k_dbg(ATH10K_DBG_WMI, "WMI_SCAN_EVENT_PREEMPTED\n");
>                 break;
>         case WMI_SCAN_EVENT_START_FAILED:
> -               ath10k_dbg(ATH10K_DBG_WMI, "WMI_SCAN_EVENT_START_FAILED\n");
> +               ath10k_warn("WMI_SCAN_EVENT_START_FAILED, reason: %i\n", reason);
> +
> +               ar->scan_channel = NULL;
> +               if (!ar->scan.in_progress) {
> +                       ath10k_warn("scan-start-failed: no scan requested, ignoring\n");
> +                       break;
> +               }
> +
> +               if (ar->scan.is_roc) {
> +                       ath10k_offchan_tx_purge(ar);
> +
> +                       if (!ar->scan.aborting)
> +                               ieee80211_remain_on_channel_expired(ar->hw);
> +               } else {
> +                       ieee80211_scan_completed(ar->hw, ar->scan.aborting);
> +               }
> +
> +               del_timer(&ar->scan.timeout);
> +               ar->scan.in_progress = false;
>                 break;
>         default:
>                 break;

We already wait for EVENT_STARTED in mac.c (see ath10k_start_scan) and
clean up stuff (ath10k_abort_scan). Why not add the missing bits in
there? Or is it possible to get EVENT_START_FAILED *after*
EVENT_STARTED? Or am I missing something else here?


Michał



More information about the ath10k mailing list