diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-06-10 04:21:31 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-14 15:38:17 -0400 |
commit | 64592c8fc0e99d445fc3fdedddeb6088e20086f1 (patch) | |
tree | 2493358821abc4050b25f8a0bd813b763b188d38 /net/mac80211/iface.c | |
parent | 35f20c14a103ca2c7062999e934a513b83d84de6 (diff) |
mac80211: use common work struct
IBSS, managed and mesh modes all have their
own work struct, and in the future we want
to also use it in other modes to process
frames from the now common skb queue.
This also makes the skb queue and work safe
to use from other interface types.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r-- | net/mac80211/iface.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 56167a3d872d..de7ddc303a5f 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -460,17 +460,14 @@ static int ieee80211_stop(struct net_device *dev) | |||
460 | * whether the interface is running, which, at this point, | 460 | * whether the interface is running, which, at this point, |
461 | * it no longer is. | 461 | * it no longer is. |
462 | */ | 462 | */ |
463 | cancel_work_sync(&sdata->u.mgd.work); | ||
464 | cancel_work_sync(&sdata->u.mgd.chswitch_work); | 463 | cancel_work_sync(&sdata->u.mgd.chswitch_work); |
465 | cancel_work_sync(&sdata->u.mgd.monitor_work); | 464 | cancel_work_sync(&sdata->u.mgd.monitor_work); |
466 | cancel_work_sync(&sdata->u.mgd.beacon_connection_loss_work); | 465 | cancel_work_sync(&sdata->u.mgd.beacon_connection_loss_work); |
467 | 466 | ||
468 | /* fall through */ | 467 | /* fall through */ |
469 | case NL80211_IFTYPE_ADHOC: | 468 | case NL80211_IFTYPE_ADHOC: |
470 | if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { | 469 | if (sdata->vif.type == NL80211_IFTYPE_ADHOC) |
471 | del_timer_sync(&sdata->u.ibss.timer); | 470 | del_timer_sync(&sdata->u.ibss.timer); |
472 | cancel_work_sync(&sdata->u.ibss.work); | ||
473 | } | ||
474 | /* fall through */ | 471 | /* fall through */ |
475 | case NL80211_IFTYPE_MESH_POINT: | 472 | case NL80211_IFTYPE_MESH_POINT: |
476 | if (ieee80211_vif_is_mesh(&sdata->vif)) { | 473 | if (ieee80211_vif_is_mesh(&sdata->vif)) { |
@@ -485,6 +482,7 @@ static int ieee80211_stop(struct net_device *dev) | |||
485 | } | 482 | } |
486 | /* fall through */ | 483 | /* fall through */ |
487 | default: | 484 | default: |
485 | cancel_work_sync(&sdata->work); | ||
488 | /* | 486 | /* |
489 | * When we get here, the interface is marked down. | 487 | * When we get here, the interface is marked down. |
490 | * Call synchronize_rcu() to wait for the RX path | 488 | * Call synchronize_rcu() to wait for the RX path |