summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2011-08-14 12:17:31 +0200
committerLuciano Coelho <coelho@ti.com>2011-08-22 11:35:30 +0200
commit010d3d30a218fba961bd3d250a59b0ce9d5278f3 (patch)
treea18a95539b6384c50ae866ef64095d1b98d25a52 /drivers/net
parentwl12xx: use ap_bcast_hlid for recorded keys (diff)
downloadlinux-010d3d30a218fba961bd3d250a59b0ce9d5278f3.tar.xz
linux-010d3d30a218fba961bd3d250a59b0ce9d5278f3.zip
wl12xx: don't remove key if hlid was already deleted
When wep key was removed after disconnection, sta_hlid was invalid, and it resulted in a fw crash. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/wl12xx/main.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index 360e33ed3ddb..c917f69f0069 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -2625,6 +2625,11 @@ static int wl1271_set_key(struct wl1271 *wl, u16 action, u8 id, u8 key_type,
if (action == KEY_REMOVE && !is_broadcast_ether_addr(addr))
return 0;
+ /* don't remove key if hlid was already deleted */
+ if (action == KEY_REMOVE &&
+ wl->sta_hlid == WL12XX_INVALID_LINK_ID)
+ return 0;
+
ret = wl1271_cmd_set_sta_key(wl, action,
id, key_type, key_size,
key, addr, tx_seq_32,