wlan: Host driver changes to support batch scan
Host driver changes to support batch scan feature
CRs-fixed: 543172
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 09cabf4..cde55bf 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -209,6 +209,22 @@
#define HDD_ROAM_SCAN_CHANNEL_SWITCH_TIME 3
typedef v_U8_t tWlanHddMacAddr[HDD_MAC_ADDR_LEN];
+#ifdef FEATURE_WLAN_BATCH_SCAN
+#define HDD_BATCH_SCAN_VERSION (17)
+#define HDD_SET_BATCH_SCAN_DEFAULT_FREQ (30)/*batch scan frequency default 30s*/
+#define HDD_SET_BATCH_SCAN_BEST_NETWORK (16)/*best network default value*/
+#define HDD_SET_BATCH_SCAN_DEFAULT_BAND (0)/*auto means both 2.4GHz and 5GHz*/
+#define HDD_SET_BATCH_SCAN_24GHz_BAND_ONLY (1)/*only 2.4GHz band*/
+#define HDD_SET_BATCH_SCAN_5GHz_BAND_ONLY (2)/*only 5GHz band*/
+#define HDD_SET_BATCH_SCAN_REQ_TIME_OUT (15000) /*Batch scan req timeout in ms*/
+#define HDD_GET_BATCH_SCAN_RSP_TIME_OUT (15000) /*Batch scan req timeout in ms*/
+#define HDD_BATCH_SCAN_AP_META_INFO_SIZE (150) /*AP meta info size in string*/
+
+#define MIN(a, b) (a > b ? b : a)
+
+#endif
+
+
typedef struct hdd_tx_rx_stats_s
{
// start_xmit stats
@@ -707,6 +723,38 @@
} t_multicast_add_list;
#endif
+#ifdef FEATURE_WLAN_BATCH_SCAN
+
+/*Batch scan repsonse AP info*/
+typedef struct
+{
+ /*Batch ID*/
+ tANI_U32 batchId;
+ /*is it last AP in GET BATCH SCAN RSP*/
+ v_BOOL_t isLastAp;
+ /*BSSID*/
+ tANI_U8 bssid[SIR_MAC_ADDR_LEN];
+ /*SSID*/
+ tANI_U8 ssid[SIR_MAX_SSID_SIZE];
+ /*Channel*/
+ tANI_U8 ch;
+ /*RSSI or Level*/
+ tANI_U8 rssi;
+ /*Age*/
+ tANI_U32 age;
+}tHDDbatchScanRspApInfo;
+
+/*Batch scan response list*/
+struct tHDDBatchScanRspList
+{
+ tHDDbatchScanRspApInfo ApInfo;
+ struct tHDDBatchScanRspList *pNext;
+};
+
+typedef struct tHDDBatchScanRspList tHddBatchScanRsp;
+#endif
+
+
#define WLAN_HDD_ADAPTER_MAGIC 0x574c414e //ASCII "WLAN"
struct hdd_adapter_s
{
@@ -843,6 +891,38 @@
v_U32_t magic;
v_BOOL_t higherDtimTransition;
v_BOOL_t survey_idx;
+
+#ifdef FEATURE_WLAN_BATCH_SCAN
+ /*Completion variable for set batch scan request*/
+ struct completion hdd_set_batch_scan_req_var;
+ /*Completion variable for get batch scan request*/
+ struct completion hdd_get_batch_scan_req_var;
+ /*HDD batch scan lock*/
+ struct mutex hdd_batch_scan_lock;
+ /*HDD set batch scan request*/
+ tSirSetBatchScanReq hddSetBatchScanReq;
+ /*HDD set batch scan response*/
+ tSirSetBatchScanRsp hddSetBatchScanRsp;
+ /*HDD stop batch scan indication*/
+ tSirStopBatchScanInd hddStopBatchScanInd;
+ /*HDD get batch scan request*/
+ tSirTriggerBatchScanResultInd hddTriggerBatchScanResultInd;
+ /*Batched scan reponse queue: new batch scan results added at the tail
+ and old batch scan results are deleted from head*/
+ tHddBatchScanRsp *pBatchScanRsp;
+ /*No of scans in batch scan rsp(MSCAN)*/
+ v_U32_t numScanList;
+ /*isTruncated = 1 batch scan rsp is truncated
+ isTruncated = 0 batch scan rsp is complete*/
+ v_BOOL_t isTruncated;
+ /*Wait for get batch scan response from FW or not*/
+ volatile v_BOOL_t hdd_wait_for_get_batch_scan_rsp;
+ /*Wait for set batch scan response from FW or not*/
+ volatile v_BOOL_t hdd_wait_for_set_batch_scan_rsp;
+ /*Previous batch scan ID*/
+ v_U32_t prev_batch_id;
+#endif
+
};
#define WLAN_HDD_GET_STATION_CTX_PTR(pAdapter) (&(pAdapter)->sessionCtx.station)