From 4d6c29599dd28ed3540f1ec3e83cfdbb261753af Mon Sep 17 00:00:00 2001 From: "Selvaraj, Sridhar" Date: Thu, 18 Aug 2016 12:29:02 +0530 Subject: [PATCH] qcacld-3.0: Fix max dwell time for passive scan beacon report qcacld-2.0 to qcacld-3.0 propagation Currently STA advertising the max. measurement duration of RM capability as half the beacon interval. When STA receives beacon report request frame, it is not using measurement duration indicated if it is above the advertised max. measurement duration However, firmware expects a minimum of one beacon interval to find the AP. Modify the max. measurement capability of RRM as one beacon interval. Also engineered the code to make use of the INI parameters for adjusting the max measurement duration. Git-commit: 0a18af7723c58987944780bad0ff7f35605413ac Change-Id: Idc0b4f15f2b7464507aacfaefb99e1ba48ad1eca CRs-Fixed: 1030590 --- core/hdd/inc/wlan_hdd_cfg.h | 10 +++++----- core/hdd/src/wlan_hdd_cfg.c | 12 ++++++++++++ core/mac/src/pe/include/rrm_global.h | 2 ++ core/mac/src/pe/rrm/rrm_api.c | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 7e6fca1267149..b8471301a7299 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -839,13 +839,13 @@ typedef enum { #define CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME "gRrmOperChanMax" /* section 11.10.3 IEEE std. 802.11k-2008 */ #define CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN (0) /* Maxduration = 2^(maxDuration - 4) * bcnIntvl. */ -#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX (8) -#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT (3) /* max duration = 2^-1 * bcnIntvl (50% of bcn intvl) */ +#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX (7) +#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT (4) /* max duration = 2^0 * bcnIntvl (100% of bcn intvl) */ #define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME "gRrmNonOperChanMax" /* Same as above. */ #define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN (0) -#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX (8) -#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT (3) +#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX (7) +#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT (4) #define CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME "gRrmRandnIntvl" #define CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN (10) @@ -862,7 +862,7 @@ typedef enum { * Comma is used as a separator for each byte. */ #define CFG_RM_CAPABILITY_NAME "rm_capability" -#define CFG_RM_CAPABILITY_DEFAULT "73,10,6D,00,04" +#define CFG_RM_CAPABILITY_DEFAULT "73,10,91,00,04" #define CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME "ImplicitQosIsEnabled" #define CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN (0) diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index b9bebdc0e1bb5..fdcf306c8fc81 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -7040,6 +7040,18 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx) hdd_hex_string_to_u8_array(pConfig->rm_capability, smeConfig->rrmConfig.rm_capability, &rrm_capab_len, DOT11F_IE_RRMENABLEDCAP_MAX_LEN); + /* + * Update the INI values gRrmOperChanMax and gRrmNonOperChanMax + * appropriately + */ + smeConfig->rrmConfig.rm_capability[2] = + ((pConfig->nOutChanMeasMaxDuration << + CAP_NONOPER_CHAN_MAX_DURATION_OFFSET) | + (pConfig->nOutChanMeasMaxDuration << + CAP_OPER_CHAN_MAX_DURATION_OFFSET) | + (smeConfig->rrmConfig.rm_capability[2] & + (RM_CAP_RM_MIB | RM_CAP_AP_CHAN_REPORT))); + /* Remaining config params not obtained from registry * On RF EVB beacon using channel 1. */ diff --git a/core/mac/src/pe/include/rrm_global.h b/core/mac/src/pe/include/rrm_global.h index 6d829fffa999e..d842726868fba 100644 --- a/core/mac/src/pe/include/rrm_global.h +++ b/core/mac/src/pe/include/rrm_global.h @@ -225,6 +225,8 @@ typedef struct sRrmPEContext { #define RCPI_MAX_VALUE (220) #define CALCULATE_RCPI(rssi) (((rssi) + 110) * 2) +#define CAP_OPER_CHAN_MAX_DURATION_OFFSET 2 +#define CAP_NONOPER_CHAN_MAX_DURATION_OFFSET 5 /* Bit mask are defined as per Draft P802.11REVmc_D4.2 */ /** diff --git a/core/mac/src/pe/rrm/rrm_api.c b/core/mac/src/pe/rrm/rrm_api.c index 771f182f9266a..d47adabab972d 100644 --- a/core/mac/src/pe/rrm/rrm_api.c +++ b/core/mac/src/pe/rrm/rrm_api.c @@ -1299,8 +1299,8 @@ tSirRetStatus rrm_initialize(tpAniSirGlobal pMac) pRRMCaps->fine_time_meas_rpt = 1; pRRMCaps->lci_capability = 1; - pRRMCaps->operatingChanMax = 3; - pRRMCaps->nonOperatingChanMax = 3; + pRRMCaps->operatingChanMax = 4; + pRRMCaps->nonOperatingChanMax = 4; return eSIR_SUCCESS; }