diff options
author | Eliad Peller <eliad@wizery.com> | 2011-08-14 12:17:31 +0200 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-08-22 11:35:30 +0200 |
commit | 010d3d30a218fba961bd3d250a59b0ce9d5278f3 (patch) | |
tree | a18a95539b6384c50ae866ef64095d1b98d25a52 /drivers/net/wireless/wl12xx | |
parent | wl12xx: use ap_bcast_hlid for recorded keys (diff) | |
download | linux-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/wireless/wl12xx')
-rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 5 |
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, |