Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 368421
b: refs/heads/master
c: 153a5fc
h: refs/heads/master
i:
  368419: 104f654
v: v3
  • Loading branch information
Stanislaw Gruszka authored and Johannes Berg committed Mar 6, 2013
1 parent d2e46c1 commit 7ae0fb5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 690205f18fd069898c70d743f498ba42798e5c4e
refs/heads/master: 153a5fc4107902a5e053bf4937a9250a1f8da574
47 changes: 22 additions & 25 deletions trunk/net/mac80211/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -1357,6 +1357,25 @@ void ieee80211_stop_device(struct ieee80211_local *local)
drv_stop(local);
}

static void ieee80211_assign_chanctx(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata)
{
struct ieee80211_chanctx_conf *conf;
struct ieee80211_chanctx *ctx;

if (!local->use_chanctx)
return;

mutex_lock(&local->chanctx_mtx);
conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
lockdep_is_held(&local->chanctx_mtx));
if (conf) {
ctx = container_of(conf, struct ieee80211_chanctx, conf);
drv_assign_vif_chanctx(local, sdata, ctx);
}
mutex_unlock(&local->chanctx_mtx);
}

int ieee80211_reconfig(struct ieee80211_local *local)
{
struct ieee80211_hw *hw = &local->hw;
Expand Down Expand Up @@ -1445,36 +1464,14 @@ int ieee80211_reconfig(struct ieee80211_local *local)
}

list_for_each_entry(sdata, &local->interfaces, list) {
struct ieee80211_chanctx_conf *ctx_conf;

if (!ieee80211_sdata_running(sdata))
continue;

mutex_lock(&local->chanctx_mtx);
ctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
lockdep_is_held(&local->chanctx_mtx));
if (ctx_conf) {
ctx = container_of(ctx_conf, struct ieee80211_chanctx,
conf);
drv_assign_vif_chanctx(local, sdata, ctx);
}
mutex_unlock(&local->chanctx_mtx);
ieee80211_assign_chanctx(local, sdata);
}

sdata = rtnl_dereference(local->monitor_sdata);
if (sdata && local->use_chanctx && ieee80211_sdata_running(sdata)) {
struct ieee80211_chanctx_conf *ctx_conf;

mutex_lock(&local->chanctx_mtx);
ctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
lockdep_is_held(&local->chanctx_mtx));
if (ctx_conf) {
ctx = container_of(ctx_conf, struct ieee80211_chanctx,
conf);
drv_assign_vif_chanctx(local, sdata, ctx);
}
mutex_unlock(&local->chanctx_mtx);
}
if (sdata && ieee80211_sdata_running(sdata))
ieee80211_assign_chanctx(local, sdata);

/* add STAs back */
mutex_lock(&local->sta_mtx);
Expand Down

0 comments on commit 7ae0fb5

Please sign in to comment.