summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-04-09 13:29:25 (GMT)
committerJohannes Berg <johannes.berg@intel.com>2014-04-25 15:08:15 (GMT)
commit093324816b91c9f4a3dd8c78930e43d0a2ef2508 (patch)
tree0cba2cad7238206a7d565dd10d57a2b2d5a08412
parentc2b90ad8800db308cdc0db9750c7c0baa07f40d0 (diff)
downloadlinux-093324816b91c9f4a3dd8c78930e43d0a2ef2508.tar.xz
mac80211: add support for radar detection for reservations
Initial chanctx reservation code wasn't aware of radar detection requirements. This is necessary for chanctx reservations to be used for channel switching in the future. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/chan.c5
-rw-r--r--net/mac80211/ieee80211_i.h4
2 files changed, 7 insertions, 2 deletions
diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c
index fcb2cd8..4ed229c 100644
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
@@ -742,7 +742,8 @@ int ieee80211_vif_unreserve_chanctx(struct ieee80211_sub_if_data *sdata)
int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata,
const struct cfg80211_chan_def *chandef,
- enum ieee80211_chanctx_mode mode)
+ enum ieee80211_chanctx_mode mode,
+ bool radar_required)
{
struct ieee80211_local *local = sdata->local;
struct ieee80211_chanctx_conf *conf;
@@ -786,6 +787,7 @@ int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata,
new_ctx->refcount++;
sdata->reserved_chanctx = new_ctx;
sdata->reserved_chandef = *chandef;
+ sdata->reserved_radar_required = radar_required;
out:
mutex_unlock(&local->chanctx_mtx);
return ret;
@@ -830,6 +832,7 @@ int ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata,
/* unref our reservation */
ctx->refcount--;
sdata->reserved_chanctx = NULL;
+ sdata->radar_required = sdata->reserved_radar_required;
if (old_ctx == ctx) {
/* This is our own context, just change it */
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index bfc3ca5..4018ba1 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -759,6 +759,7 @@ struct ieee80211_sub_if_data {
/* context reservation -- protected with chanctx_mtx */
struct ieee80211_chanctx *reserved_chanctx;
struct cfg80211_chan_def reserved_chandef;
+ bool reserved_radar_required;
/* used to reconfigure hardware SM PS */
struct work_struct recalc_smps;
@@ -1777,7 +1778,8 @@ ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata,
int __must_check
ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata,
const struct cfg80211_chan_def *chandef,
- enum ieee80211_chanctx_mode mode);
+ enum ieee80211_chanctx_mode mode,
+ bool radar_required);
int __must_check
ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata,
u32 *changed);