qcacld-3.0: Add diag event support for ACS

Send ACS diag event when SAP is doing ACS.

Change-Id: I409b57dce98a12796cfee1619c8efe47a403bd1d
CRs-Fixed: 2238666
This commit is contained in:
wadesong 2018-02-02 17:57:20 +08:00 • committed by nshrivas
commit cb0ded2438
6 changed files with 81 additions and 4 deletions

View file

@ -2586,7 +2586,11 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
sap_config->acs_cfg.ch_width, ht_enabled, vht_enabled,
sap_config->acs_cfg.start_ch, sap_config->acs_cfg.end_ch,
sap_config->acs_cfg.band);
host_log_acs_req_event(adapter->dev->name,
csr_phy_mode_str(sap_config->acs_cfg.hw_mode),
ch_width, ht_enabled, vht_enabled,
sap_config->acs_cfg.start_ch,
sap_config->acs_cfg.end_ch);
if (hdd_ctx->config->auto_channel_select_weight)
sap_config->auto_channel_select_weight =
hdd_ctx->config->auto_channel_select_weight;

View file

@ -286,6 +286,31 @@ static QDF_STATUS sap_hdd_signal_event_handler(void *ctx)
return status;
}
/**
* acs_scan_done_status_str() - parse scan status to string
* @status: scan status
*
* This function parse scan status to string
*
* Return: status string
*
*/
static const char *acs_scan_done_status_str(eCsrScanStatus status)
{
switch (status) {
case eCSR_SCAN_SUCCESS:
return "Success";
case eCSR_SCAN_FAILURE:
return "Failure";
case eCSR_SCAN_ABORT:
return "Abort";
case eCSR_SCAN_FOUND_PEER:
return "Found peer";
default:
return "Unknown";
}
}
QDF_STATUS wlansap_pre_start_bss_acs_scan_callback(tHalHandle hal_handle,
struct sap_context *sap_ctx,
uint8_t sessionid,
@ -297,6 +322,8 @@ QDF_STATUS wlansap_pre_start_bss_acs_scan_callback(tHalHandle hal_handle,
uint8_t oper_channel = 0;
QDF_STATUS status = QDF_STATUS_E_FAILURE;
host_log_acs_scan_done(acs_scan_done_status_str(scan_status),
sessionid, scanid);
if (eCSR_SCAN_SUCCESS != scan_status) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("CSR scan_status = eCSR_SCAN_ABORT/FAILURE (%d), choose default channel"),

View file

@ -1700,6 +1700,10 @@ debug_info:
"In %s, Chan=%d Weight= %d rssiAgr=%d bssCount=%d",
__func__, pSpectCh->chNum, pSpectCh->weight,
pSpectCh->rssiAgr, pSpectCh->bssCount);
host_log_acs_chan_spect_weight(pSpectCh->chNum,
(uint16_t)pSpectCh->weight,
pSpectCh->rssiAgr,
pSpectCh->bssCount);
/* ------ Debug Info ------ */
pSpectCh++;
}
@ -2837,6 +2841,8 @@ sap_ch_sel_end:
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
FL("Running SAP Ch select Completed, Ch=%d"), best_ch_num);
host_log_acs_best_chan(best_ch_num, sap_ctx->acsBestChannelInfo.weight);
if (best_ch_num > 0 && best_ch_num <= 252)
return best_ch_num;
else

View file

@ -851,6 +851,8 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
#endif
tHalHandle h_hal;
uint8_t con_ch;
uint8_t vdev_id;
uint32_t scan_id;
h_hal = cds_get_context(QDF_MODULE_ID_SME);
if (NULL == h_hal) {
@ -1005,8 +1007,10 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
ucfg_scan_init_default_params(vdev, req);
req->scan_req.dwell_time_active = 0;
req->scan_req.scan_id = ucfg_scan_get_scan_id(mac_ctx->psoc);
req->scan_req.vdev_id = wlan_vdev_get_id(vdev);
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;
sap_get_channel_list(sap_context, &channel_list,
&num_of_channels);
@ -1074,8 +1078,9 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
} else {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
FL("return sme_ScanReq, scanID=%d, Ch=%d"),
req->scan_req.scan_id,
scan_id,
sap_context->channel);
host_log_acs_scan_start(scan_id, vdev_id);
}
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
}

View file

@ -1709,6 +1709,7 @@ QDF_STATUS csr_set_channels(tHalHandle hHal, tCsrConfigParam *pParam);
/* enum to string conversion for debug output */
const char *get_e_roam_cmd_status_str(eRoamCmdStatus val);
const char *get_e_csr_roam_result_str(eCsrRoamResult val);
const char *csr_phy_mode_str(eCsrPhyMode phy_mode);
QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode,
enum band_info eBand, bool *pfRestartNeeded);
typedef void (*csr_roamLinkQualityIndCallback)

View file

@ -374,6 +374,40 @@ const char *get_e_csr_roam_result_str(eCsrRoamResult val)
}
}
const char *csr_phy_mode_str(eCsrPhyMode phy_mode)
{
switch (phy_mode) {
case eCSR_DOT11_MODE_abg:
return "abg";
case eCSR_DOT11_MODE_11a:
return "11a";
case eCSR_DOT11_MODE_11b:
return "11b";
case eCSR_DOT11_MODE_11g:
return "11g";
case eCSR_DOT11_MODE_11n:
return "11n";
case eCSR_DOT11_MODE_11g_ONLY:
return "11g_only";
case eCSR_DOT11_MODE_11n_ONLY:
return "11n_only";
case eCSR_DOT11_MODE_11b_ONLY:
return "11b_only";
case eCSR_DOT11_MODE_11ac:
return "11ac";
case eCSR_DOT11_MODE_11ac_ONLY:
return "11ac_only";
case eCSR_DOT11_MODE_AUTO:
return "auto";
case eCSR_DOT11_MODE_11ax:
return "11ax";
case eCSR_DOT11_MODE_11ax_ONLY:
return "11ax_only";
default:
return "unknown";
}
}
void purge_sme_session_active_scan_cmd_list(struct sAniSirGlobal *mac_ctx,
uint32_t session_id)
{