diff options
| author | David S. Miller <davem@davemloft.net> | 2012-01-17 12:11:52 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-01-17 12:11:52 -0500 |
| commit | 4144cb2ade46d97b9c41682fd2e9064a59f23a98 (patch) | |
| tree | 4b5ef937b4d0dcede6b1669f03c3b6dccf57d5bc /net/mac80211 | |
| parent | 59f608d84f937cb5e2fd3a0b9f848f200d47ba85 (diff) | |
| parent | 604c4ef1c453a1b2ea2cdf04d2b49afec421ebfa (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Diffstat (limited to 'net/mac80211')
| -rw-r--r-- | net/mac80211/cfg.c | 2 | ||||
| -rw-r--r-- | net/mac80211/rx.c | 1 | ||||
| -rw-r--r-- | net/mac80211/sta_info.c | 6 | ||||
| -rw-r--r-- | net/mac80211/tx.c | 10 | ||||
| -rw-r--r-- | net/mac80211/wpa.c | 19 | ||||
| -rw-r--r-- | net/mac80211/wpa.h | 2 |
6 files changed, 28 insertions, 12 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index e60df48fa4d4..296620d6ca0c 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
| @@ -791,7 +791,7 @@ static int sta_apply_parameters(struct ieee80211_local *local, | |||
| 791 | if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) | 791 | if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) |
| 792 | ret = sta_info_move_state_checked(sta, | 792 | ret = sta_info_move_state_checked(sta, |
| 793 | IEEE80211_STA_AUTHORIZED); | 793 | IEEE80211_STA_AUTHORIZED); |
| 794 | else | 794 | else if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) |
| 795 | ret = sta_info_move_state_checked(sta, | 795 | ret = sta_info_move_state_checked(sta, |
| 796 | IEEE80211_STA_ASSOC); | 796 | IEEE80211_STA_ASSOC); |
| 797 | if (ret) | 797 | if (ret) |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index f407427c642f..751409120769 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
| @@ -1979,6 +1979,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) | |||
| 1979 | mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3, | 1979 | mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3, |
| 1980 | 0, reason, fwd_hdr->addr2, sdata); | 1980 | 0, reason, fwd_hdr->addr2, sdata); |
| 1981 | IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route); | 1981 | IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route); |
| 1982 | kfree_skb(fwd_skb); | ||
| 1982 | return RX_DROP_MONITOR; | 1983 | return RX_DROP_MONITOR; |
| 1983 | } | 1984 | } |
| 1984 | 1985 | ||
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 3c428d4839c7..ff11f6bf8266 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
| @@ -238,9 +238,11 @@ static void sta_unblock(struct work_struct *wk) | |||
| 238 | if (sta->dead) | 238 | if (sta->dead) |
| 239 | return; | 239 | return; |
| 240 | 240 | ||
| 241 | if (!test_sta_flag(sta, WLAN_STA_PS_STA)) | 241 | if (!test_sta_flag(sta, WLAN_STA_PS_STA)) { |
| 242 | local_bh_disable(); | ||
| 242 | ieee80211_sta_ps_deliver_wakeup(sta); | 243 | ieee80211_sta_ps_deliver_wakeup(sta); |
| 243 | else if (test_and_clear_sta_flag(sta, WLAN_STA_PSPOLL)) { | 244 | local_bh_enable(); |
| 245 | } else if (test_and_clear_sta_flag(sta, WLAN_STA_PSPOLL)) { | ||
| 244 | clear_sta_flag(sta, WLAN_STA_PS_DRIVER); | 246 | clear_sta_flag(sta, WLAN_STA_PS_DRIVER); |
| 245 | 247 | ||
| 246 | local_bh_disable(); | 248 | local_bh_disable(); |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index edcd1c7ab83f..e05667cd5e76 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
| @@ -1001,8 +1001,6 @@ ieee80211_tx_h_stats(struct ieee80211_tx_data *tx) | |||
| 1001 | static ieee80211_tx_result debug_noinline | 1001 | static ieee80211_tx_result debug_noinline |
| 1002 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | 1002 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) |
| 1003 | { | 1003 | { |
| 1004 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); | ||
| 1005 | |||
| 1006 | if (!tx->key) | 1004 | if (!tx->key) |
| 1007 | return TX_CONTINUE; | 1005 | return TX_CONTINUE; |
| 1008 | 1006 | ||
| @@ -1017,13 +1015,7 @@ ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | |||
| 1017 | case WLAN_CIPHER_SUITE_AES_CMAC: | 1015 | case WLAN_CIPHER_SUITE_AES_CMAC: |
| 1018 | return ieee80211_crypto_aes_cmac_encrypt(tx); | 1016 | return ieee80211_crypto_aes_cmac_encrypt(tx); |
| 1019 | default: | 1017 | default: |
| 1020 | /* handle hw-only algorithm */ | 1018 | return ieee80211_crypto_hw_encrypt(tx); |
| 1021 | if (info->control.hw_key) { | ||
| 1022 | ieee80211_tx_set_protected(tx); | ||
| 1023 | return TX_CONTINUE; | ||
| 1024 | } | ||
| 1025 | break; | ||
| 1026 | |||
| 1027 | } | 1019 | } |
| 1028 | 1020 | ||
| 1029 | return TX_DROP; | 1021 | return TX_DROP; |
diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index 422b79851ec5..b758350919ff 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c | |||
| @@ -643,3 +643,22 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx) | |||
| 643 | 643 | ||
| 644 | return RX_CONTINUE; | 644 | return RX_CONTINUE; |
| 645 | } | 645 | } |
| 646 | |||
| 647 | ieee80211_tx_result | ||
| 648 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx) | ||
| 649 | { | ||
| 650 | struct sk_buff *skb; | ||
| 651 | struct ieee80211_tx_info *info = NULL; | ||
| 652 | |||
| 653 | skb_queue_walk(&tx->skbs, skb) { | ||
| 654 | info = IEEE80211_SKB_CB(skb); | ||
| 655 | |||
| 656 | /* handle hw-only algorithm */ | ||
| 657 | if (!info->control.hw_key) | ||
| 658 | return TX_DROP; | ||
| 659 | } | ||
| 660 | |||
| 661 | ieee80211_tx_set_protected(tx); | ||
| 662 | |||
| 663 | return TX_CONTINUE; | ||
| 664 | } | ||
diff --git a/net/mac80211/wpa.h b/net/mac80211/wpa.h index baba0608313e..07e33f899c71 100644 --- a/net/mac80211/wpa.h +++ b/net/mac80211/wpa.h | |||
| @@ -32,5 +32,7 @@ ieee80211_tx_result | |||
| 32 | ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx); | 32 | ieee80211_crypto_aes_cmac_encrypt(struct ieee80211_tx_data *tx); |
| 33 | ieee80211_rx_result | 33 | ieee80211_rx_result |
| 34 | ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx); | 34 | ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx); |
| 35 | ieee80211_tx_result | ||
| 36 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx); | ||
| 35 | 37 | ||
| 36 | #endif /* WPA_H */ | 38 | #endif /* WPA_H */ |
