Skip to content

Commit

Permalink
mac80211: fix remain-on-channel cancellation
Browse files Browse the repository at this point in the history
Ilan's previous commit 1b89452 ("mac80211: handle HW
ROC expired properly") neglected to take into account that
hw_begun was now always set in the software implementation
as well as the offloaded case.

Fix hw_begun to only apply to the offloaded case to make
the check in Ilan's commit safe and correct.

Reported-by: Jouni Malinen <[email protected]>
Signed-off-by: Johannes Berg <[email protected]>
  • Loading branch information
jmberg-intel committed Jan 14, 2016
1 parent e9db455 commit e6a8a3a
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions net/mac80211/offchannel.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,6 @@ static void ieee80211_handle_roc_started(struct ieee80211_roc_work *roc,

roc->start_time = start_time;
roc->started = true;
roc->hw_begun = true;

if (roc->mgmt_tx_cookie) {
if (!WARN_ON(!roc->frame)) {
Expand Down Expand Up @@ -286,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);
}

Expand Down Expand Up @@ -529,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;
}
Expand Down

0 comments on commit e6a8a3a

Please sign in to comment.