diff options
author | Luciano Coelho <luciano.coelho@nokia.com> | 2009-10-12 08:08:42 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-10-27 16:48:01 -0400 |
commit | 25a7dc6d22adda590be4932ebc772ea35914880c (patch) | |
tree | 792d7411cd451131fee44a8362c720fdfbc2ea8a /drivers/net/wireless/wl12xx/wl1271_cmd.c | |
parent | e57f14895bf6bc7f16df760963427ac6ee6ff7e1 (diff) |
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>
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl1271_cmd.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_cmd.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_cmd.c b/drivers/net/wireless/wl12xx/wl1271_cmd.c index ac93efd53f2..d09ad121197 100644 --- a/drivers/net/wireless/wl12xx/wl1271_cmd.c +++ b/drivers/net/wireless/wl12xx/wl1271_cmd.c | |||
@@ -191,7 +191,6 @@ int wl1271_cmd_join(struct wl1271 *wl) | |||
191 | do_cal = false; | 191 | do_cal = false; |
192 | } | 192 | } |
193 | 193 | ||
194 | |||
195 | join = kzalloc(sizeof(*join), GFP_KERNEL); | 194 | join = kzalloc(sizeof(*join), GFP_KERNEL); |
196 | if (!join) { | 195 | if (!join) { |
197 | ret = -ENOMEM; | 196 | ret = -ENOMEM; |
@@ -825,3 +824,34 @@ out: | |||
825 | 824 | ||
826 | return ret; | 825 | return ret; |
827 | } | 826 | } |
827 | |||
828 | int wl1271_cmd_disconnect(struct wl1271 *wl) | ||
829 | { | ||
830 | struct wl1271_cmd_disconnect *cmd; | ||
831 | int ret = 0; | ||
832 | |||
833 | wl1271_debug(DEBUG_CMD, "cmd disconnect"); | ||
834 | |||
835 | cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); | ||
836 | if (!cmd) { | ||
837 | ret = -ENOMEM; | ||
838 | goto out; | ||
839 | } | ||
840 | |||
841 | cmd->rx_config_options = wl->rx_config; | ||
842 | cmd->rx_filter_options = wl->rx_filter; | ||
843 | /* disconnect reason is not used in immediate disconnections */ | ||
844 | cmd->type = DISCONNECT_IMMEDIATE; | ||
845 | |||
846 | ret = wl1271_cmd_send(wl, CMD_DISCONNECT, cmd, sizeof(*cmd)); | ||
847 | if (ret < 0) { | ||
848 | wl1271_error("failed to send disconnect command"); | ||
849 | goto out_free; | ||
850 | } | ||
851 | |||
852 | out_free: | ||
853 | kfree(cmd); | ||
854 | |||
855 | out: | ||
856 | return ret; | ||
857 | } | ||