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/mlme.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/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 854ef4ed2cfa..75b896d47ea1 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1653,7 +1653,7 @@ ieee80211_rx_result ieee80211_sta_rx_mgmt(struct ieee80211_sub_if_data *sdata, | |||
1653 | case IEEE80211_STYPE_DISASSOC: | 1653 | case IEEE80211_STYPE_DISASSOC: |
1654 | case IEEE80211_STYPE_ACTION: | 1654 | case IEEE80211_STYPE_ACTION: |
1655 | skb_queue_tail(&sdata->skb_queue, skb); | 1655 | skb_queue_tail(&sdata->skb_queue, skb); |
1656 | ieee80211_queue_work(&local->hw, &sdata->u.mgd.work); | 1656 | ieee80211_queue_work(&local->hw, &sdata->work); |
1657 | return RX_QUEUED; | 1657 | return RX_QUEUED; |
1658 | } | 1658 | } |
1659 | 1659 | ||
@@ -1779,13 +1779,13 @@ static void ieee80211_sta_timer(unsigned long data) | |||
1779 | return; | 1779 | return; |
1780 | } | 1780 | } |
1781 | 1781 | ||
1782 | ieee80211_queue_work(&local->hw, &ifmgd->work); | 1782 | ieee80211_queue_work(&local->hw, &sdata->work); |
1783 | } | 1783 | } |
1784 | 1784 | ||
1785 | static void ieee80211_sta_work(struct work_struct *work) | 1785 | static void ieee80211_sta_work(struct work_struct *work) |
1786 | { | 1786 | { |
1787 | struct ieee80211_sub_if_data *sdata = | 1787 | struct ieee80211_sub_if_data *sdata = |
1788 | container_of(work, struct ieee80211_sub_if_data, u.mgd.work); | 1788 | container_of(work, struct ieee80211_sub_if_data, work); |
1789 | struct ieee80211_local *local = sdata->local; | 1789 | struct ieee80211_local *local = sdata->local; |
1790 | struct ieee80211_if_managed *ifmgd; | 1790 | struct ieee80211_if_managed *ifmgd; |
1791 | struct sk_buff *skb; | 1791 | struct sk_buff *skb; |
@@ -1906,8 +1906,7 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata) | |||
1906 | ieee80211_queue_work(&sdata->local->hw, | 1906 | ieee80211_queue_work(&sdata->local->hw, |
1907 | &sdata->u.mgd.monitor_work); | 1907 | &sdata->u.mgd.monitor_work); |
1908 | /* and do all the other regular work too */ | 1908 | /* and do all the other regular work too */ |
1909 | ieee80211_queue_work(&sdata->local->hw, | 1909 | ieee80211_queue_work(&sdata->local->hw, &sdata->work); |
1910 | &sdata->u.mgd.work); | ||
1911 | } | 1910 | } |
1912 | } | 1911 | } |
1913 | 1912 | ||
@@ -1922,7 +1921,6 @@ void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata) | |||
1922 | * time -- the code here is properly synchronised. | 1921 | * time -- the code here is properly synchronised. |
1923 | */ | 1922 | */ |
1924 | 1923 | ||
1925 | cancel_work_sync(&ifmgd->work); | ||
1926 | cancel_work_sync(&ifmgd->beacon_connection_loss_work); | 1924 | cancel_work_sync(&ifmgd->beacon_connection_loss_work); |
1927 | if (del_timer_sync(&ifmgd->timer)) | 1925 | if (del_timer_sync(&ifmgd->timer)) |
1928 | set_bit(TMR_RUNNING_TIMER, &ifmgd->timers_running); | 1926 | set_bit(TMR_RUNNING_TIMER, &ifmgd->timers_running); |
@@ -1954,7 +1952,7 @@ void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata) | |||
1954 | struct ieee80211_if_managed *ifmgd; | 1952 | struct ieee80211_if_managed *ifmgd; |
1955 | 1953 | ||
1956 | ifmgd = &sdata->u.mgd; | 1954 | ifmgd = &sdata->u.mgd; |
1957 | INIT_WORK(&ifmgd->work, ieee80211_sta_work); | 1955 | INIT_WORK(&sdata->work, ieee80211_sta_work); |
1958 | INIT_WORK(&ifmgd->monitor_work, ieee80211_sta_monitor_work); | 1956 | INIT_WORK(&ifmgd->monitor_work, ieee80211_sta_monitor_work); |
1959 | INIT_WORK(&ifmgd->chswitch_work, ieee80211_chswitch_work); | 1957 | INIT_WORK(&ifmgd->chswitch_work, ieee80211_chswitch_work); |
1960 | INIT_WORK(&ifmgd->beacon_connection_loss_work, | 1958 | INIT_WORK(&ifmgd->beacon_connection_loss_work, |