wlan: LFR2.0 Host Driver Changes

Master Gerrit for WLAN_FEATURE_ROAM_SCAN_OFFLOAD.
Includes all the Host Driver Changes.

Change-Id: I1c7adb30b24b49c6f2b5c3de3394831812b1c6d0
CRs-Fixed: 460568
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index b7b4d8c..5c33b34 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -4259,6 +4259,11 @@
 
 #define WDI_PNO_MAX_PROBE_SIZE    450
 
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+#define WDI_ROAM_SCAN_MAX_CHANNELS       80 /* NUM_RF_CHANNELS */
+#define WDI_ROAM_SCAN_MAX_PROBE_SIZE     450
+#define WDI_ROAM_SCAN_RESERVED_BYTES     64
+#endif
 
 /*---------------------------------------------------------------------------
   WDI_AuthType
@@ -4426,6 +4431,86 @@
    void*                      pUserData; 
 } WDI_PNOScanReqParamsType;
 
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+
+typedef struct
+{
+  /*The SSID of the preferred network*/
+  WDI_MacSSid  ssId;
+  wpt_uint8    currAPbssid[WDI_MAC_ADDR_LEN];
+
+  /*The authentication method of the preferred network*/
+  WDI_AuthType authentication;
+
+  /*The encryption method of the preferred network*/
+  WDI_EdType   encryption;
+  WDI_EdType   mcencryption;
+
+  /*SSID broadcast type, normal, hidden or unknown*/
+  //WDI_SSIDBcastType wdiBcastNetworkType;
+
+  /*channel count - 0 for all channels*/
+  wpt_uint8    ChannelCount;
+
+  /*the actual channels*/
+  wpt_uint8    ChannelCache[WDI_ROAM_SCAN_MAX_CHANNELS];
+
+} WDI_RoamNetworkType;
+
+typedef struct WDIMobilityDomainInfo
+{
+ wpt_uint8 mdiePresent;
+ wpt_uint16 mobilityDomain;
+} WDI_MobilityDomainInfo;
+
+/*---------------------------------------------------------------------------
+  WDI_RoamOffloadScanInfo
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  wpt_boolean RoamScanOffloadEnabled;
+  wpt_uint8   LookupThreshold;
+  wpt_uint8   RoamRssiDiff;
+  wpt_uint8   ChannelCacheType;
+  wpt_uint8   Command;
+  wpt_uint8   StartScanReason;
+  wpt_uint16  NeighborScanTimerPeriod;
+  wpt_uint16  NeighborRoamScanRefreshPeriod;
+  wpt_uint16  NeighborScanChannelMinTime;
+  wpt_uint16  NeighborScanChannelMaxTime;
+  wpt_uint16  EmptyRefreshScanPeriod;
+  wpt_uint8   ValidChannelCount;
+  wpt_uint8   ValidChannelList[WDI_ROAM_SCAN_MAX_CHANNELS];
+  wpt_boolean IsCCXEnabled;
+  /*Probe template for 2.4GHz band*/
+  wpt_uint16  us24GProbeSize;
+  wpt_uint8   a24GProbeTemplate[WDI_ROAM_SCAN_MAX_PROBE_SIZE];
+
+  /*Probe template for 5GHz band*/
+  wpt_uint16  us5GProbeSize;
+  wpt_uint8   a5GProbeTemplate[WDI_ROAM_SCAN_MAX_PROBE_SIZE];
+  /*LFR BG Scan will currently look for only on network to which it is initially connected.
+   * As per requirement, later, the following structure can be used as an array of networks.*/
+  WDI_RoamNetworkType     ConnectedNetwork;
+  WDI_MobilityDomainInfo  MDID;
+  wpt_uint8               ReservedBytes[WDI_ROAM_SCAN_RESERVED_BYTES];
+} WDI_RoamOffloadScanInfo;
+
+typedef struct
+{
+   /* Start Roam Candidate Lookup Offload Back Ground Info Type */
+   WDI_RoamOffloadScanInfo        wdiRoamOffloadScanInfo;
+   /* Request status callback offered by UMAC - it is called if the current req
+   has returned PENDING as status; it delivers the status of sending the message
+   over the BUS */
+   WDI_ReqStatusCb            wdiReqStatusCB;
+   /* The user data passed in by UMAC, it will be sent back when the above
+   function pointer will be called */
+   void*                      pUserData;
+} WDI_RoamCandidateLookupReqParamsType;
+
+#endif
+
 /*---------------------------------------------------------------------------
   WDI_SetRssiFilterReqParamsType
   PNO info passed to WDI form WDA
@@ -6334,6 +6419,30 @@
                                         void*       pUserData);
 #endif // FEATURE_WLAN_SCAN_PNO
 
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+/*---------------------------------------------------------------------------
+   WDI_RoamOffloadScanCb
+
+   DESCRIPTION
+
+   This callback is invoked by DAL when it has received a Start Roam Candidate Lookup Req
+   response from the underlying device.
+
+   PARAMETERS
+
+    IN
+    wdiStatus:  response status received from HAL
+    pUserData:  user data
+
+
+
+  RETURN VALUE
+    The result code associated with performing the operation
+---------------------------------------------------------------------------*/
+typedef void  (*WDI_RoamOffloadScanCb)(WDI_Status  wdiStatus,
+                                       void*       pUserData);
+
+#endif
 /*---------------------------------------------------------------------------
    WDI_SetTxPerTrackingRspCb
  
@@ -9004,6 +9113,31 @@
 );
 #endif // FEATURE_WLAN_SCAN_PNO
 
+#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
+/**
+ @brief WDI_StartRoamCandidateLookupReq
+
+ @param pwdiRoamCandidateLookupReqParams: Start Roam Candidate Lookup Req as specified
+        by the Device Interface
+
+        wdiRoamOffloadScanCb: callback for passing back the response
+        of the Start Roam Candidate Lookup operation received from the
+        device
+
+        pUserData: user data will be passed back with the
+        callback
+
+ @return Result of the function call
+*/
+WDI_Status
+WDI_StartRoamCandidateLookupReq
+(
+  WDI_RoamCandidateLookupReqParamsType* pwdiRoamCandidateLookupReqParams,
+  WDI_RoamOffloadScanCb                 wdiRoamOffloadScancb,
+  void*                                 pUserData
+);
+#endif
+
 /**
  @brief WDI_SetTxPerTrackingReq will be called when the upper MAC 
         wants to set the Tx Per Tracking configurations.