qcacld-3.0: Channel hopping for 2_4G and 5G band

qcacld-2.0 to qcacld-3.0 propagation

Allow device switch to a different channel if the current channel is
congested, using the 11h channel switch announcement.

Change-Id: I1766785017e43f17cc800039b383ee5dabcd6ea5
CRs-Fixed: 2082632
Этот коммит содержится в:
gaolez
2017-03-21 19:23:58 +08:00
коммит произвёл Gerrit - the friendly Code Review server
родитель 2aa3f24cc2
Коммит 76d2a16f03
11 изменённых файлов: 159 добавлений и 35 удалений

Просмотреть файл

@@ -11051,6 +11051,26 @@ enum l1ss_sleep_allowed {
#define CFG_SAP_CH_SWITCH_BEACON_CNT_MAX (5)
#define CFG_SAP_CH_SWITCH_BEACON_CNT_DEFAULT (5)
/*
* <ini>
* g_sap_chanswitch_mode - channel switch mode
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to configure channel switch mode
*
* Related: none
*
* Usage: External
*
* </ini>
*/
#define CFG_SAP_CH_SWITCH_MODE "g_sap_chanswitch_mode"
#define CFG_SAP_CH_SWITCH_MODE_MIN (0)
#define CFG_SAP_CH_SWITCH_MODE_MAX (1)
#define CFG_SAP_CH_SWITCH_MODE_DEFAULT (1)
/*
* <ini>
* g_fils_max_chan_guard_time - Set maximum channel guard time(ms)
@@ -12170,6 +12190,7 @@ struct hdd_config {
bool fw_timeout_crash;
/* beacon count before channel switch */
uint8_t sap_chanswitch_beacon_cnt;
uint8_t sap_chanswitch_mode;
uint32_t rx_wakelock_timeout;
uint32_t max_sched_scan_plan_interval;
uint32_t max_sched_scan_plan_iterations;

Просмотреть файл

@@ -4255,6 +4255,12 @@ struct reg_table_entry g_registry_table[] = {
CFG_SAP_CH_SWITCH_BEACON_CNT_DEFAULT,
CFG_SAP_CH_SWITCH_BEACON_CNT_MIN,
CFG_SAP_CH_SWITCH_BEACON_CNT_MAX),
REG_VARIABLE(CFG_SAP_CH_SWITCH_MODE, WLAN_PARAM_Integer,
struct hdd_config, sap_chanswitch_mode,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_SAP_CH_SWITCH_MODE_DEFAULT,
CFG_SAP_CH_SWITCH_MODE_MIN,
CFG_SAP_CH_SWITCH_MODE_MAX),
REG_VARIABLE(CFG_MAX_SCHED_SCAN_PLAN_INT_NAME, WLAN_PARAM_Integer,
struct hdd_config, max_sched_scan_plan_interval,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,

Просмотреть файл

@@ -5137,22 +5137,28 @@ QDF_STATUS hdd_softap_get_sta_info(hdd_adapter_t *pAdapter, uint8_t *pBuf,
for (i = 0; i <= maxSta; i++) {
hdd_station_info_t *sta_info_ptr = &pAdapter->aStaInfo[i];
if (sta_info_ptr->isUsed) {
len = scnprintf(pBuf, buf_len,
"%d %x:%x:%x:%x:%x:%x \t ecsa=%d\n",
sta_info_ptr->ucSTAId,
sta_info_ptr->macAddrSTA.bytes[0],
sta_info_ptr->macAddrSTA.bytes[1],
sta_info_ptr->macAddrSTA.bytes[2],
sta_info_ptr->macAddrSTA.bytes[3],
sta_info_ptr->macAddrSTA.bytes[4],
sta_info_ptr->macAddrSTA.bytes[5],
sta_info_ptr->ecsa_capable);
pBuf += len;
buf_len -= len;
}
if (!sta_info_ptr->isUsed)
continue;
if (CHAN_HOP_ALL_BANDS_ENABLE &&
(i == (WLAN_HDD_GET_AP_CTX_PTR(pAdapter))->uBCStaId))
continue;
if (WE_GET_STA_INFO_SIZE > buf_len)
break;
len = scnprintf(pBuf, buf_len,
"%5d %02x:%02x:%02x:%02x:%02x:%02x ecsa=%d\n",
sta_info_ptr->ucSTAId,
sta_info_ptr->macAddrSTA.bytes[0],
sta_info_ptr->macAddrSTA.bytes[1],
sta_info_ptr->macAddrSTA.bytes[2],
sta_info_ptr->macAddrSTA.bytes[3],
sta_info_ptr->macAddrSTA.bytes[4],
sta_info_ptr->macAddrSTA.bytes[5],
sta_info_ptr->ecsa_capable);
pBuf += len;
buf_len -= len;
}
EXIT();
@@ -7528,6 +7534,7 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
pConfig->disableDFSChSwitch = iniConfig->disableDFSChSwitch;
pConfig->sap_chanswitch_beacon_cnt =
iniConfig->sap_chanswitch_beacon_cnt;
pConfig->sap_chanswitch_mode = iniConfig->sap_chanswitch_mode;
/* channel is already set in the set_channel Call back */
/* pConfig->channel = pCommitConfig->channel; */