aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2500usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2500usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 242d59558b79..cdaf93f48263 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -351,6 +351,14 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
351 351
352 if (crypto->cmd == SET_KEY) { 352 if (crypto->cmd == SET_KEY) {
353 /* 353 /*
354 * Disallow to set WEP key other than with index 0,
355 * it is known that not work at least on some hardware.
356 * SW crypto will be used in that case.
357 */
358 if (key->alg == ALG_WEP && key->keyidx != 0)
359 return -EOPNOTSUPP;
360
361 /*
354 * Pairwise key will always be entry 0, but this 362 * Pairwise key will always be entry 0, but this
355 * could collide with a shared key on the same 363 * could collide with a shared key on the same
356 * position... 364 * position...
@@ -376,7 +384,7 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
376 if (key->hw_key_idx > 0 && crypto->cipher != curr_cipher) 384 if (key->hw_key_idx > 0 && crypto->cipher != curr_cipher)
377 return -EOPNOTSUPP; 385 return -EOPNOTSUPP;
378 386
379 rt2500usb_register_multiwrite(rt2x00dev, reg, 387 rt2500usb_register_multiwrite(rt2x00dev, KEY_ENTRY(key->hw_key_idx),
380 crypto->key, sizeof(crypto->key)); 388 crypto->key, sizeof(crypto->key));
381 389
382 /* 390 /*
@@ -817,6 +825,7 @@ static int rt2500usb_init_registers(struct rt2x00_dev *rt2x00dev)
817 rt2500usb_register_write(rt2x00dev, MAC_CSR8, reg); 825 rt2500usb_register_write(rt2x00dev, MAC_CSR8, reg);
818 826
819 rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg); 827 rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
828 rt2x00_set_field16(&reg, TXRX_CSR0_ALGORITHM, CIPHER_NONE);
820 rt2x00_set_field16(&reg, TXRX_CSR0_IV_OFFSET, IEEE80211_HEADER); 829 rt2x00_set_field16(&reg, TXRX_CSR0_IV_OFFSET, IEEE80211_HEADER);
821 rt2x00_set_field16(&reg, TXRX_CSR0_KEY_ID, 0); 830 rt2x00_set_field16(&reg, TXRX_CSR0_KEY_ID, 0);
822 rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg); 831 rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg);