Commit ce8d096d authored by Andrey Yurovsky's avatar Andrey Yurovsky Committed by John W. Linville

libertas: copy WPA keys to priv when associating

Libertas currently maintains a copy of the WPA unicast and group keys
when using WPA or WPA2.  This copy is checked when deciding whether or
not to return to sleep in IEEE PS mode but the actual copying back to
priv was omitted, which breaks IEEE PS mode with WPA/WPA2 when one
issues commands that require temporarily keeping the device awake.

This patch introduces the omitted copy-back of the keys so that IEEE PS
functions correctly in WPA/WPA2 mode.  Thanks to Dan Williams for
clearing up the issue.

V2: fix typo.  Also, this has been tested on GSPI and SDIO with V9 firmware.
Signed-off-by: default avatarAndrey Yurovsky <andrey@cozybit.com>
Acked-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9834c079
...@@ -1368,11 +1368,17 @@ static int assoc_helper_wpa_keys(struct lbs_private *priv, ...@@ -1368,11 +1368,17 @@ static int assoc_helper_wpa_keys(struct lbs_private *priv,
if (ret) if (ret)
goto out; goto out;
memcpy(&priv->wpa_unicast_key, &assoc_req->wpa_unicast_key,
sizeof(struct enc_key));
if (test_bit(ASSOC_FLAG_WPA_MCAST_KEY, &assoc_req->flags)) { if (test_bit(ASSOC_FLAG_WPA_MCAST_KEY, &assoc_req->flags)) {
clear_bit(ASSOC_FLAG_WPA_UCAST_KEY, &assoc_req->flags); clear_bit(ASSOC_FLAG_WPA_UCAST_KEY, &assoc_req->flags);
ret = lbs_cmd_802_11_key_material(priv, CMD_ACT_SET, assoc_req); ret = lbs_cmd_802_11_key_material(priv, CMD_ACT_SET, assoc_req);
assoc_req->flags = flags; assoc_req->flags = flags;
memcpy(&priv->wpa_mcast_key, &assoc_req->wpa_mcast_key,
sizeof(struct enc_key));
} }
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment