diff options
author | Dan Williams <dcbw@redhat.com> | 2007-06-18 12:01:12 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2007-06-28 07:48:47 -0400 |
commit | 18c96c3497aa871608d57ca5e08de3558159a6c9 (patch) | |
tree | 4dfcef0cef103a0312c8aa15dbbbed9056a211e0 /drivers/net/wireless/libertas/cmdresp.c | |
parent | f8f551089b0ca571b8f95465b6c3e1dd7bcea28e (diff) | |
download | talos-obmc-linux-18c96c3497aa871608d57ca5e08de3558159a6c9.tar.gz talos-obmc-linux-18c96c3497aa871608d57ca5e08de3558159a6c9.zip |
[PATCH] libertas: fix WPA associations by handling ENABLE_RSN correctly
Don't clobber the firmware's internal state machine by setting
ENABLE_RSN more than once during the 4-way handshake. Check what
the ENABLE_RSN status is and only set if it should be changed.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/cmdresp.c')
-rw-r--r-- | drivers/net/wireless/libertas/cmdresp.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c index 0c3b9a583d83..6ac0d4752fa4 100644 --- a/drivers/net/wireless/libertas/cmdresp.c +++ b/drivers/net/wireless/libertas/cmdresp.c @@ -537,6 +537,24 @@ static int wlan_ret_get_log(wlan_private * priv, return 0; } +static int libertas_ret_802_11_enable_rsn(wlan_private * priv, + struct cmd_ds_command *resp) +{ + struct cmd_ds_802_11_enable_rsn *enable_rsn = &resp->params.enbrsn; + wlan_adapter *adapter = priv->adapter; + u32 * pdata_buf = adapter->cur_cmd->pdata_buf; + + lbs_deb_enter(LBS_DEB_CMD); + + if (enable_rsn->action == cpu_to_le16(cmd_act_get)) { + if (pdata_buf) + *pdata_buf = (u32) le16_to_cpu(enable_rsn->enable); + } + + lbs_deb_enter(LBS_DEB_CMD); + return 0; +} + static inline int handle_cmd_response(u16 respcmd, struct cmd_ds_command *resp, wlan_private *priv) @@ -610,7 +628,10 @@ static inline int handle_cmd_response(u16 respcmd, case cmd_ret_802_11_authenticate: case cmd_ret_802_11_radio_control: case cmd_ret_802_11_beacon_stop: + break; + case cmd_ret_802_11_enable_rsn: + ret = libertas_ret_802_11_enable_rsn(priv, resp); break; case cmd_ret_802_11_data_rate: |