forked from Minki/linux
wl1271: implement cmd_disconnect
This patch implements the CMD_DISCONNECT command, which should be sent to the firmware when we are disassociated. Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com> Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
e57f14895b
commit
25a7dc6d22
@ -191,7 +191,6 @@ int wl1271_cmd_join(struct wl1271 *wl)
|
||||
do_cal = false;
|
||||
}
|
||||
|
||||
|
||||
join = kzalloc(sizeof(*join), GFP_KERNEL);
|
||||
if (!join) {
|
||||
ret = -ENOMEM;
|
||||
@ -825,3 +824,34 @@ out:
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int wl1271_cmd_disconnect(struct wl1271 *wl)
|
||||
{
|
||||
struct wl1271_cmd_disconnect *cmd;
|
||||
int ret = 0;
|
||||
|
||||
wl1271_debug(DEBUG_CMD, "cmd disconnect");
|
||||
|
||||
cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
|
||||
if (!cmd) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
cmd->rx_config_options = wl->rx_config;
|
||||
cmd->rx_filter_options = wl->rx_filter;
|
||||
/* disconnect reason is not used in immediate disconnections */
|
||||
cmd->type = DISCONNECT_IMMEDIATE;
|
||||
|
||||
ret = wl1271_cmd_send(wl, CMD_DISCONNECT, cmd, sizeof(*cmd));
|
||||
if (ret < 0) {
|
||||
wl1271_error("failed to send disconnect command");
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
out_free:
|
||||
kfree(cmd);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ int wl1271_cmd_set_default_wep_key(struct wl1271 *wl, u8 id);
|
||||
int wl1271_cmd_set_key(struct wl1271 *wl, u16 action, u8 id, u8 key_type,
|
||||
u8 key_size, const u8 *key, const u8 *addr,
|
||||
u32 tx_seq_32, u16 tx_seq_16);
|
||||
int wl1271_cmd_disconnect(struct wl1271 *wl);
|
||||
|
||||
enum wl1271_commands {
|
||||
CMD_INTERROGATE = 1, /*use this to read information elements*/
|
||||
@ -461,4 +462,30 @@ struct wl1271_cmd_cal_p2g {
|
||||
u8 padding2;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
/*
|
||||
* There are three types of disconnections:
|
||||
*
|
||||
* DISCONNECT_IMMEDIATE: the fw doesn't send any frames
|
||||
* DISCONNECT_DEAUTH: the fw generates a DEAUTH request with the reason
|
||||
* we have passed
|
||||
* DISCONNECT_DISASSOC: the fw generates a DESASSOC request with the reason
|
||||
* we have passed
|
||||
*/
|
||||
enum wl1271_disconnect_type {
|
||||
DISCONNECT_IMMEDIATE,
|
||||
DISCONNECT_DEAUTH,
|
||||
DISCONNECT_DISASSOC
|
||||
};
|
||||
|
||||
struct wl1271_cmd_disconnect {
|
||||
u32 rx_config_options;
|
||||
u32 rx_filter_options;
|
||||
|
||||
u16 reason;
|
||||
u8 type;
|
||||
|
||||
u8 padding;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#endif /* __WL1271_CMD_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user