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.