wlan: 2nd set of run time roaming APIs
This is the implementation of next set to run time roaming APIs
GET/SET WES Mode (Wireless Extended Security)
GET/SET ROAMSCANCONTROL
Send Action frame
Receive Action frame
Change-Id: I8ec6b4a3110349e890cef1cd6e8b66f22177cfbe
CRs-Fixed: 453129
diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
index da02800..959d30f 100644
--- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
@@ -2071,6 +2071,44 @@
}
break;
#endif
+#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+ case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY:
+ {
+ tpSirMacVendorSpecificFrameHdr pVendorSpecific = (tpSirMacVendorSpecificFrameHdr) pActionHdr;
+ tpSirMacMgmtHdr pHdr;
+ tANI_U32 frameLen;
+ tANI_U8 Oui[] = { 0x00, 0x00, 0xf0 };
+
+ pHdr = WDA_GET_RX_MAC_HEADER(pRxPacketInfo);
+ frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
+
+ //Check if it is a vendor specific action frame.
+ if ((eLIM_STA_ROLE == psessionEntry->limSystemRole) &&
+ (VOS_TRUE == palEqualMemory(pMac->hHdd, psessionEntry->selfMacAddr,
+ &pHdr->da[0], sizeof(tSirMacAddr))) &&
+ IS_WES_MODE_ENABLED(pMac) && palEqualMemory( pMac->hHdd, pVendorSpecific->Oui, Oui, 3))
+ {
+ PELOGE( limLog( pMac, LOGW, FL("Received Vendor specific action frame, OUI %x %x %x"),
+ pVendorSpecific->Oui[0], pVendorSpecific->Oui[1], pVendorSpecific->Oui[2]);)
+ /* Forward to the SME to HDD to wpa_supplicant */
+ // type is ACTION
+ limSendSmeMgmtFrameInd(pMac, pHdr->fc.subType,
+ (tANI_U8*)pHdr, frameLen + sizeof(tSirMacMgmtHdr), 0,
+ WDA_GET_RX_CH( pRxPacketInfo ), psessionEntry, 0);
+ }
+ else
+ {
+ limLog( pMac, LOGE, FL("Dropping the vendor specific action frame because of( "
+ "WES Mode not enabled (WESMODE = %d) or OUI mismatch (%02x %02x %02x) or "
+ "not received with SelfSta Mac address) system role = %d"),
+ IS_WES_MODE_ENABLED(pMac),
+ pVendorSpecific->Oui[0], pVendorSpecific->Oui[1],
+ pVendorSpecific->Oui[2],
+ psessionEntry->limSystemRole );
+ }
+ }
+ break;
+#endif
case SIR_MAC_ACTION_PUBLIC_USAGE:
switch(pActionHdr->actionID) {
case SIR_MAC_ACTION_VENDOR_SPECIFIC: