|
@@ -240,74 +240,61 @@ int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int lbs_cmd_802_11_set_wep(struct lbs_private *priv,
|
|
|
- struct cmd_ds_command *cmd,
|
|
|
- u32 cmd_act,
|
|
|
- void * pdata_buf)
|
|
|
+int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action,
|
|
|
+ struct assoc_request *assoc)
|
|
|
{
|
|
|
- struct cmd_ds_802_11_set_wep *wep = &cmd->params.wep;
|
|
|
+ struct cmd_ds_802_11_set_wep cmd;
|
|
|
int ret = 0;
|
|
|
- struct assoc_request * assoc_req = pdata_buf;
|
|
|
|
|
|
lbs_deb_enter(LBS_DEB_CMD);
|
|
|
|
|
|
- cmd->command = cpu_to_le16(CMD_802_11_SET_WEP);
|
|
|
- cmd->size = cpu_to_le16(sizeof(*wep) + S_DS_GEN);
|
|
|
-
|
|
|
- if (cmd_act == CMD_ACT_ADD) {
|
|
|
- int i;
|
|
|
+ cmd.hdr.command = cpu_to_le16(CMD_802_11_SET_WEP);
|
|
|
+ cmd.hdr.size = cpu_to_le16(sizeof(cmd));
|
|
|
|
|
|
- if (!assoc_req) {
|
|
|
- lbs_deb_cmd("Invalid association request!\n");
|
|
|
- ret = -1;
|
|
|
- goto done;
|
|
|
- }
|
|
|
+ cmd.action = cpu_to_le16(cmd_action);
|
|
|
|
|
|
- wep->action = cpu_to_le16(CMD_ACT_ADD);
|
|
|
+ if (cmd_action == CMD_ACT_ADD) {
|
|
|
+ int i;
|
|
|
|
|
|
/* default tx key index */
|
|
|
- wep->keyindex = cpu_to_le16((u16)(assoc_req->wep_tx_keyidx &
|
|
|
- (u32)CMD_WEP_KEY_INDEX_MASK));
|
|
|
+ cmd.keyindex = cpu_to_le16(assoc->wep_tx_keyidx &
|
|
|
+ CMD_WEP_KEY_INDEX_MASK);
|
|
|
|
|
|
/* Copy key types and material to host command structure */
|
|
|
for (i = 0; i < 4; i++) {
|
|
|
- struct enc_key * pkey = &assoc_req->wep_keys[i];
|
|
|
+ struct enc_key *pkey = &assoc->wep_keys[i];
|
|
|
|
|
|
switch (pkey->len) {
|
|
|
case KEY_LEN_WEP_40:
|
|
|
- wep->keytype[i] = CMD_TYPE_WEP_40_BIT;
|
|
|
- memmove(&wep->keymaterial[i], pkey->key,
|
|
|
- pkey->len);
|
|
|
+ cmd.keytype[i] = CMD_TYPE_WEP_40_BIT;
|
|
|
+ memmove(cmd.keymaterial[i], pkey->key, pkey->len);
|
|
|
lbs_deb_cmd("SET_WEP: add key %d (40 bit)\n", i);
|
|
|
break;
|
|
|
case KEY_LEN_WEP_104:
|
|
|
- wep->keytype[i] = CMD_TYPE_WEP_104_BIT;
|
|
|
- memmove(&wep->keymaterial[i], pkey->key,
|
|
|
- pkey->len);
|
|
|
+ cmd.keytype[i] = CMD_TYPE_WEP_104_BIT;
|
|
|
+ memmove(cmd.keymaterial[i], pkey->key, pkey->len);
|
|
|
lbs_deb_cmd("SET_WEP: add key %d (104 bit)\n", i);
|
|
|
break;
|
|
|
case 0:
|
|
|
break;
|
|
|
default:
|
|
|
lbs_deb_cmd("SET_WEP: invalid key %d, length %d\n",
|
|
|
- i, pkey->len);
|
|
|
+ i, pkey->len);
|
|
|
ret = -1;
|
|
|
goto done;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- } else if (cmd_act == CMD_ACT_REMOVE) {
|
|
|
+ } else if (cmd_action == CMD_ACT_REMOVE) {
|
|
|
/* ACT_REMOVE clears _all_ WEP keys */
|
|
|
- wep->action = cpu_to_le16(CMD_ACT_REMOVE);
|
|
|
|
|
|
/* default tx key index */
|
|
|
- wep->keyindex = cpu_to_le16((u16)(priv->wep_tx_keyidx &
|
|
|
- (u32)CMD_WEP_KEY_INDEX_MASK));
|
|
|
+ cmd.keyindex = cpu_to_le16(priv->wep_tx_keyidx &
|
|
|
+ CMD_WEP_KEY_INDEX_MASK);
|
|
|
lbs_deb_cmd("SET_WEP: remove key %d\n", priv->wep_tx_keyidx);
|
|
|
}
|
|
|
|
|
|
- ret = 0;
|
|
|
-
|
|
|
+ ret = lbs_cmd_with_response(priv, CMD_802_11_SET_WEP, &cmd);
|
|
|
done:
|
|
|
lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
|
|
|
return ret;
|
|
@@ -1422,10 +1409,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
|
|
|
ret = lbs_cmd_80211_deauthenticate(priv, cmdptr);
|
|
|
break;
|
|
|
|
|
|
- case CMD_802_11_SET_WEP:
|
|
|
- ret = lbs_cmd_802_11_set_wep(priv, cmdptr, cmd_action, pdata_buf);
|
|
|
- break;
|
|
|
-
|
|
|
case CMD_802_11_AD_HOC_START:
|
|
|
ret = lbs_cmd_80211_ad_hoc_start(priv, cmdptr, pdata_buf);
|
|
|
break;
|