On 16-9-2016 10:33, Luca Coelho wrote:
> From: Ayala Beker <ayala.be...@intel.com>
> 
> This code doesn't do much besides allowing to start and
> stop the vif.
> 
> Signed-off-by: Andrei Otcheretianski <andrei.otcheretian...@intel.com>
> Signed-off-by: Emmanuel Grumbach <emmanuel.grumb...@intel.com>
> Signed-off-by: Ayala Beker <ayala.be...@intel.com>
> Signed-off-by: Luca Coelho <luciano.coe...@intel.com>
> ---
>  include/net/mac80211.h    |  9 +++++++++
>  net/mac80211/cfg.c        | 36 ++++++++++++++++++++++++++++++++++
>  net/mac80211/chan.c       |  3 +++
>  net/mac80211/driver-ops.h | 29 ++++++++++++++++++++++++++-
>  net/mac80211/iface.c      |  8 ++++++--
>  net/mac80211/main.c       |  5 +++++
>  net/mac80211/offchannel.c |  3 ++-
>  net/mac80211/trace.h      | 50 
> +++++++++++++++++++++++++++++++++++++++++++++++
>  net/mac80211/util.c       |  3 ++-
>  9 files changed, 141 insertions(+), 5 deletions(-)

[...]

> diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
> index fe35a1c..67b42c8 100644
> --- a/net/mac80211/driver-ops.h
> +++ b/net/mac80211/driver-ops.h
> @@ -163,7 +163,8 @@ static inline void drv_bss_info_changed(struct 
> ieee80211_local *local,
>  
>       if (WARN_ON_ONCE(sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE ||
>                        (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
> -                       !sdata->vif.mu_mimo_owner)))
> +                       !sdata->vif.mu_mimo_owner) ||
> +                      sdata->vif.type == NL80211_IFTYPE_NAN))

Might be more clear to move this up right after P2P_DEVICE check.

>               return;
>  
>       if (!check_sdata_in_driver(sdata))
> @@ -1165,4 +1166,30 @@ static inline void drv_wake_tx_queue(struct 
> ieee80211_local *local,
>       local->ops->wake_tx_queue(&local->hw, &txq->txq);
>  }
>  
> +static inline int drv_start_nan(struct ieee80211_local *local,
> +                             struct ieee80211_sub_if_data *sdata,
> +                             struct cfg80211_nan_conf *conf)
> +{
> +     int ret;
> +
> +     might_sleep();
> +     check_sdata_in_driver(sdata);
> +
> +     trace_drv_start_nan(local, sdata, conf);
> +     ret = local->ops->start_nan(&local->hw, &sdata->vif, conf);
> +     trace_drv_return_int(local, ret);
> +     return ret;
> +}
> +
> +static inline void drv_stop_nan(struct ieee80211_local *local,
> +                             struct ieee80211_sub_if_data *sdata)
> +{
> +     might_sleep();
> +     check_sdata_in_driver(sdata);
> +
> +     trace_drv_stop_nan(local, sdata);
> +     local->ops->stop_nan(&local->hw, &sdata->vif);
> +     trace_drv_return_void(local);
> +}
> +
>  #endif /* __MAC80211_DRIVER_OPS */
> diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
> index e694ca2..507f46a 100644
> --- a/net/mac80211/iface.c
> +++ b/net/mac80211/iface.c
> @@ -327,6 +327,9 @@ static int ieee80211_check_queues(struct 
> ieee80211_sub_if_data *sdata,
>       int n_queues = sdata->local->hw.queues;
>       int i;
>  
> +     if (iftype == NL80211_IFTYPE_NAN)
> +             return 0;
> +
>       if (iftype != NL80211_IFTYPE_P2P_DEVICE) {
>               for (i = 0; i < IEEE80211_NUM_ACS; i++) {
>                       if (WARN_ON_ONCE(sdata->vif.hw_queue[i] ==
> @@ -647,7 +650,8 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool 
> coming_up)
>                       local->fif_probe_req++;
>               }
>  
> -             if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE)
> +             if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
> +                 sdata->vif.type != NL80211_IFTYPE_NAN)

similar check keeps reoccuring in various places so maybe we can create
a helper function for it.

>                       changed |= ieee80211_reset_erp_info(sdata);
>               ieee80211_bss_info_change_notify(sdata, changed);
>  

Regards,
Arend

Reply via email to