return ret;
}
+int wl1251_cmd_disconnect(struct wl1251 *wl)
+{
+ struct wl1251_cmd_disconnect *cmd;
+ int ret;
+
+ wl1251_debug(DEBUG_CMD, "cmd disconnect");
+
+ cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
+ if (!cmd)
+ return -ENOMEM;
+
+ cmd->rx_config_options = wl->rx_config;
+ cmd->rx_filter_options = 0;
+
+ ret = wl1251_cmd_send(wl, CMD_DISCONNECT, cmd, sizeof(*cmd));
+ if (ret < 0)
+ wl1251_error("cmd disconnect failed: %d", ret);
+
+ kfree(cmd);
+ return ret;
+}
+
int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode)
{
struct wl1251_cmd_ps_params *ps_params = NULL;
int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable);
int wl1251_cmd_join(struct wl1251 *wl, u8 bss_type, u8 channel,
u16 beacon_interval, u8 dtim_interval);
+int wl1251_cmd_disconnect(struct wl1251 *wl);
int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode);
int wl1251_cmd_read_memory(struct wl1251 *wl, u32 addr, void *answer,
size_t len);
u8 reserved;
} __packed;
+struct wl1251_cmd_disconnect {
+ struct wl1251_cmd_header header;
+
+ u32 rx_config_options;
+ u32 rx_filter_options;
+} __packed;
+
struct cmd_enabledisable_path {
struct wl1251_cmd_header header;
if (ret < 0)
return ret;
- ret = wl1251_cmd_template_set(wl, CMD_DISCONNECT, NULL, 0);
+ ret = wl1251_cmd_disconnect(wl);
if (ret < 0)
return ret;
break;