aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ibss.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/ibss.c')
-rw-r--r--net/mac80211/ibss.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index a9ff904620db..18c4266cca1f 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -761,7 +761,7 @@ static void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
761static void ieee80211_ibss_work(struct work_struct *work) 761static void ieee80211_ibss_work(struct work_struct *work)
762{ 762{
763 struct ieee80211_sub_if_data *sdata = 763 struct ieee80211_sub_if_data *sdata =
764 container_of(work, struct ieee80211_sub_if_data, u.ibss.work); 764 container_of(work, struct ieee80211_sub_if_data, work);
765 struct ieee80211_local *local = sdata->local; 765 struct ieee80211_local *local = sdata->local;
766 struct ieee80211_if_ibss *ifibss; 766 struct ieee80211_if_ibss *ifibss;
767 struct sk_buff *skb; 767 struct sk_buff *skb;
@@ -804,7 +804,7 @@ static void ieee80211_queue_ibss_work(struct ieee80211_sub_if_data *sdata)
804 struct ieee80211_local *local = sdata->local; 804 struct ieee80211_local *local = sdata->local;
805 805
806 set_bit(IEEE80211_IBSS_REQ_RUN, &ifibss->request); 806 set_bit(IEEE80211_IBSS_REQ_RUN, &ifibss->request);
807 ieee80211_queue_work(&local->hw, &ifibss->work); 807 ieee80211_queue_work(&local->hw, &sdata->work);
808} 808}
809 809
810static void ieee80211_ibss_timer(unsigned long data) 810static void ieee80211_ibss_timer(unsigned long data)
@@ -827,7 +827,6 @@ void ieee80211_ibss_quiesce(struct ieee80211_sub_if_data *sdata)
827{ 827{
828 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 828 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
829 829
830 cancel_work_sync(&ifibss->work);
831 if (del_timer_sync(&ifibss->timer)) 830 if (del_timer_sync(&ifibss->timer))
832 ifibss->timer_running = true; 831 ifibss->timer_running = true;
833} 832}
@@ -847,7 +846,7 @@ void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata)
847{ 846{
848 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; 847 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
849 848
850 INIT_WORK(&ifibss->work, ieee80211_ibss_work); 849 INIT_WORK(&sdata->work, ieee80211_ibss_work);
851 setup_timer(&ifibss->timer, ieee80211_ibss_timer, 850 setup_timer(&ifibss->timer, ieee80211_ibss_timer,
852 (unsigned long) sdata); 851 (unsigned long) sdata);
853} 852}
@@ -890,7 +889,7 @@ ieee80211_ibss_rx_mgmt(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
890 case IEEE80211_STYPE_PROBE_REQ: 889 case IEEE80211_STYPE_PROBE_REQ:
891 case IEEE80211_STYPE_AUTH: 890 case IEEE80211_STYPE_AUTH:
892 skb_queue_tail(&sdata->skb_queue, skb); 891 skb_queue_tail(&sdata->skb_queue, skb);
893 ieee80211_queue_work(&local->hw, &sdata->u.ibss.work); 892 ieee80211_queue_work(&local->hw, &sdata->work);
894 return RX_QUEUED; 893 return RX_QUEUED;
895 } 894 }
896 895
@@ -956,7 +955,7 @@ int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
956 ieee80211_recalc_idle(sdata->local); 955 ieee80211_recalc_idle(sdata->local);
957 956
958 set_bit(IEEE80211_IBSS_REQ_RUN, &sdata->u.ibss.request); 957 set_bit(IEEE80211_IBSS_REQ_RUN, &sdata->u.ibss.request);
959 ieee80211_queue_work(&sdata->local->hw, &sdata->u.ibss.work); 958 ieee80211_queue_work(&sdata->local->hw, &sdata->work);
960 959
961 return 0; 960 return 0;
962} 961}
@@ -967,7 +966,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)
967 966
968 del_timer_sync(&sdata->u.ibss.timer); 967 del_timer_sync(&sdata->u.ibss.timer);
969 clear_bit(IEEE80211_IBSS_REQ_RUN, &sdata->u.ibss.request); 968 clear_bit(IEEE80211_IBSS_REQ_RUN, &sdata->u.ibss.request);
970 cancel_work_sync(&sdata->u.ibss.work); 969 cancel_work_sync(&sdata->work);
971 clear_bit(IEEE80211_IBSS_REQ_RUN, &sdata->u.ibss.request); 970 clear_bit(IEEE80211_IBSS_REQ_RUN, &sdata->u.ibss.request);
972 971
973 sta_info_flush(sdata->local, sdata); 972 sta_info_flush(sdata->local, sdata);