diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index d8d50fb5e823..05a18f43e1bf 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -915,6 +915,14 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, | |||
915 | sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL | | 915 | sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL | |
916 | IEEE80211_STA_BEACON_POLL); | 916 | IEEE80211_STA_BEACON_POLL); |
917 | 917 | ||
918 | /* | ||
919 | * Always handle WMM once after association regardless | ||
920 | * of the first value the AP uses. Setting -1 here has | ||
921 | * that effect because the AP values is an unsigned | ||
922 | * 4-bit value. | ||
923 | */ | ||
924 | sdata->u.mgd.wmm_last_param_set = -1; | ||
925 | |||
918 | ieee80211_led_assoc(local, 1); | 926 | ieee80211_led_assoc(local, 1); |
919 | 927 | ||
920 | sdata->vif.bss_conf.assoc = 1; | 928 | sdata->vif.bss_conf.assoc = 1; |
@@ -934,7 +942,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, | |||
934 | ieee80211_recalc_ps(local, -1); | 942 | ieee80211_recalc_ps(local, -1); |
935 | mutex_unlock(&local->iflist_mtx); | 943 | mutex_unlock(&local->iflist_mtx); |
936 | 944 | ||
937 | netif_start_queue(sdata->dev); | 945 | netif_tx_start_all_queues(sdata->dev); |
938 | netif_carrier_on(sdata->dev); | 946 | netif_carrier_on(sdata->dev); |
939 | } | 947 | } |
940 | 948 | ||
@@ -1066,7 +1074,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, | |||
1066 | * time -- we don't want the scan code to enable queues. | 1074 | * time -- we don't want the scan code to enable queues. |
1067 | */ | 1075 | */ |
1068 | 1076 | ||
1069 | netif_stop_queue(sdata->dev); | 1077 | netif_tx_stop_all_queues(sdata->dev); |
1070 | netif_carrier_off(sdata->dev); | 1078 | netif_carrier_off(sdata->dev); |
1071 | 1079 | ||
1072 | rcu_read_lock(); | 1080 | rcu_read_lock(); |
@@ -1955,7 +1963,9 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, | |||
1955 | rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len); | 1963 | rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len); |
1956 | break; | 1964 | break; |
1957 | case IEEE80211_STYPE_ACTION: | 1965 | case IEEE80211_STYPE_ACTION: |
1958 | /* XXX: differentiate, can only happen for CSA now! */ | 1966 | if (mgmt->u.action.category != WLAN_CATEGORY_SPECTRUM_MGMT) |
1967 | break; | ||
1968 | |||
1959 | ieee80211_sta_process_chanswitch(sdata, | 1969 | ieee80211_sta_process_chanswitch(sdata, |
1960 | &mgmt->u.action.u.chan_switch.sw_elem, | 1970 | &mgmt->u.action.u.chan_switch.sw_elem, |
1961 | ifmgd->associated); | 1971 | ifmgd->associated); |