qcacld-3.0: Move buckets_scanned mask for extscan get cache result
qcacld-2.0 to qcacld-3.0 propagation
If host issues extscan get cache results, while gscan is not in
progress then buckets_scanned mask comes as zero. To handle this
issue now firmware sends the buckets_scanned mask as part of
wmi_extscan_rssi_info instead of fixed_param.
Change-Id: I5923a5fc642dd722bf6cc9f5496c7cedcf75e1a5
CRs-Fixed: 1001733
diff --git a/core/hdd/src/wlan_hdd_ext_scan.c b/core/hdd/src/wlan_hdd_ext_scan.c
index 6d99b95..51111af 100644
--- a/core/hdd/src/wlan_hdd_ext_scan.c
+++ b/core/hdd/src/wlan_hdd_ext_scan.c
@@ -316,12 +316,12 @@
#define EXTSCAN_CACHED_NL_FIXED_TLV \
((sizeof(data->request_id) + NLA_HDRLEN) + \
(sizeof(data->num_scan_ids) + NLA_HDRLEN) + \
- (sizeof(data->buckets_scanned) + NLA_HDRLEN)+ \
(sizeof(data->more_data) + NLA_HDRLEN))
#define EXTSCAN_CACHED_NL_SCAN_ID_TLV \
((sizeof(result->scan_id) + NLA_HDRLEN) + \
(sizeof(result->flags) + NLA_HDRLEN) + \
- (sizeof(result->num_results) + NLA_HDRLEN))
+ (sizeof(result->num_results) + NLA_HDRLEN))+ \
+ (sizeof(result->buckets_scanned) + NLA_HDRLEN)
#define EXTSCAN_CACHED_NL_SCAN_RESULTS_TLV \
((sizeof(ap->ts) + NLA_HDRLEN) + \
(sizeof(ap->ssid) + NLA_HDRLEN) + \
@@ -368,14 +368,14 @@
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
goto fail;
}
- hdd_notice("Req Id %u Num_scan_ids %u More Data %u buckets_scanned %u",
- data->request_id, data->num_scan_ids, data->more_data,
- data->buckets_scanned);
+ hdd_notice("Req Id %u Num_scan_ids %u More Data %u",
+ data->request_id, data->num_scan_ids, data->more_data);
result = &data->result[0];
for (i = 0; i < data->num_scan_ids; i++) {
- hdd_notice("[i=%d] scan_id %u flags %u num_results %u",
- i, result->scan_id, result->flags, result->num_results);
+ hdd_notice("[i=%d] scan_id %u flags %u num_results %u buckets scanned %u",
+ i, result->scan_id, result->flags, result->num_results,
+ result->buckets_scanned);
ap = &result->ap[0];
for (j = 0; j < result->num_results; j++) {
@@ -455,7 +455,7 @@
result->flags) ||
nla_put_u32(skb,
QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_BUCKETS_SCANNED,
- data->buckets_scanned) ||
+ result->buckets_scanned) ||
nla_put_u32(skb,
QCA_WLAN_VENDOR_ATTR_EXTSCAN_NUM_RESULTS_AVAILABLE,
result->num_results)) {
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index a7013bb..5c6df20 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -4338,12 +4338,14 @@
* @scan_id: a unique identifier for the scan unit
* @flags: a bitmask with additional information about scan
* @num_results: number of bssids retrieved by the scan
+ * @buckets_scanned: bitmask of buckets scanned in current extscan cycle
* @ap: wifi scan bssid results info
*/
struct extscan_cached_scan_result {
uint32_t scan_id;
uint32_t flags;
uint32_t num_results;
+ uint32_t buckets_scanned;
tSirWifiScanResult *ap;
};
@@ -4372,14 +4374,12 @@
* @more_data: 0 - for last fragment
* 1 - still more fragment(s) coming
* @num_scan_ids: number of scan ids
- * @buckets_scanned: bitmask of buckets scanned in current extscan cycle
* @result: wifi scan result
*/
struct extscan_cached_scan_results {
uint32_t request_id;
bool more_data;
uint32_t num_scan_ids;
- uint32_t buckets_scanned;
struct extscan_cached_scan_result *result;
};
diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c
index 491e720..c825f1d 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -4031,6 +4031,7 @@
t_scan_id_grp->scan_id = src_rssi->scan_cycle_id;
t_scan_id_grp->flags = src_rssi->flags;
+ t_scan_id_grp->buckets_scanned = src_rssi->buckets_scanned;
t_scan_id_grp->num_results = 1;
for (i = 1; i < event->num_entries_in_page; i++) {
src_rssi++;
@@ -4041,6 +4042,8 @@
prev_scan_id = t_scan_id_grp->scan_id =
src_rssi->scan_cycle_id;
t_scan_id_grp->flags = src_rssi->flags;
+ t_scan_id_grp->buckets_scanned =
+ src_rssi->buckets_scanned;
t_scan_id_grp->num_results = 1;
}
}
@@ -4197,7 +4200,6 @@
qdf_mem_zero(dest_cachelist, sizeof(*dest_cachelist));
dest_cachelist->request_id = event->request_id;
dest_cachelist->more_data = moredata;
- dest_cachelist->buckets_scanned = event->buckets_scanned;
scan_ids_cnt = wma_extscan_find_unique_scan_ids(cmd_param_info);
WMA_LOGI("%s: scan_ids_cnt %d", __func__, scan_ids_cnt);