summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Girigowda <sgirigow@qca.qualcomm.com>2015-06-23 19:20:50 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-07-03 18:51:31 +0530
commitbbfad19b1f3bcd8f1a797085baef8a28d729d8fa (patch)
treefc812d0ff3789c10ba2047d9f343a24b924ff0ae
parentded57b8212d4d542dec248db4ae952749a9665a8 (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.h3
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c41
-rw-r--r--CORE/MAC/inc/sirApi.h10
-rw-r--r--CORE/SERVICES/WMA/wma.c10
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;