On Thu, 2018-08-02 at 09:00 +0530, Sushant Kumar Mishra wrote:
> From: Sanjay Kumar Koduri <[email protected]>
>
> Currently, software scan in mac80211 is used by drivers, which don't
> implement hardware scan. However some drivers which have implemented
> hardware scan may also sometimes want to use software scan in mac80211.
> Such drivers can return '-EPERM' and ask mac80211 to fallback to
> software scan with this patch.
>
> Signed-off-by: Sanjay Kumar konduri <[email protected]>
> Signed-off-by: Siva Rebbagondla <[email protected]>
> Signed-off-by: Sushant Kumar Mishra <[email protected]>
> ---
> changes in v3: Set SCAN_HW_CANCELLED bit, before SW_SCAN triggered.
I'm not convinced - why would you set that? It seems to me that drivers
might, for example, still do one band in hardware and the other in
software, or something like that? You might also run into the WARN_ON
here?
> @@ -686,6 +686,11 @@ static int __ieee80211_start_scan(struct
> ieee80211_sub_if_data *sdata,
> if (local->ops->hw_scan) {
> WARN_ON(!ieee80211_prep_hw_scan(local));
> rc = drv_hw_scan(local, sdata, local->hw_scan_req);
> + if (rc == -EPERM) {
> + set_bit(SCAN_HW_CANCELLED, &local->scanning);
> + __set_bit(SCAN_SW_SCANNING, &local->scanning);
> + rc = ieee80211_start_sw_scan(local, sdata);
> + }
Also, -EPERM is probably not a good idea - we might want to let the
driver propagate arbitrary return values up. There's precedent for using
a positive number (just the value 1) for such "special" behaviour, so I
think that'd be better.
Obviously this is also lacking documentation in mac80211.h one way or
the other.
johannes