diff options
author | John W. Linville <linville@tuxdriver.com> | 2015-12-10 15:08:06 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2015-12-10 15:08:06 -0500 |
commit | 02187c809fefe8692a4c3dab53e0048827067ef5 (patch) | |
tree | c8d746e8ae24c8bec786f84d592b53fc62aae349 | |
parent | f5feec4244464225c03ccc9ddad615cb43a044cc (diff) | |
parent | b915a36315ad416ee6ff128861872613409db6a0 (diff) | |
download | wireless-testing-02187c809fefe8692a4c3dab53e0048827067ef5.tar.gz |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
-rw-r--r-- | net/mac80211/offchannel.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c index 8b2f4eaac2ba6..fbc34e9088ded 100644 --- a/net/mac80211/offchannel.c +++ b/net/mac80211/offchannel.c @@ -252,14 +252,11 @@ static bool ieee80211_recalc_sw_work(struct ieee80211_local *local, static void ieee80211_handle_roc_started(struct ieee80211_roc_work *roc, unsigned long start_time) { - struct ieee80211_local *local = roc->sdata->local; - if (WARN_ON(roc->notified)) return; roc->start_time = start_time; roc->started = true; - roc->hw_begun = true; if (roc->mgmt_tx_cookie) { if (!WARN_ON(!roc->frame)) { @@ -274,9 +271,6 @@ static void ieee80211_handle_roc_started(struct ieee80211_roc_work *roc, } roc->notified = true; - - if (!local->ops->remain_on_channel) - ieee80211_recalc_sw_work(local, start_time); } static void ieee80211_hw_roc_start(struct work_struct *work) @@ -291,6 +285,7 @@ static void ieee80211_hw_roc_start(struct work_struct *work) if (!roc->started) break; + roc->hw_begun = true; ieee80211_handle_roc_started(roc, local->hw_roc_start_time); } @@ -534,8 +529,10 @@ ieee80211_coalesce_hw_started_roc(struct ieee80211_local *local, * begin, otherwise they'll both be marked properly by the work * struct that runs once the driver notifies us of the beginning */ - if (cur_roc->hw_begun) + if (cur_roc->hw_begun) { + new_roc->hw_begun = true; ieee80211_handle_roc_started(new_roc, now); + } return true; } @@ -658,6 +655,7 @@ static int ieee80211_start_roc_work(struct ieee80211_local *local, queued = true; roc->on_channel = tmp->on_channel; ieee80211_handle_roc_started(roc, now); + ieee80211_recalc_sw_work(local, now); break; } |