qcacld-3.0: Remove dead code related to driver acs
Support of ini to control driver acs is removed, therefore remove related code which is no longer used. Change-Id: I3d279de67ee5f36b785e4516edd9f14484311f5c CRs-Fixed: 2284253
This commit is contained in:
@@ -80,137 +80,6 @@
|
||||
* Function Declarations and Documentation
|
||||
* -------------------------------------------------------------------------*/
|
||||
|
||||
QDF_STATUS wlansap_scan_callback(tHalHandle hal_handle,
|
||||
struct sap_context *sap_ctx,
|
||||
uint8_t session_id,
|
||||
uint32_t scan_id, eCsrScanStatus scan_status)
|
||||
{
|
||||
tScanResultHandle result = NULL;
|
||||
QDF_STATUS get_result_status = QDF_STATUS_E_FAILURE;
|
||||
tWLAN_SAPEvent sapEvent; /* State machine event */
|
||||
uint8_t operChannel = 0;
|
||||
QDF_STATUS sap_sm_status;
|
||||
uint32_t event;
|
||||
tpAniSirGlobal mac_ctx;
|
||||
|
||||
|
||||
if (NULL != hal_handle) {
|
||||
mac_ctx = PMAC_STRUCT(hal_handle);
|
||||
} else {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
"In %s invalid hHal", __func__);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
if (sap_ctx->sapsMachine == eSAP_DISCONNECTED) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_WARN,
|
||||
"In %s BSS already stopped", __func__);
|
||||
if (sap_ctx->channelList != NULL) {
|
||||
qdf_mem_free(sap_ctx->channelList);
|
||||
sap_ctx->channelList = NULL;
|
||||
sap_ctx->num_of_channel = 0;
|
||||
}
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
switch (scan_status) {
|
||||
case eCSR_SCAN_SUCCESS:
|
||||
/* sapScanCompleteCallback with eCSR_SCAN_SUCCESS */
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"In %s, CSR scanStatus = %s (%d)", __func__,
|
||||
"eCSR_SCAN_SUCCESS", scan_status);
|
||||
|
||||
/**
|
||||
* Get scan results, Run channel selection algorithm,
|
||||
* select channel and keep in sap_ctx->Channel
|
||||
*/
|
||||
get_result_status =
|
||||
sme_scan_get_result(hal_handle, sap_ctx->sessionId, NULL,
|
||||
&result);
|
||||
|
||||
event = eSAP_MAC_SCAN_COMPLETE;
|
||||
|
||||
if ((get_result_status != QDF_STATUS_SUCCESS)
|
||||
&& (get_result_status != QDF_STATUS_E_NULL_VALUE)) {
|
||||
/* No scan results */
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
"In %s, Get scan result failed! ret = %d",
|
||||
__func__, get_result_status);
|
||||
break;
|
||||
}
|
||||
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
|
||||
if (scan_id != 0) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: Sending ACS Scan skip event", __func__);
|
||||
sap_signal_hdd_event(sap_ctx, NULL,
|
||||
eSAP_ACS_SCAN_SUCCESS_EVENT,
|
||||
(void *) eSAP_STATUS_SUCCESS);
|
||||
} else
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: ACS scan id: %d (skipped ACS SCAN)",
|
||||
__func__, scan_id);
|
||||
#endif
|
||||
operChannel = sap_select_channel(hal_handle, sap_ctx, result);
|
||||
sme_scan_result_purge(result);
|
||||
break;
|
||||
|
||||
default:
|
||||
event = eSAP_CHANNEL_SELECTION_FAILED;
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"In %s, CSR scanStatus = %s (%d)", __func__,
|
||||
"eCSR_SCAN_ABORT/FAILURE", scan_status);
|
||||
}
|
||||
|
||||
if (operChannel == SAP_CHANNEL_NOT_SELECTED)
|
||||
#ifdef SOFTAP_CHANNEL_RANGE
|
||||
{
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: No suitable channel selected due to DFS, LTE"
|
||||
"COEX and concurrent mode restrictions", __func__);
|
||||
|
||||
sap_ctx->sapsMachine = eSAP_CH_SELECT;
|
||||
event = eSAP_CHANNEL_SELECTION_FAILED;
|
||||
}
|
||||
#else
|
||||
sap_ctx->channel = SAP_DEFAULT_24GHZ_CHANNEL;
|
||||
#endif
|
||||
else {
|
||||
sap_ctx->channel = operChannel;
|
||||
}
|
||||
|
||||
sap_ctx->ch_params.ch_width = sap_ctx->acs_cfg->ch_width;
|
||||
wlan_reg_set_channel_params(mac_ctx->pdev, sap_ctx->channel,
|
||||
sap_ctx->secondary_ch,
|
||||
&sap_ctx->ch_params);
|
||||
#ifdef SOFTAP_CHANNEL_RANGE
|
||||
if (sap_ctx->channelList != NULL) {
|
||||
/* Always free up the memory for channel selection whatever
|
||||
* the result */
|
||||
qdf_mem_free(sap_ctx->channelList);
|
||||
sap_ctx->channelList = NULL;
|
||||
sap_ctx->num_of_channel = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"In %s, Channel selected = %d", __func__,
|
||||
sap_ctx->channel);
|
||||
|
||||
/* Fill in the event structure */
|
||||
sapEvent.event = event;
|
||||
/* pCsrRoamInfo; */
|
||||
sapEvent.params = 0;
|
||||
/* roamstatus */
|
||||
sapEvent.u1 = scan_status;
|
||||
/* roamResult */
|
||||
sapEvent.u2 = 0;
|
||||
|
||||
/* Handle event */
|
||||
sap_sm_status = sap_fsm(sap_ctx, &sapEvent);
|
||||
|
||||
return sap_sm_status;
|
||||
} /* wlansap_scan_callback */
|
||||
|
||||
|
||||
/**
|
||||
* sap_config_acs_result : Generate ACS result params based on ch constraints
|
||||
* @sap_ctx: pointer to SAP context data struct
|
||||
@@ -1366,7 +1235,6 @@ void sap_scan_event_callback(struct wlan_objmgr_vdev *vdev,
|
||||
bool success = false;
|
||||
eCsrScanStatus scan_status = eCSR_SCAN_FAILURE;
|
||||
tHalHandle hal_handle;
|
||||
struct sap_context *sap_ctx = arg;
|
||||
|
||||
session_id = wlan_vdev_get_id(vdev);
|
||||
scan_id = event->scan_id;
|
||||
@@ -1383,11 +1251,7 @@ void sap_scan_event_callback(struct wlan_objmgr_vdev *vdev,
|
||||
if (success)
|
||||
scan_status = eCSR_SCAN_SUCCESS;
|
||||
|
||||
if (!sap_ctx->sap_acs_pre_start_bss)
|
||||
wlansap_scan_callback(hal_handle, arg, session_id, scan_id,
|
||||
scan_status);
|
||||
else
|
||||
wlansap_pre_start_bss_acs_scan_callback(hal_handle,
|
||||
arg, session_id,
|
||||
scan_id, scan_status);
|
||||
wlansap_pre_start_bss_acs_scan_callback(hal_handle,
|
||||
arg, session_id,
|
||||
scan_id, scan_status);
|
||||
}
|
||||
|
@@ -811,45 +811,17 @@ uint8_t sap_select_default_oper_chan(struct sap_acs_cfg *acs_cfg)
|
||||
return channel;
|
||||
}
|
||||
|
||||
/**
|
||||
* sap_goto_channel_sel - Function for initiating scan request for SME
|
||||
* @sap_context: Sap Context value.
|
||||
* @sap_event: State machine event
|
||||
* @sap_do_acs_pre_start_bss: true, if ACS scan is issued pre start BSS
|
||||
* false, if ACS scan is issued post start BSS.
|
||||
* @check_for_connection_update: true, check and wait for connection update
|
||||
* false, do not perform connection update
|
||||
*
|
||||
* Initiates sme scan for ACS to pick a channel.
|
||||
*
|
||||
* Return: The QDF_STATUS code associated with performing the operation.
|
||||
*/
|
||||
QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
ptWLAN_SAPEvent sap_event,
|
||||
bool sap_do_acs_pre_start_bss,
|
||||
bool check_for_connection_update)
|
||||
QDF_STATUS
|
||||
sap_validate_chan(struct sap_context *sap_context,
|
||||
bool pre_start_bss,
|
||||
bool check_for_connection_update)
|
||||
{
|
||||
|
||||
/* Initiate a SCAN request */
|
||||
QDF_STATUS qdf_ret_status;
|
||||
/* To be initialised if scan is required */
|
||||
QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
|
||||
tpAniSirGlobal mac_ctx;
|
||||
struct scan_start_request *req;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
uint8_t i;
|
||||
uint8_t pdev_id;
|
||||
bool is_dfs;
|
||||
bool is_safe;
|
||||
|
||||
#ifdef SOFTAP_CHANNEL_RANGE
|
||||
uint8_t *channel_list = NULL;
|
||||
uint8_t num_of_channels = 0;
|
||||
#endif
|
||||
tHalHandle h_hal;
|
||||
uint8_t con_ch;
|
||||
uint8_t vdev_id;
|
||||
uint32_t scan_id;
|
||||
bool sta_sap_scc_on_dfs_chan;
|
||||
|
||||
h_hal = cds_get_context(QDF_MODULE_ID_SME);
|
||||
@@ -861,6 +833,12 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
}
|
||||
|
||||
mac_ctx = PMAC_STRUCT(h_hal);
|
||||
if (!sap_context->channel) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("Invalid channel"));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (policy_mgr_concurrent_beaconing_sessions_running(mac_ctx->psoc) ||
|
||||
((sap_context->cc_switch_mode ==
|
||||
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) &&
|
||||
@@ -871,11 +849,9 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
con_ch =
|
||||
sme_get_concurrent_operation_channel(h_hal);
|
||||
#ifdef FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE
|
||||
if (con_ch && sap_context->channel == AUTO_CHANNEL_SELECT) {
|
||||
sap_context->dfs_ch_disable = true;
|
||||
} else if (con_ch && sap_context->channel != con_ch &&
|
||||
wlan_reg_is_dfs_ch(mac_ctx->pdev,
|
||||
sap_context->channel)) {
|
||||
if (con_ch && sap_context->channel != con_ch &&
|
||||
wlan_reg_is_dfs_ch(mac_ctx->pdev,
|
||||
sap_context->channel)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_WARN,
|
||||
FL("MCC DFS not supported in AP_AP Mode"));
|
||||
return QDF_STATUS_E_ABORTED;
|
||||
@@ -883,8 +859,7 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
#endif
|
||||
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
|
||||
if (sap_context->cc_switch_mode !=
|
||||
QDF_MCC_TO_SCC_SWITCH_DISABLE &&
|
||||
sap_context->channel) {
|
||||
QDF_MCC_TO_SCC_SWITCH_DISABLE) {
|
||||
/*
|
||||
* For ACS request ,the sapContext->channel is 0,
|
||||
* we skip below overlap checking. When the ACS
|
||||
@@ -934,10 +909,8 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
(policy_mgr_get_concurrency_mode(mac_ctx->psoc) ==
|
||||
(QDF_STA_MASK | QDF_P2P_GO_MASK)))) {
|
||||
#ifdef FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE
|
||||
if (sap_context->channel == AUTO_CHANNEL_SELECT)
|
||||
sap_context->dfs_ch_disable = true;
|
||||
else if (wlan_reg_is_dfs_ch(mac_ctx->pdev,
|
||||
sap_context->channel)) {
|
||||
if (wlan_reg_is_dfs_ch(mac_ctx->pdev,
|
||||
sap_context->channel)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_WARN,
|
||||
FL("DFS not supported in STA_AP Mode"));
|
||||
return QDF_STATUS_E_ABORTED;
|
||||
@@ -945,8 +918,7 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
#endif
|
||||
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
|
||||
if (sap_context->cc_switch_mode !=
|
||||
QDF_MCC_TO_SCC_SWITCH_DISABLE &&
|
||||
sap_context->channel) {
|
||||
QDF_MCC_TO_SCC_SWITCH_DISABLE) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
|
||||
FL("check for overlap: chan:%d mode:%d"),
|
||||
sap_context->channel,
|
||||
@@ -992,45 +964,139 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
#endif
|
||||
}
|
||||
|
||||
if (sap_context->channel == AUTO_CHANNEL_SELECT) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("for configured channel, Ch= %d"),
|
||||
sap_context->channel);
|
||||
if (check_for_connection_update) {
|
||||
/* This wait happens in the hostapd context. The event
|
||||
* is set in the MC thread context.
|
||||
*/
|
||||
qdf_status =
|
||||
policy_mgr_update_and_wait_for_connection_update(
|
||||
mac_ctx->psoc,
|
||||
sap_context->sessionId,
|
||||
sap_context->channel,
|
||||
POLICY_MGR_UPDATE_REASON_START_AP);
|
||||
if (QDF_IS_STATUS_ERROR(qdf_status))
|
||||
return qdf_status;
|
||||
}
|
||||
|
||||
if (pre_start_bss) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
|
||||
FL("ACS end due to Ch override. Sel Ch = %d"),
|
||||
sap_context->channel);
|
||||
sap_context->acs_cfg->pri_ch = sap_context->channel;
|
||||
sap_context->acs_cfg->ch_width =
|
||||
sap_context->ch_width_orig;
|
||||
sap_config_acs_result(h_hal, sap_context, 0);
|
||||
return QDF_STATUS_E_CANCELED;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
|
||||
{
|
||||
QDF_STATUS qdf_ret_status;
|
||||
tpAniSirGlobal mac_ctx;
|
||||
struct scan_start_request *req;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
uint8_t i;
|
||||
uint8_t pdev_id;
|
||||
|
||||
#ifdef SOFTAP_CHANNEL_RANGE
|
||||
uint8_t *channel_list = NULL;
|
||||
uint8_t num_of_channels = 0;
|
||||
#endif
|
||||
tHalHandle h_hal;
|
||||
uint8_t con_ch;
|
||||
uint8_t vdev_id;
|
||||
uint32_t scan_id;
|
||||
uint8_t *self_mac;
|
||||
|
||||
h_hal = cds_get_context(QDF_MODULE_ID_SME);
|
||||
if (!h_hal) {
|
||||
/* we have a serious problem */
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_FATAL,
|
||||
FL("invalid h_hal"));
|
||||
return QDF_STATUS_E_FAULT;
|
||||
}
|
||||
|
||||
mac_ctx = PMAC_STRUCT(h_hal);
|
||||
if (!mac_ctx) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("Invalid MAC context"));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
if (sap_context->channel)
|
||||
return sap_validate_chan(sap_context, true, false);
|
||||
|
||||
if (policy_mgr_concurrent_beaconing_sessions_running(mac_ctx->psoc) ||
|
||||
((sap_context->cc_switch_mode ==
|
||||
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) &&
|
||||
(policy_mgr_mode_specific_connection_count(mac_ctx->psoc,
|
||||
PM_SAP_MODE, NULL) ||
|
||||
policy_mgr_mode_specific_connection_count(mac_ctx->psoc,
|
||||
PM_P2P_GO_MODE,
|
||||
NULL)))) {
|
||||
con_ch = sme_get_concurrent_operation_channel(h_hal);
|
||||
#ifdef FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE
|
||||
if (con_ch)
|
||||
sap_context->dfs_ch_disable = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((policy_mgr_get_concurrency_mode(mac_ctx->psoc) ==
|
||||
(QDF_STA_MASK | QDF_SAP_MASK)) ||
|
||||
((sap_context->cc_switch_mode ==
|
||||
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) &&
|
||||
(policy_mgr_get_concurrency_mode(mac_ctx->psoc) ==
|
||||
(QDF_STA_MASK | QDF_P2P_GO_MASK)))) {
|
||||
#ifdef FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE
|
||||
sap_context->dfs_ch_disable = true;
|
||||
#endif
|
||||
}
|
||||
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("%s skip_acs_status = %d "), __func__,
|
||||
sap_context->acs_cfg->skip_scan_status);
|
||||
if (sap_context->acs_cfg->skip_scan_status !=
|
||||
eSAP_SKIP_ACS_SCAN) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("%s skip_acs_status = %d "), __func__,
|
||||
sap_context->acs_cfg->skip_scan_status);
|
||||
if (sap_context->acs_cfg->skip_scan_status !=
|
||||
eSAP_SKIP_ACS_SCAN) {
|
||||
#endif
|
||||
|
||||
req = qdf_mem_malloc(sizeof(*req));
|
||||
if (!req) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
req = qdf_mem_malloc(sizeof(*req));
|
||||
if (!req) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("Failed to allocate memory"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
pdev_id = wlan_objmgr_pdev_get_pdev_id(mac_ctx->pdev);
|
||||
vdev = wlan_objmgr_get_vdev_by_macaddr_from_psoc(mac_ctx->psoc,
|
||||
pdev_id,
|
||||
sap_context->self_mac_addr,
|
||||
WLAN_LEGACY_SME_ID);
|
||||
if (!vdev) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("Invalid vdev objmgr"));
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
pdev_id = wlan_objmgr_pdev_get_pdev_id(mac_ctx->pdev);
|
||||
self_mac = sap_context->self_mac_addr;
|
||||
vdev = wlan_objmgr_get_vdev_by_macaddr_from_psoc(mac_ctx->psoc,
|
||||
pdev_id,
|
||||
self_mac,
|
||||
WLAN_LEGACY_SME_ID);
|
||||
if (!vdev) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("Invalid vdev objmgr"));
|
||||
qdf_mem_free(req);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
/* Initiate a SCAN request */
|
||||
ucfg_scan_init_default_params(vdev, req);
|
||||
req->scan_req.dwell_time_active = 0;
|
||||
scan_id = ucfg_scan_get_scan_id(mac_ctx->psoc);
|
||||
req->scan_req.scan_id = scan_id;
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
req->scan_req.vdev_id = vdev_id;
|
||||
req->scan_req.scan_req_id = sap_context->req_id;
|
||||
req->scan_req.scan_priority = SCAN_PRIORITY_HIGH;
|
||||
sap_get_channel_list(sap_context, &channel_list, &num_of_channels);
|
||||
|
||||
ucfg_scan_init_default_params(vdev, req);
|
||||
req->scan_req.dwell_time_active = 0;
|
||||
scan_id = ucfg_scan_get_scan_id(mac_ctx->psoc);
|
||||
req->scan_req.scan_id = scan_id;
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
req->scan_req.vdev_id = vdev_id;
|
||||
req->scan_req.scan_req_id = sap_context->req_id;
|
||||
req->scan_req.scan_priority = SCAN_PRIORITY_HIGH;
|
||||
sap_get_channel_list(sap_context, &channel_list,
|
||||
&num_of_channels);
|
||||
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
|
||||
if (num_of_channels != 0) {
|
||||
if (num_of_channels != 0) {
|
||||
#endif
|
||||
|
||||
req->scan_req.chan_list.num_chan = num_of_channels;
|
||||
@@ -1045,19 +1111,16 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
sap_context->channelList = channel_list;
|
||||
sap_context->num_of_channel = num_of_channels;
|
||||
/* Set requestType to Full scan */
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("calling ucfg_scan_start"));
|
||||
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
|
||||
if (sap_context->acs_cfg->skip_scan_status ==
|
||||
eSAP_DO_NEW_ACS_SCAN)
|
||||
eSAP_DO_NEW_ACS_SCAN)
|
||||
#endif
|
||||
sme_scan_flush_result(h_hal);
|
||||
sap_context->sap_acs_pre_start_bss = sap_do_acs_pre_start_bss;
|
||||
qdf_ret_status = ucfg_scan_start(req);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
|
||||
|
||||
if (QDF_STATUS_SUCCESS != qdf_ret_status) {
|
||||
if (qdf_ret_status != QDF_STATUS_SUCCESS) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("scan request fail %d!!!"),
|
||||
qdf_ret_status);
|
||||
@@ -1077,19 +1140,12 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
sap_context->num_of_channel = 0;
|
||||
}
|
||||
#endif
|
||||
if (true == sap_do_acs_pre_start_bss) {
|
||||
/*
|
||||
* In case of ACS req before start Bss,
|
||||
* return failure so that the calling
|
||||
* function can use the default channel.
|
||||
*/
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
} else {
|
||||
/* Fill in the event structure */
|
||||
sap_event_init(sap_event);
|
||||
/* Handle event */
|
||||
qdf_status = sap_fsm(sap_context, sap_event);
|
||||
}
|
||||
/*
|
||||
* In case of ACS req before start Bss,
|
||||
* return failure so that the calling
|
||||
* function can use the default channel.
|
||||
*/
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
} else {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("return sme_ScanReq, scanID=%d, Ch=%d"),
|
||||
@@ -1106,55 +1162,11 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
if (sap_context->acs_cfg->skip_scan_status == eSAP_SKIP_ACS_SCAN) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("## %s SKIPPED ACS SCAN"), __func__);
|
||||
|
||||
if (true == sap_do_acs_pre_start_bss)
|
||||
wlansap_pre_start_bss_acs_scan_callback(h_hal,
|
||||
sap_context, sap_context->sessionId, 0,
|
||||
eCSR_SCAN_SUCCESS);
|
||||
else
|
||||
wlansap_scan_callback(h_hal, sap_context,
|
||||
sap_context->sessionId, 0, eCSR_SCAN_SUCCESS);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("for configured channel, Ch= %d"),
|
||||
sap_context->channel);
|
||||
|
||||
if (check_for_connection_update) {
|
||||
/* This wait happens in the hostapd context. The event
|
||||
* is set in the MC thread context.
|
||||
*/
|
||||
qdf_status =
|
||||
policy_mgr_update_and_wait_for_connection_update(
|
||||
mac_ctx->psoc,
|
||||
sap_context->sessionId,
|
||||
sap_context->channel,
|
||||
POLICY_MGR_UPDATE_REASON_START_AP);
|
||||
if (QDF_IS_STATUS_ERROR(qdf_status))
|
||||
return qdf_status;
|
||||
}
|
||||
|
||||
if (sap_do_acs_pre_start_bss == true) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
|
||||
FL("ACS end due to Ch override. Sel Ch = %d"),
|
||||
sap_context->channel);
|
||||
sap_context->acs_cfg->pri_ch = sap_context->channel;
|
||||
sap_context->acs_cfg->ch_width =
|
||||
sap_context->ch_width_orig;
|
||||
sap_config_acs_result(h_hal, sap_context, 0);
|
||||
return QDF_STATUS_E_CANCELED;
|
||||
} else {
|
||||
/*
|
||||
* Fill in the event structure
|
||||
* Eventhough scan was not done,
|
||||
* means a user set channel was chosen
|
||||
*/
|
||||
sap_event_init(sap_event);
|
||||
/* Handle event */
|
||||
qdf_status = sap_fsm(sap_context, sap_event);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If scan failed, get default channel and advance state
|
||||
@@ -1164,7 +1176,7 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
|
||||
* channel cannot advance state machine here as said above
|
||||
*/
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("before exiting sap_goto_channel_sel channel=%d"),
|
||||
FL("before exiting sap_channel_sel channel=%d"),
|
||||
sap_context->channel);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
@@ -2142,6 +2154,32 @@ static QDF_STATUS sap_cac_end_notify(tHalHandle hHal,
|
||||
return qdf_status;
|
||||
}
|
||||
|
||||
static QDF_STATUS sap_switch_ch_sel(struct sap_context *sap_ctx)
|
||||
{
|
||||
tWLAN_SAPEvent sap_event;
|
||||
QDF_STATUS qdf_status;
|
||||
|
||||
/*
|
||||
* Fill in the event structure Eventhough scan was not done,
|
||||
* means a user set channel was chosen
|
||||
*/
|
||||
sap_event_init(&sap_event);
|
||||
/* Handle event */
|
||||
qdf_status = sap_fsm(sap_ctx, &sap_event);
|
||||
|
||||
/*
|
||||
* If scan failed, get default channel and advance state
|
||||
* machine as success with default channel
|
||||
*
|
||||
* Have to wait for the call back to be called to get the
|
||||
* channel cannot advance state machine here as said above
|
||||
*/
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("before exiting sap_switch_ch_sel"));
|
||||
|
||||
return qdf_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* sap_fsm_state_disconnected() - utility function called from sap fsm
|
||||
* @sap_ctx: SAP context
|
||||
@@ -2180,8 +2218,10 @@ static QDF_STATUS sap_fsm_state_disconnected(struct sap_context *sap_ctx,
|
||||
* Perform sme_ScanRequest. This scan request is post start bss
|
||||
* request so, set the third to false.
|
||||
*/
|
||||
qdf_status = sap_goto_channel_sel(sap_ctx, sap_event, false,
|
||||
true);
|
||||
qdf_status = sap_validate_chan(sap_ctx, false, true);
|
||||
if (qdf_status == QDF_STATUS_SUCCESS ||
|
||||
qdf_status == QDF_STATUS_E_CANCELED)
|
||||
qdf_status = sap_switch_ch_sel(sap_ctx);
|
||||
} else if (msg == eSAP_DFS_CHANNEL_CAC_START) {
|
||||
/*
|
||||
* No need of state check here, caller is expected to perform
|
||||
@@ -2199,16 +2239,6 @@ static QDF_STATUS sap_fsm_state_disconnected(struct sap_context *sap_ctx,
|
||||
}
|
||||
|
||||
qdf_status = sap_cac_start_notify(hal);
|
||||
} else if (msg == eSAP_CHANNEL_SELECTION_RETRY) {
|
||||
/* Set SAP device role */
|
||||
sap_ctx->sapsMachine = eSAP_CH_SELECT;
|
||||
|
||||
/*
|
||||
* Perform sme_ScanRequest. This scan request is post start bss
|
||||
* request so, set the third to false.
|
||||
*/
|
||||
qdf_status = sap_goto_channel_sel(sap_ctx, sap_event, false,
|
||||
false);
|
||||
} else {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("in state %s, event msg %d"),
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014, 2018 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -44,7 +44,6 @@ typedef enum {
|
||||
eSAP_DFS_CHANNEL_CAC_END,
|
||||
eSAP_DFS_CHNL_SWITCH_ANNOUNCEMENT_START,
|
||||
eSAP_OPERATING_CHANNEL_CHANGED,
|
||||
eSAP_CHANNEL_SELECTION_RETRY,
|
||||
eSAP_CHANNEL_SWITCH_ANNOUNCEMENT_START,
|
||||
|
||||
eSAP_NO_MSG
|
||||
|
@@ -244,7 +244,6 @@ struct sap_context {
|
||||
tSirMacRateSet extended_rate_set;
|
||||
enum sap_acs_dfs_mode dfs_mode;
|
||||
wlan_scan_requester req_id;
|
||||
uint8_t sap_acs_pre_start_bss;
|
||||
uint8_t sap_sta_id;
|
||||
bool dfs_cac_offload;
|
||||
bool is_chan_change_inprogress;
|
||||
@@ -276,23 +275,6 @@ typedef struct sWLAN_SAPEvent {
|
||||
QDF_STATUS wlansap_context_get(struct sap_context *ctx);
|
||||
void wlansap_context_put(struct sap_context *ctx);
|
||||
|
||||
/**
|
||||
* wlansap_scan_callback() - Callback for Scan (scan results) Events
|
||||
* @hal_handle: tHalHandle passed in with the scan request
|
||||
* @sap_ctx: The sap context
|
||||
* @session_id: ID of the current session
|
||||
* @scan_id: ID assigned to the scan
|
||||
* @scan_status: Status of the scan
|
||||
*
|
||||
* Callback for Scan (scan results) Events
|
||||
*
|
||||
* Return: Status
|
||||
*/
|
||||
QDF_STATUS wlansap_scan_callback(tHalHandle hal_handle,
|
||||
struct sap_context *sap_ctx,
|
||||
uint8_t session_id,
|
||||
uint32_t scan_id, eCsrScanStatus scan_status);
|
||||
|
||||
/**
|
||||
* wlansap_pre_start_bss_acs_scan_callback() - callback for scan results
|
||||
* @hal_handle: the hal_handle passed in with the scan request
|
||||
@@ -383,11 +365,31 @@ bool sap_dfs_is_w53_invalid(tHalHandle hHal, uint8_t channelID);
|
||||
bool sap_dfs_is_channel_in_preferred_location(tHalHandle hHal,
|
||||
uint8_t channelID);
|
||||
|
||||
QDF_STATUS sap_goto_channel_sel(
|
||||
struct sap_context *sapContext,
|
||||
ptWLAN_SAPEvent sapEvent,
|
||||
bool sap_do_acs_pre_start_bss,
|
||||
bool check_for_connection_update);
|
||||
/**
|
||||
* sap_channel_sel - Function for initiating scan request for ACS
|
||||
* @sap_context: Sap Context value.
|
||||
*
|
||||
* Initiates Scan for ACS to pick a channel.
|
||||
*
|
||||
* Return: The QDF_STATUS code associated with performing the operation.
|
||||
*/
|
||||
QDF_STATUS sap_channel_sel(struct sap_context *sapContext);
|
||||
|
||||
/**
|
||||
* sap_validate_chan - Function validate the channel and forces SCC
|
||||
* @sap_context: Sap Context value.
|
||||
* @pre_start_bss: if its called pre start BSS with valid channel.
|
||||
* @check_for_connection_update: true, check and wait for connection update
|
||||
* false, do not perform connection update
|
||||
*
|
||||
* validate and update the channel in case of force SCC.
|
||||
*
|
||||
* Return: The QDF_STATUS code associated with performing the operation.
|
||||
*/
|
||||
QDF_STATUS
|
||||
sap_validate_chan(struct sap_context *sap_context,
|
||||
bool pre_start_bss,
|
||||
bool check_for_connection_update);
|
||||
|
||||
/**
|
||||
* sap_check_in_avoid_ch_list() - checks if given channel present is channel
|
||||
|
@@ -2483,7 +2483,6 @@ QDF_STATUS wlansap_acs_chselect(struct sap_context *sap_context,
|
||||
tHalHandle h_hal = NULL;
|
||||
QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
|
||||
tpAniSirGlobal pmac = NULL;
|
||||
tWLAN_SAPEvent sapEvent; /* State machine event */
|
||||
|
||||
if (NULL == sap_context) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
@@ -2534,7 +2533,7 @@ QDF_STATUS wlansap_acs_chselect(struct sap_context *sap_context,
|
||||
* different scan callback function to process
|
||||
* the results pre start BSS.
|
||||
*/
|
||||
qdf_status = sap_goto_channel_sel(sap_context, &sapEvent, true, false);
|
||||
qdf_status = sap_channel_sel(sap_context);
|
||||
|
||||
if (QDF_STATUS_E_ABORTED == qdf_status) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
|
||||
|
Reference in New Issue
Block a user