diff options
| author | Senthil Balasubramanian <senthilkumar@atheros.com> | 2008-09-17 03:09:49 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2008-09-22 16:52:50 -0400 |
| commit | d0be7cc7688d0cc2e4daf952c43b5ce86e5c8a1d (patch) | |
| tree | 95590f674d49123be5950d33ddd3e2c7680da9d4 | |
| parent | ad55dcaff0e34269f86975ce2ea0da22e9eb74a1 (diff) | |
ath9k: connectivity is lost after Group rekeying is done
Connectivtiy is lost after Group rekeying is done. The keytype
maintained by ath9k is reset when group key is updated. Though
sc_keytype can be reset only for broadcast key the proper fix
would be to use mac80211 provided key type from txinfo during
xmit and get rid of sc_keytype from ath9k ath_softc.
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Tested-by: Steven Noonan <steven@uplinklabs.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | drivers/net/wireless/ath9k/core.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath9k/main.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath9k/xmit.c | 6 |
3 files changed, 3 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath9k/core.h b/drivers/net/wireless/ath9k/core.h index 4ee695b76b88..2f84093331ee 100644 --- a/drivers/net/wireless/ath9k/core.h +++ b/drivers/net/wireless/ath9k/core.h | |||
| @@ -974,7 +974,6 @@ struct ath_softc { | |||
| 974 | u32 sc_keymax; /* size of key cache */ | 974 | u32 sc_keymax; /* size of key cache */ |
| 975 | DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */ | 975 | DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */ |
| 976 | u8 sc_splitmic; /* split TKIP MIC keys */ | 976 | u8 sc_splitmic; /* split TKIP MIC keys */ |
| 977 | int sc_keytype; | ||
| 978 | 977 | ||
| 979 | /* RX */ | 978 | /* RX */ |
| 980 | struct list_head sc_rxbuf; | 979 | struct list_head sc_rxbuf; |
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index 99badf1404c3..099719649c98 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
| @@ -206,8 +206,6 @@ static int ath_key_config(struct ath_softc *sc, | |||
| 206 | if (!ret) | 206 | if (!ret) |
| 207 | return -EIO; | 207 | return -EIO; |
| 208 | 208 | ||
| 209 | if (mac) | ||
| 210 | sc->sc_keytype = hk.kv_type; | ||
| 211 | return 0; | 209 | return 0; |
| 212 | } | 210 | } |
| 213 | 211 | ||
| @@ -778,7 +776,6 @@ static int ath9k_set_key(struct ieee80211_hw *hw, | |||
| 778 | case DISABLE_KEY: | 776 | case DISABLE_KEY: |
| 779 | ath_key_delete(sc, key); | 777 | ath_key_delete(sc, key); |
| 780 | clear_bit(key->keyidx, sc->sc_keymap); | 778 | clear_bit(key->keyidx, sc->sc_keymap); |
| 781 | sc->sc_keytype = ATH9K_CIPHER_CLR; | ||
| 782 | break; | 779 | break; |
| 783 | default: | 780 | default: |
| 784 | ret = -EINVAL; | 781 | ret = -EINVAL; |
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c index 550129f717e2..8b332e11a656 100644 --- a/drivers/net/wireless/ath9k/xmit.c +++ b/drivers/net/wireless/ath9k/xmit.c | |||
| @@ -315,11 +315,11 @@ static int ath_tx_prepare(struct ath_softc *sc, | |||
| 315 | txctl->keyix = tx_info->control.hw_key->hw_key_idx; | 315 | txctl->keyix = tx_info->control.hw_key->hw_key_idx; |
| 316 | txctl->frmlen += tx_info->control.icv_len; | 316 | txctl->frmlen += tx_info->control.icv_len; |
| 317 | 317 | ||
| 318 | if (sc->sc_keytype == ATH9K_CIPHER_WEP) | 318 | if (tx_info->control.hw_key->alg == ALG_WEP) |
| 319 | txctl->keytype = ATH9K_KEY_TYPE_WEP; | 319 | txctl->keytype = ATH9K_KEY_TYPE_WEP; |
| 320 | else if (sc->sc_keytype == ATH9K_CIPHER_TKIP) | 320 | else if (tx_info->control.hw_key->alg == ALG_TKIP) |
| 321 | txctl->keytype = ATH9K_KEY_TYPE_TKIP; | 321 | txctl->keytype = ATH9K_KEY_TYPE_TKIP; |
| 322 | else if (sc->sc_keytype == ATH9K_CIPHER_AES_CCM) | 322 | else if (tx_info->control.hw_key->alg == ALG_CCMP) |
| 323 | txctl->keytype = ATH9K_KEY_TYPE_AES; | 323 | txctl->keytype = ATH9K_KEY_TYPE_AES; |
| 324 | } | 324 | } |
| 325 | 325 | ||
