wlcore: add dfs master restart calls
call wlcore_cmd_dfs_master_restart when starting the ap on a new channel (after csa is done). Add a new WLVIF_FLAG_BEACON_DISABLED flag to indicate that dfs_master_restart command is required. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
此提交包含在:
@@ -229,3 +229,28 @@ out_free:
|
||||
kfree(cmd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int wl18xx_cmd_dfs_master_restart(struct wl1271 *wl, struct wl12xx_vif *wlvif)
|
||||
{
|
||||
struct wl18xx_cmd_dfs_master_restart *cmd;
|
||||
int ret = 0;
|
||||
|
||||
wl1271_debug(DEBUG_CMD, "cmd dfs master restart (role %d)",
|
||||
wlvif->role_id);
|
||||
|
||||
cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
|
||||
if (!cmd)
|
||||
return -ENOMEM;
|
||||
|
||||
cmd->role_id = wlvif->role_id;
|
||||
|
||||
ret = wl1271_cmd_send(wl, CMD_DFS_MASTER_RESTART,
|
||||
cmd, sizeof(*cmd), 0);
|
||||
if (ret < 0) {
|
||||
wl1271_error("failed to send dfs master restart command");
|
||||
goto out_free;
|
||||
}
|
||||
out_free:
|
||||
kfree(cmd);
|
||||
return ret;
|
||||
}
|
||||
|
@@ -66,6 +66,13 @@ struct wl18xx_cmd_dfs_radar_debug {
|
||||
u8 padding[3];
|
||||
} __packed;
|
||||
|
||||
struct wl18xx_cmd_dfs_master_restart {
|
||||
struct wl1271_cmd_header header;
|
||||
|
||||
u8 role_id;
|
||||
u8 padding[3];
|
||||
} __packed;
|
||||
|
||||
/* cac_start and cac_stop share the same params */
|
||||
struct wlcore_cmd_cac_start {
|
||||
struct wl1271_cmd_header header;
|
||||
@@ -85,4 +92,5 @@ int wl18xx_cmd_smart_config_set_group_key(struct wl1271 *wl, u16 group_id,
|
||||
u8 key_len, u8 *key);
|
||||
int wl18xx_cmd_set_cac(struct wl1271 *wl, struct wl12xx_vif *wlvif, bool start);
|
||||
int wl18xx_cmd_radar_detection_debug(struct wl1271 *wl, u8 channel);
|
||||
int wl18xx_cmd_dfs_master_restart(struct wl1271 *wl, struct wl12xx_vif *wlvif);
|
||||
#endif
|
||||
|
@@ -1705,6 +1705,7 @@ static struct wlcore_ops wl18xx_ops = {
|
||||
.rx_ba_filter = wl18xx_acx_rx_ba_filter,
|
||||
.ap_sleep = wl18xx_acx_ap_sleep,
|
||||
.set_cac = wl18xx_cmd_set_cac,
|
||||
.dfs_master_restart = wl18xx_cmd_dfs_master_restart,
|
||||
};
|
||||
|
||||
/* HT cap appropriate for wide channels in 2Ghz */
|
||||
|
新增問題並參考
封鎖使用者