Merge "qcacld-3.0: Add new ini param for min rest time during roaming scan" into wlan-cld3.driver.lnx.2.0-dev

This commit is contained in:
CNSS_WLAN Service 2017-07-25 09:07:46 -07:00 • committed by Gerrit - the friendly Code Review server
commit 0a40c2ac36
11 changed files with 130 additions and 2 deletions

View file

@ -412,6 +412,31 @@ enum hdd_dot11_mode {
#define CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX (300)
#define CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT (200)
/*
* <ini>
* gRoamRestTimeMin - Set min neighbor scan timer period
* @Min: 3
* @Max: 300
* @Default: 200
*
* This is the min rest time after which firmware will check for traffic
* and if there no traffic it will move to a new channel to scan
* else it will stay on the home channel till gNeighborScanTimerPeriod time
* and then will move to a new channel to scan.
*
* Related: None
*
* Supported Feature: LFR Scan
*
* Usage: External
*
* </ini>
*/
#define CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_NAME "gRoamRestTimeMin"
#define CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_MIN (3)
#define CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_MAX (300)
#define CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_DEFAULT (200)
/*
* <ini>
* gOpportunisticThresholdDiff - Set oppurtunistic threshold diff
@ -10611,6 +10636,7 @@ struct hdd_config {
bool fFTResourceReqSupported;
uint16_t nNeighborScanPeriod;
uint16_t neighbor_scan_min_period;
uint8_t nNeighborLookupRssiThreshold;
uint8_t delay_before_vdev_stop;
uint8_t nOpportunisticThresholdDiff;

View file

@ -175,6 +175,25 @@ cb_notify_set_neighbor_scan_period(hdd_context_t *pHddCtx,
pHddCtx->config->nNeighborScanPeriod);
}
/*
* cb_notify_set_neighbor_scan_min_period() - configure min rest
* time during roaming scan
*
* @hdd_ctx: HDD context data structure
* @notify_id: Identifies 1 of the 4 parameters to be modified
*
* Picks up the value from hdd configuration and passes it to SME.
* Return: void
*/
static void
cb_notify_set_neighbor_scan_min_period(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_set_neighbor_scan_min_period(pHddCtx->hHal, 0,
pHddCtx->config->
neighbor_scan_min_period);
}
static void
cb_notify_set_neighbor_results_refresh_period(hdd_context_t *pHddCtx,
unsigned long notifyId)
@ -1275,6 +1294,16 @@ struct reg_table_entry g_registry_table[] = {
CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX,
cb_notify_set_neighbor_scan_period, 0),
REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_NAME,
WLAN_PARAM_Integer,
struct hdd_config, neighbor_scan_min_period,
VAR_FLAGS_OPTIONAL |
VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_DEFAULT,
CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_MIN,
CFG_NEIGHBOR_SCAN_MIN_TIMER_PERIOD_MAX,
cb_notify_set_neighbor_scan_min_period, 0),
REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME,
WLAN_PARAM_Integer,
struct hdd_config, nNeighborLookupRssiThreshold,
@ -5522,6 +5551,8 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
pHddCtx->config->nMaxNeighborReqTries);
hdd_info("Name = [nNeighborScanPeriod] Value = [%u] ",
pHddCtx->config->nNeighborScanPeriod);
hdd_info("Name = [n_neighbor_scan_min_period] Value = [%u] ",
pHddCtx->config->neighbor_scan_min_period);
hdd_info("Name = [nNeighborScanResultsRefreshPeriod] Value = [%u] ",
pHddCtx->config->nNeighborResultsRefreshPeriod);
hdd_info("Name = [nEmptyScanRefreshPeriod] Value = [%u] ",
@ -7484,6 +7515,9 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
pConfig->nNeighborScanMinChanTime;
smeConfig->csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod =
pConfig->nNeighborScanPeriod;
smeConfig->csrConfig.neighborRoamConfig.
neighbor_scan_min_timer_period =
pConfig->neighbor_scan_min_period;
smeConfig->csrConfig.neighborRoamConfig.nMaxNeighborRetries =
pConfig->nMaxNeighborReqTries;
smeConfig->csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod =

View file

@ -3028,6 +3028,7 @@ typedef struct sSirRoamOffloadScanReq {
uint8_t Command;
uint8_t reason;
uint16_t NeighborScanTimerPeriod;
uint16_t neighbor_scan_min_timer_period;
uint16_t NeighborRoamScanRefreshPeriod;
uint16_t NeighborScanChannelMinTime;
uint16_t NeighborScanChannelMaxTime;

View file

@ -1058,6 +1058,7 @@ typedef struct tagCsr11rConfigParams {
typedef struct tagCsrNeighborRoamConfigParams {
uint32_t nNeighborScanTimerPeriod;
uint32_t neighbor_scan_min_timer_period;
uint8_t nNeighborLookupRssiThreshold;
uint16_t nNeighborScanMinChanTime;
uint16_t nNeighborScanMaxChanTime;

View file

@ -429,6 +429,7 @@ typedef struct tagCsr11rConfig {
typedef struct tagCsrNeighborRoamConfig {
uint32_t nNeighborScanTimerPeriod;
uint32_t neighbor_scan_min_timer_period;
uint8_t nNeighborLookupRssiThreshold;
uint16_t nNeighborScanMinChanTime;
uint16_t nNeighborScanMaxChanTime;

View file

@ -54,6 +54,7 @@ typedef enum {
typedef struct sCsrNeighborRoamCfgParams {
uint8_t maxNeighborRetries;
uint32_t neighborScanPeriod;
uint32_t neighbor_scan_min_period;
tCsrChannelInfo channelInfo;
uint8_t neighborLookupThreshold;
uint8_t neighborReassocThreshold;

View file

@ -640,6 +640,8 @@ uint16_t sme_get_neighbor_scan_max_chan_time(tHalHandle hHal,
QDF_STATUS sme_set_neighbor_scan_period(tHalHandle hHal, uint8_t sessionId,
const uint16_t nNeighborScanPeriod);
uint16_t sme_get_neighbor_scan_period(tHalHandle hHal, uint8_t sessionId);
QDF_STATUS sme_set_neighbor_scan_min_period(tHalHandle h_hal,
uint8_t session_id, const uint16_t neighbor_scan_min_period);
QDF_STATUS sme_set_roam_bmiss_first_bcnt(tHalHandle hHal,
uint8_t sessionId, const uint8_t nRoamBmissFirstBcnt);
uint8_t sme_get_roam_bmiss_first_bcnt(tHalHandle hHal);

View file

@ -8957,7 +8957,55 @@ uint16_t sme_get_neighbor_scan_period(tHalHandle hHal, uint8_t sessionId)
neighborScanPeriod;
}
/**
* sme_set_neighbor_scan_min_period() - Update neighbor_scan_min_period
* This function is called through dynamic setConfig callback function
* to configure neighbor_scan_min_period
*
* @hal - HAL handle for device
* @session_id - Session Identifier
* @neighbor_scan_min_period - neighbor scan min period
*
* Return - QDF_STATUS
*/
QDF_STATUS sme_set_neighbor_scan_min_period(tHalHandle hal,
uint8_t session_id,
const uint16_t
neighbor_scan_min_period)
{
tpAniSirGlobal pmac = PMAC_STRUCT(hal);
QDF_STATUS status = QDF_STATUS_SUCCESS;
tCsrNeighborRoamConfig *p_neighbor_roam_config = NULL;
tpCsrNeighborRoamControlInfo p_neighbor_roam_info = NULL;
if (session_id >= CSR_ROAM_SESSION_MAX) {
sme_err("Invalid sme session id: %d", session_id);
return QDF_STATUS_E_INVAL;
}
status = sme_acquire_global_lock(&pmac->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
p_neighbor_roam_config =
&pmac->roam.configParam.neighborRoamConfig;
p_neighbor_roam_info = &pmac->
roam.neighborRoamInfo[session_id];
sme_debug("LFR:set neighbor scan min period, old:%d, "
"new: %d, state: %s",
pmac->roam.configParam.neighborRoamConfig.
neighbor_scan_min_timer_period,
neighbor_scan_min_period,
mac_trace_get_neighbour_roam_state(pmac->roam.
neighborRoamInfo[session_id].
neighborRoamState));
p_neighbor_roam_config->neighbor_scan_min_timer_period =
neighbor_scan_min_period;
p_neighbor_roam_info->cfgParams.neighbor_scan_min_period =
neighbor_scan_min_period;
sme_release_global_lock(&pmac->sme);
}
return status;
}
/*--------------------------------------------------------------------------
\brief sme_get_roam_rssi_diff() - get Roam rssi diff

View file

@ -1428,6 +1428,8 @@ static void init_config_param(tpAniSirGlobal pMac)
pMac->roam.configParam.neighborRoamConfig.nNeighborScanMaxChanTime = 40;
pMac->roam.configParam.neighborRoamConfig.nNeighborScanTimerPeriod =
200;
pMac->roam.configParam.neighborRoamConfig.
neighbor_scan_min_timer_period = 200;
pMac->roam.configParam.neighborRoamConfig.neighborScanChanList.
numChannels = 3;
pMac->roam.configParam.neighborRoamConfig.neighborScanChanList.
@ -2558,6 +2560,9 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
sme_debug("nNeighborScanTimerPerioid: %d",
pMac->roam.configParam.neighborRoamConfig.
nNeighborScanTimerPeriod);
sme_debug("neighbor_scan_min_timer_period: %d",
pMac->roam.configParam.neighborRoamConfig.
neighbor_scan_min_timer_period);
sme_debug("nNeighborLookupRssiThreshold: %d",
pMac->roam.configParam.neighborRoamConfig.
nNeighborLookupRssiThreshold);
@ -17146,6 +17151,8 @@ csr_create_roam_scan_offload_request(tpAniSirGlobal mac_ctx,
req_buf->reason = reason;
req_buf->NeighborScanTimerPeriod =
roam_info->cfgParams.neighborScanPeriod;
req_buf->neighbor_scan_min_timer_period =
roam_info->cfgParams.neighbor_scan_min_period;
req_buf->NeighborRoamScanRefreshPeriod =
roam_info->cfgParams.neighborResultsRefreshPeriod;
req_buf->NeighborScanChannelMinTime =

View file

@ -1264,6 +1264,9 @@ QDF_STATUS csr_neighbor_roam_init(tpAniSirGlobal pMac, uint8_t sessionId)
pNeighborRoamInfo->cfgParams.neighborScanPeriod =
pMac->roam.configParam.neighborRoamConfig.
nNeighborScanTimerPeriod;
pNeighborRoamInfo->cfgParams.neighbor_scan_min_period =
pMac->roam.configParam.neighborRoamConfig.
neighbor_scan_min_timer_period;
pNeighborRoamInfo->cfgParams.neighborResultsRefreshPeriod =
pMac->roam.configParam.neighborRoamConfig.
nNeighborResultsRefreshPeriod;

View file

@ -1398,9 +1398,12 @@ void wma_roam_scan_fill_scan_params(tp_wma_handle wma_handle,
__func__,
roam_req->NeighborScanChannelMinTime,
roam_req->NeighborScanChannelMaxTime);
WMA_LOGD("%s: NeighborScanTimerPeriod: %d HomeAwayTime: %d nProbes: %d",
WMA_LOGD("%s: NeighborScanTimerPeriod: %d "
"neighbor_scan_min_timer_period %d "
"HomeAwayTime: %d nProbes: %d",
__func__,
roam_req->NeighborScanTimerPeriod,
roam_req->neighbor_scan_min_timer_period,
roam_req->HomeAwayTime, roam_req->nProbes);
/*
@ -1476,7 +1479,8 @@ void wma_roam_scan_fill_scan_params(tp_wma_handle wma_handle,
QDF_MAX(scan_params->burst_duration,
scan_params->dwell_time_passive);
}
scan_params->min_rest_time = roam_req->NeighborScanTimerPeriod;
scan_params->min_rest_time =
roam_req->neighbor_scan_min_timer_period;
scan_params->max_rest_time = roam_req->NeighborScanTimerPeriod;
scan_params->repeat_probe_time = (roam_req->nProbes > 0) ?
QDF_MAX(scan_params->dwell_time_active /