This fixes crypto-RX on new firmware.

Signed-off-by: Michael Buesch <[EMAIL PROTECTED]>

Index: wireless-dev-new/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/main.c       2007-08-23 
23:36:22.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/main.c    2007-08-23 
23:40:23.000000000 +0200
@@ -730,13 +730,18 @@ static void key_write(struct b43_wldev *
 static void keymac_write(struct b43_wldev *dev, u8 index, const u8 * addr)
 {
        u32 addrtmp[2];
+       u8 per_sta_keys_start = 8;
 
-       B43_WARN_ON(index < 4 + 4);
-       /* We have two default TX keys and two default RX keys.
-        * Physical mac 0 is mapped to physical key 8.
+       if (b43_new_kidx_api(dev))
+               per_sta_keys_start = 4;
+
+       B43_WARN_ON(index < per_sta_keys_start);
+       /* We have two default TX keys and possibly two default RX keys.
+        * Physical mac 0 is mapped to physical key 4 or 8, depending
+        * on the firmware version.
         * So we must adjust the index here.
         */
-       index -= 8;
+       index -= per_sta_keys_start;
 
        addrtmp[0] = addr[0];
        addrtmp[0] |= ((u32) (addr[1]) << 8);
@@ -774,16 +779,20 @@ static void do_key_write(struct b43_wlde
                         const u8 * key, size_t key_len, const u8 * mac_addr)
 {
        u8 buf[B43_SEC_KEYSIZE];
+       u8 per_sta_keys_start = 8;
+
+       if (b43_new_kidx_api(dev))
+               per_sta_keys_start = 4;
 
        B43_WARN_ON(index >= dev->max_nr_keys);
        B43_WARN_ON(key_len > B43_SEC_KEYSIZE);
 
        memset(buf, 0, sizeof(buf));
-       if (index >= 8)
+       if (index >= per_sta_keys_start)
                keymac_write(dev, index, buf);  /* First zero out mac. */
        memcpy(buf, key, key_len);
        key_write(dev, index, algorithm, buf);
-       if (index >= 8)
+       if (index >= per_sta_keys_start)
                keymac_write(dev, index, mac_addr);
 
        dev->key[index].algorithm = algorithm;

-- 

_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to