diff options
Diffstat (limited to 'net/mac80211/ibss.c')
-rw-r--r-- | net/mac80211/ibss.c | 13 |
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, | |||
761 | static void ieee80211_ibss_work(struct work_struct *work) | 761 | static 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 | ||
810 | static void ieee80211_ibss_timer(unsigned long data) | 810 | static 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); |