wl1251: split RX and TX data path initialisation
Split up data path initialisation into RX and TX data path initialisation functions. This change is required for channel switching in monitor mode. Signed-off-by: David Gnedt <david.gnedt@davizone.at> Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: John W. Linville <linville@tuxdriver.com>
此提交包含在:
@@ -204,11 +204,11 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable)
|
||||
int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable)
|
||||
{
|
||||
struct cmd_enabledisable_path *cmd;
|
||||
int ret;
|
||||
u16 cmd_rx, cmd_tx;
|
||||
u16 cmd_rx;
|
||||
|
||||
wl1251_debug(DEBUG_CMD, "cmd data path");
|
||||
|
||||
@@ -220,13 +220,10 @@ int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable)
|
||||
|
||||
cmd->channel = channel;
|
||||
|
||||
if (enable) {
|
||||
if (enable)
|
||||
cmd_rx = CMD_ENABLE_RX;
|
||||
cmd_tx = CMD_ENABLE_TX;
|
||||
} else {
|
||||
else
|
||||
cmd_rx = CMD_DISABLE_RX;
|
||||
cmd_tx = CMD_DISABLE_TX;
|
||||
}
|
||||
|
||||
ret = wl1251_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd));
|
||||
if (ret < 0) {
|
||||
@@ -238,17 +235,38 @@ int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable)
|
||||
wl1251_debug(DEBUG_BOOT, "rx %s cmd channel %d",
|
||||
enable ? "start" : "stop", channel);
|
||||
|
||||
out:
|
||||
kfree(cmd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable)
|
||||
{
|
||||
struct cmd_enabledisable_path *cmd;
|
||||
int ret;
|
||||
u16 cmd_tx;
|
||||
|
||||
wl1251_debug(DEBUG_CMD, "cmd data path");
|
||||
|
||||
cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
|
||||
if (!cmd)
|
||||
return -ENOMEM;
|
||||
|
||||
cmd->channel = channel;
|
||||
|
||||
if (enable)
|
||||
cmd_tx = CMD_ENABLE_TX;
|
||||
else
|
||||
cmd_tx = CMD_DISABLE_TX;
|
||||
|
||||
ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd));
|
||||
if (ret < 0) {
|
||||
if (ret < 0)
|
||||
wl1251_error("tx %s cmd for channel %d failed",
|
||||
enable ? "start" : "stop", channel);
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
wl1251_debug(DEBUG_BOOT, "tx %s cmd channel %d",
|
||||
enable ? "start" : "stop", channel);
|
||||
|
||||
wl1251_debug(DEBUG_BOOT, "tx %s cmd channel %d",
|
||||
enable ? "start" : "stop", channel);
|
||||
|
||||
out:
|
||||
kfree(cmd);
|
||||
return ret;
|
||||
}
|
||||
|
新增問題並參考
封鎖使用者