wprobe: fix moving average
[openwrt.git] / package / mac80211 / patches / 303-rt2x00-Implement-support-for-rt2800usb.patch
index 7a25490..c9152fd 100644 (file)
@@ -1,6 +1,6 @@
-From b249bc450f982cd2491448c91faf797ed37b69b8 Mon Sep 17 00:00:00 2001
+From 101b65d221593c1bdeacf0c6085d885ea5447c4c Mon Sep 17 00:00:00 2001
 From: Ivo van Doorn <IvDoorn@gmail.com>
-Date: Tue, 3 Mar 2009 19:25:49 +0100
+Date: Sat, 14 Mar 2009 20:46:40 +0100
 Subject: [PATCH] rt2x00: Implement support for rt2800usb
 
 Add support for the rt2800usb chipset.
@@ -16,9 +16,9 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
  drivers/net/wireless/rt2x00/Kconfig     |   14 +
  drivers/net/wireless/rt2x00/Makefile    |    1 +
  drivers/net/wireless/rt2x00/rt2800usb.c | 3032 +++++++++++++++++++++++++++++++
- drivers/net/wireless/rt2x00/rt2800usb.h | 1932 ++++++++++++++++++++
+ drivers/net/wireless/rt2x00/rt2800usb.h | 1934 ++++++++++++++++++++
  drivers/net/wireless/rt2x00/rt2x00.h    |    7 +
- 5 files changed, 4986 insertions(+), 0 deletions(-)
+ 5 files changed, 4988 insertions(+), 0 deletions(-)
  create mode 100644 drivers/net/wireless/rt2x00/rt2800usb.c
  create mode 100644 drivers/net/wireless/rt2x00/rt2800usb.h
 
@@ -397,10 +397,11 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +      rt2x00usb_register_read(rt2x00dev, offset, &reg);
 +      rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_KEYTAB,
 +                         !!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE));
-+      rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_CIPHER, crypto->cipher);
++      rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_CIPHER,
++                         (crypto->cmd == SET_KEY) * crypto->cipher);
 +      rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_BSS_IDX,
 +                         (crypto->cmd == SET_KEY) * crypto->bssidx);
-+      rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_RX_WIUDF, 0);
++      rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_RX_WIUDF, crypto->cipher);
 +      rt2x00usb_register_write(rt2x00dev, offset, reg);
 +
 +      offset = MAC_IVEIV_ENTRY(key->hw_key_idx);
@@ -459,10 +460,10 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +       * Using the correct defines correctly will cause overhead,
 +       * so just calculate the correct offset.
 +       */
-+      field.bit_offset = (4 * key->keyidx) + (16 * (crypto->bssidx & 1));
++      field.bit_offset = 4 * (key->hw_key_idx % 8);
 +      field.bit_mask = 0x7 << field.bit_offset;
 +
-+      offset = SHARED_KEY_MODE_ENTRY(key->hw_key_idx / 2);
++      offset = SHARED_KEY_MODE_ENTRY(key->hw_key_idx / 8);
 +
 +      rt2x00usb_register_read(rt2x00dev, offset, &reg);
 +      rt2x00_set_field32(&reg, field,
@@ -488,9 +489,13 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +      if (crypto->cmd == SET_KEY) {
 +              /*
 +               * 1 pairwise key is possible per AID, this means that the AID
-+               * equals our hw_key_idx.
++               * equals our hw_key_idx. Make sure the WCID starts _after_ the
++               * last possible shared key entry.
 +               */
-+              key->hw_key_idx = crypto->aid;
++              if (crypto->aid > (256 - 32))
++                      return -ENOSPC;
++
++              key->hw_key_idx = 32 + crypto->aid;
 +
 +              memcpy(key_entry.key, crypto->key,
 +                     sizeof(key_entry.key));
@@ -2183,12 +2188,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +              rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC;
 +
 +      if (test_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags)) {
-+              /*
-+               * Unfortunately we don't know the cipher type used during
-+               * decryption. This prevents us from correct providing
-+               * correct statistics through debugfs.
-+               */
-+              rxdesc->cipher = CIPHER_NONE;
++              rxdesc->cipher = rt2x00_get_field32(rxwi0, RXWI_W0_UDF);
 +              rxdesc->cipher_status =
 +                  rt2x00_get_field32(rxd0, RXD_W0_CIPHER_ERROR);
 +      }
@@ -2227,7 +2227,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +      /*
 +       * Mask of 0x8 bit to remove the short preamble flag.
 +       */
-+      if (rxdesc->dev_flags == RATE_MODE_CCK)
++      if (rxdesc->rate_mode == RATE_MODE_CCK)
 +              rxdesc->signal &= ~0x8;
 +
 +      rxdesc->rssi =
@@ -3066,7 +3066,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +module_exit(rt2800usb_exit);
 --- /dev/null
 +++ b/drivers/net/wireless/rt2x00/rt2800usb.h
-@@ -0,0 +1,1932 @@
+@@ -0,0 +1,1934 @@
 +/*
 +      Copyright (C) 2004 - 2009 rt2x00 SourceForge Project
 +      <http://rt2x00.serialmonkey.com>
@@ -4783,6 +4783,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 + */
 +#define MCU_SLEEP                     0x30
 +#define MCU_WAKEUP                    0x31
++#define MCU_RADIO_OFF                 0x35
 +#define MCU_LED                               0x50
 +#define MCU_LED_STRENGTH              0x51
 +#define MCU_LED_1                     0x52
@@ -4790,6 +4791,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +#define MCU_LED_3                     0x54
 +#define MCU_RADAR                     0x60
 +#define MCU_BOOT_SIGNAL                       0x72
++#define MCU_BBP_SIGNAL                        0x80
 +
 +/*
 + * DMA descriptor defines.
@@ -5001,15 +5003,15 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
 +#endif /* RT2800USB_H */
 --- a/drivers/net/wireless/rt2x00/rt2x00.h
 +++ b/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -142,6 +142,7 @@ struct rt2x00_chip {
- #define RT2860D               0x0681  /* 2.4GHz, 5GHz PCI/CB */
- #define RT2890                0x0701  /* 2.4GHz PCIe */
+@@ -144,6 +144,7 @@ struct rt2x00_chip {
  #define RT2890D               0x0781  /* 2.4GHz, 5GHz PCIe */
+ #define RT2880                0x2880  /* WSOC */
+ #define RT3052                0x3052  /* WSOC */
 +#define RT2870                0x1600
  
        u16 rf;
        u32 rev;
-@@ -780,6 +781,12 @@ struct rt2x00_dev {
+@@ -788,6 +789,12 @@ struct rt2x00_dev {
        u8 freq_offset;
  
        /*
This page took 0.023609 seconds and 4 git commands to generate.