wlan: wdi: Add mac spoofing support based on random mac OUI

This is done as per need to spoof scans. Only FW initialted
scans will use spoofed mac addr after this.

Add a way to pass first 3 bytes (OUI bytes) of mac addr from
cfg80211 and randomly generate last three bytes in driver
and send them to FW. Disable spoof scanning by set first 3 bytes
of mac addr to 00:00:00.

CRs-Fixed: 731655
Change-Id: I131be446b9dd21e3f572a3591a08926edcbd97b9
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index e7a4872..93b6f18 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -2625,6 +2625,18 @@
 }WDI_AddBASessionRspParamsType;
 
 /*---------------------------------------------------------------------------
+  WDI_SpoofMacAddrRspParamType
+---------------------------------------------------------------------------*/
+typedef struct
+{
+  /* wdi status */
+  wpt_uint32   wdiStatus;
+
+  /* Reserved Field */
+  wpt_uint32    reserved;
+
+}WDI_SpoofMacAddrRspParamType;
+/*---------------------------------------------------------------------------
   WDI_AddBAReqinfoType
 ---------------------------------------------------------------------------*/
 typedef struct
@@ -5864,6 +5876,18 @@
 
 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
 
+/*---------------------------------------------------------------------------
+  WDI_SPOOF_MAC_ADDR_REQ
+---------------------------------------------------------------------------*/
+typedef struct
+{
+   /* Spoof MAC Address for FW  */
+   wpt_macAddr macAddr;
+
+   /* Reserved Params/fields */
+   wpt_uint32 params;
+   wpt_uint32 reserved;
+} WDI_SpoofMacAddrInfoType;
 
 /*----------------------------------------------------------------------------
  *   WDI callback types
@@ -6177,14 +6201,12 @@
     pUserData:  user data  
   
     
-  
   RETURN VALUE 
     The result code associated with performing the operation
 ---------------------------------------------------------------------------*/
 typedef void  (*WDI_SetSTAKeyRspCb)(WDI_Status   wdiStatus,
                                     void*        pUserData);
 
- 
 /*---------------------------------------------------------------------------
    WDI_StartRspCb
  
@@ -6199,8 +6221,7 @@
     wdiStatus:  response status received from HAL
     pUserData:  user data  
 
-    
-  
+
   RETURN VALUE 
     The result code associated with performing the operation
 ---------------------------------------------------------------------------*/
@@ -7772,6 +7793,9 @@
 typedef void  (*WDI_LLStatsClearRspCb)(void *pEventData,
                                        void *pUserData);
 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
+
+typedef void  (*WDI_SetSpoofMacAddrRspCb)(
+                        WDI_SpoofMacAddrRspParamType* wdiRsp, void *pUserData);
 /*========================================================================
  *     Function Declarations and Documentation
  ==========================================================================*/
@@ -11126,6 +11150,13 @@
                                 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
                                 wpt_uint8   *bssid
                              );
+WDI_Status
+WDI_SetSpoofMacAddrReq
+(
+WDI_SpoofMacAddrInfoType *pWdiReq,
+  WDI_SetSpoofMacAddrRspCb          setSpoofMacAddrRspCb,
+  void*                          pUserData
+);
 
 #ifdef __cplusplus
  }