wl1271: Fix WEP key handling
authorJuuso Oikarinen <juuso.oikarinen@nokia.com>
Thu, 18 Feb 2010 11:25:50 +0000 (13:25 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 19 Feb 2010 20:52:46 +0000 (15:52 -0500)
WEP key index handling was broken: the default key when using key 0 was never
specified to the FW, and if using other default than 0, it would be set on the
TX path for every single TX'd frame.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1271_main.c
drivers/net/wireless/wl12xx/wl1271_tx.c

index 4a0a15bcd67e3155d4e312f3d02c42150b13dc2e..459d9a0931f492d0924b03c1f00ed8f31e83afd8 100644 (file)
@@ -1475,6 +1475,14 @@ static int wl1271_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
                        wl1271_error("Could not add or replace key");
                        goto out_sleep;
                }
+
+               /* the default WEP key needs to be configured at least once */
+               if (key_type == KEY_WEP) {
+                       ret = wl1271_cmd_set_default_wep_key(wl,
+                                                            wl->default_key);
+                       if (ret < 0)
+                               goto out_sleep;
+               }
                break;
 
        case DISABLE_KEY:
index f6815a9239e5360291ae940eddfca03e8d9dd4fb..f9e06385d9fe2a3e3c56c1bb31fcc57a3ac557be 100644 (file)
@@ -203,6 +203,7 @@ static int wl1271_tx_frame(struct wl1271 *wl, struct sk_buff *skb)
                        ret = wl1271_cmd_set_default_wep_key(wl, idx);
                        if (ret < 0)
                                return ret;
+                       wl->default_key = idx;
                }
        }