aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-06-10 04:21:31 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-14 15:38:17 -0400
commit64592c8fc0e99d445fc3fdedddeb6088e20086f1 (patch)
tree2493358821abc4050b25f8a0bd813b763b188d38 /net/mac80211/mlme.c
parent35f20c14a103ca2c7062999e934a513b83d84de6 (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.c12
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
1785static void ieee80211_sta_work(struct work_struct *work) 1785static 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,