diff options
author | Johannes Berg <johannes.berg@intel.com> | 2018-10-16 11:24:47 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2018-11-09 11:20:34 +0100 |
commit | cee7013be9b71082c7ea63c46850157aaa1bf4b1 (patch) | |
tree | ecc0cd1431ff3b615d1d6d3f0500b0e7f36484c2 /net/mac80211/driver-ops.h | |
parent | 9bb7e0f24e7e7d00daa1219b14539e2e602649b2 (diff) | |
download | linux-stable-cee7013be9b71082c7ea63c46850157aaa1bf4b1.tar.gz linux-stable-cee7013be9b71082c7ea63c46850157aaa1bf4b1.tar.bz2 linux-stable-cee7013be9b71082c7ea63c46850157aaa1bf4b1.zip |
mac80211: allow drivers to use peer measurement API
There's nothing much for mac80211 to do, so only pass through
the requests with minimal checks and tracing. The driver must
call cfg80211's results APIs.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/driver-ops.h')
-rw-r--r-- | net/mac80211/driver-ops.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index 0b1747a2313d..3e0d5922a440 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h @@ -1199,6 +1199,40 @@ drv_get_ftm_responder_stats(struct ieee80211_local *local, return ret; } +static inline int drv_start_pmsr(struct ieee80211_local *local, + struct ieee80211_sub_if_data *sdata, + struct cfg80211_pmsr_request *request) +{ + int ret = -EOPNOTSUPP; + + might_sleep(); + if (!check_sdata_in_driver(sdata)) + return -EIO; + + trace_drv_start_pmsr(local, sdata); + + if (local->ops->start_pmsr) + ret = local->ops->start_pmsr(&local->hw, &sdata->vif, request); + trace_drv_return_int(local, ret); + + return ret; +} + +static inline void drv_abort_pmsr(struct ieee80211_local *local, + struct ieee80211_sub_if_data *sdata, + struct cfg80211_pmsr_request *request) +{ + trace_drv_abort_pmsr(local, sdata); + + might_sleep(); + if (!check_sdata_in_driver(sdata)) + return; + + if (local->ops->abort_pmsr) + local->ops->abort_pmsr(&local->hw, &sdata->vif, request); + trace_drv_return_void(local); +} + static inline int drv_start_nan(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct cfg80211_nan_conf *conf) |