diff options
| author | Srinivas Girigowda <sgirigow@qca.qualcomm.com> | 2015-06-23 19:20:50 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-07-03 18:51:31 +0530 |
| commit | bbfad19b1f3bcd8f1a797085baef8a28d729d8fa (patch) | |
| tree | fc812d0ff3789c10ba2047d9f343a24b924ff0ae | |
| parent | ded57b8212d4d542dec248db4ae952749a9665a8 (diff) | |
qcacld-2.0: Support LP_EXTENDED_BATCHING configuration flag
Add a new NL vendor attribute to send down the configuration flags
to firmware. Driver receives the input configuration flag with 0th bit set,
which indicates LP_EXTENDED_BATCHING is enabled.
Host driver maps it to appropriate configuration flags.
Change-Id: Id320df33bf390080997448c7167d49c4999f7c09
CRs-Fixed: 860386
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg80211.h | 3 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 41 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 10 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 10 |
4 files changed, 57 insertions, 7 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h index 400518d78365..14bf8ed44bba 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg80211.h +++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h @@ -555,7 +555,8 @@ enum qca_wlan_vendor_attr_extscan_config_params /* Signed 32-bit value */ QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_RSSI_HIGH, - + /* Unsigned 32-bit value; a bitmask w/additional extscan config flag. */ + QCA_WLAN_VENDOR_ATTR_EXTSCAN_CONFIGURATION_FLAGS, /* keep last */ QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_AFTER_LAST, diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index c3388210e2c5..8a2705b3e76c 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -864,6 +864,7 @@ wlan_hdd_extscan_config_policy[QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_ [QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_BAND] = { .type = NLA_U8 }, [QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_RSSI_LOW] = { .type = NLA_S32 }, [QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_RSSI_HIGH] = { .type = NLA_S32 }, + [QCA_WLAN_VENDOR_ATTR_EXTSCAN_CONFIGURATION_FLAGS] = { .type = NLA_U32 }, }; static const struct nla_policy @@ -3553,6 +3554,25 @@ static int hdd_extscan_start_fill_bucket_channel_spec( } /* + * hdd_extscan_map_usr_drv_config_flags() - map userspace to driver config flags + * @config_flags - [input] configuration flags. + * + * This function maps user space received configuration flags to + * driver representation. + * + * Return: configuration flags + */ +static uint32_t hdd_extscan_map_usr_drv_config_flags(uint32_t config_flags) +{ + uint32_t configuration_flags = 0; + + if (config_flags & EXTSCAN_LP_EXTENDED_BATCHING) + configuration_flags |= EXTSCAN_LP_EXTENDED_BATCHING; + + return configuration_flags; +} + +/* * define short names for the global vendor params * used by wlan_hdd_cfg80211_extscan_start() */ @@ -3570,6 +3590,8 @@ static int hdd_extscan_start_fill_bucket_channel_spec( QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_REPORT_THRESHOLD_NUM_SCANS #define PARAM_NUM_BUCKETS \ QCA_WLAN_VENDOR_ATTR_EXTSCAN_SCAN_CMD_PARAMS_NUM_BUCKETS +#define PARAM_CONFIG_FLAGS \ + QCA_WLAN_VENDOR_ATTR_EXTSCAN_CONFIGURATION_FLAGS /** * __wlan_hdd_cfg80211_extscan_start() - start extscan @@ -3674,8 +3696,19 @@ static int __wlan_hdd_cfg80211_extscan_start(struct wiphy *wiphy, "Setting numBuckets to %u"), WLAN_EXTSCAN_MAX_BUCKETS); pReqMsg->numBuckets = WLAN_EXTSCAN_MAX_BUCKETS; } - hddLog(LOG1, FL("Number of Buckets %d"), - pReqMsg->numBuckets); + hddLog(LOG1, FL("Number of Buckets %d"), pReqMsg->numBuckets); + + /* This is optional attribute, if not present set it to 0 */ + if (!tb[PARAM_CONFIG_FLAGS]) + pReqMsg->configuration_flags = 0; + else + pReqMsg->configuration_flags = + hdd_extscan_map_usr_drv_config_flags( + nla_get_u32(tb[PARAM_CONFIG_FLAGS])); + + hddLog(LOG1, FL("Configuration flags: %u"), + pReqMsg->configuration_flags); + if (!tb[QCA_WLAN_VENDOR_ATTR_EXTSCAN_BUCKET_SPEC]) { hddLog(LOGE, FL("attr bucket spec failed")); goto fail; @@ -3730,6 +3763,7 @@ fail: #undef PARAMS_RPT_THRHLD_PERCENT #undef PARAMS_RPT_THRHLD_NUM_SCANS #undef PARAMS_NUM_BUCKETS +#undef PARAM_CONFIG_FLAGS /** * wlan_hdd_cfg80211_extscan_start() - start extscan @@ -8339,9 +8373,6 @@ wlan_hdd_add_tx_ptrn(hdd_adapter_t *adapter, hdd_context_t *hdd_ctx, add_req->ucPtrnSize); add_req->ucPtrnSize += len; - VOS_TRACE_HEX_DUMP(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO, - add_req->ucPattern, add_req->ucPtrnSize); - ret = hdd_map_req_id_to_pattern_id(hdd_ctx, request_id, &pattern_id); if (ret) { hddLog(LOGW, FL("req id to pattern id failed (ret=%d)"), ret); diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 153f8bb6b06b..520d5a963673 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -4833,6 +4833,14 @@ typedef enum WIFI_SCAN_COMPLETE, } tWifiScanEventType; +/** + * enum extscan_configuration_flags - extscan config flags + * @EXTSCAN_LP_EXTENDED_BATCHING: extended batching + */ +enum extscan_configuration_flags { + EXTSCAN_LP_EXTENDED_BATCHING = 0x00000001, +}; + typedef struct { tSirMacAddr bssid; @@ -5129,6 +5137,7 @@ typedef struct * @max_dwell_time_active: per bucket maximum active dwell time * @min_dwell_time_passive: per bucket minimum passive dwell time * @max_dwell_time_passive: per bucket maximum passive dwell time + * @configuration_flags: configuration flags * @buckets: bucket list */ typedef struct @@ -5146,6 +5155,7 @@ typedef struct uint32_t max_dwell_time_active; uint32_t min_dwell_time_passive; uint32_t max_dwell_time_passive; + uint32_t configuration_flags; tSirWifiScanBucketSpec buckets[WLAN_EXTSCAN_MAX_BUCKETS]; } tSirWifiScanCmdReqParams, *tpSirWifiScanCmdReqParams; diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index a04d9cac5886..ad502107adcb 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -209,6 +209,7 @@ enum extscan_report_events_type { EXTSCAN_REPORT_EVENTS_FULL_RESULTS = 0x02, EXTSCAN_REPORT_EVENTS_NO_BATCH = 0x04, }; + #endif /* Data rate 100KBPS based on IE Index */ @@ -2905,8 +2906,9 @@ static int wma_extscan_operations_event_handler(void *handle, pMac->sme.pExtScanIndCb(pMac->hHdd, eSIR_EXTSCAN_SCAN_PROGRESS_EVENT_IND, oprn_ind); -exit_handler: WMA_LOGD("%s: sending scan progress event to hdd", __func__); + +exit_handler: vos_mem_free(oprn_ind); return 0; } @@ -22924,6 +22926,12 @@ static VOS_STATUS wma_process_ll_stats_getReq cmd->vdev_id = pstart->sessionId; cmd->base_period = pstart->basePeriod; cmd->num_buckets = nbuckets; + cmd->configuration_flags = 0; + + if (pstart->configuration_flags & EXTSCAN_LP_EXTENDED_BATCHING) + cmd->configuration_flags |= WMI_EXTSCAN_EXTENDED_BATCHING_EN; + WMA_LOGI("%s: configuration_flags: 0x%x", __func__, + cmd->configuration_flags); cmd->min_rest_time = WMA_EXTSCAN_REST_TIME; cmd->max_rest_time = WMA_EXTSCAN_REST_TIME; |
