wlan: Warn on reception of action frame in 5GHz and unmap rxChannel.

When STA mode of two peers are connected to AP in 5GHz and driver is
trying to establish p2p connection between them, at some corner
condition of switching between p2p listen channel and STA's
operating channel, peer may receive action frame in 5GHz due to bug
in firmware.

In this case, unmap rxChannel to get correct 5GHz channel, if
rxChannel obtained is invalid, use listen channel of peer if ROC
timer is running.
If rxChannel is invalid and no p2p GO session is active in 5GHz,
print warning message.

CRs-Fixed: 612269
Change-Id: If9f4039bf3fc9cea02a4667ca60df64b5a819b49
(cherry picked from commit 7b39de63c7caf5baef02fef744f3a58cc1c45fcc)
(cherry picked from commit 0e3ebfebd67a204adbedc27fb0abe31b5220b543)
diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
index 8d00301..598a7a0 100644
--- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
@@ -2136,11 +2136,9 @@
             {
               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) &&
@@ -2153,9 +2151,8 @@
                          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);
+                  limSendSmeMgmtFrameInd(pMac, 0, pRxPacketInfo,
+                                         psessionEntry, 0);
               }
               else
               {
@@ -2175,21 +2172,15 @@
         case SIR_MAC_ACTION_VENDOR_SPECIFIC:
             {
               tpSirMacVendorSpecificPublicActionFrameHdr pPubAction = (tpSirMacVendorSpecificPublicActionFrameHdr) pActionHdr;
-              tpSirMacMgmtHdr     pHdr;
-              tANI_U32            frameLen;
               tANI_U8 P2POui[] = { 0x50, 0x6F, 0x9A, 0x09 };
 
-              pHdr = WDA_GET_RX_MAC_HEADER(pRxPacketInfo);
-              frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
-
               //Check if it is a P2P public action frame.
               if (vos_mem_compare(pPubAction->Oui, P2POui, 4))
               {
                  /* 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);
+                 limSendSmeMgmtFrameInd(pMac, 0, pRxPacketInfo,
+                                        psessionEntry, 0);
               }
               else
               {
@@ -2205,18 +2196,13 @@
                //LIM_LOG_TDLS(printk("Public Action TDLS Discovery RSP ..")) ;
                limProcessTdlsPublicActionFrame(pMac, (tANI_U32*)pRxPacketInfo, psessionEntry) ;
 #else
-               tpSirMacMgmtHdr     pHdr;
-               tANI_U32            frameLen;
                tANI_S8             rssi;
 
-               pHdr = WDA_GET_RX_MAC_HEADER(pRxPacketInfo);
-               frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
                rssi = WDA_GET_RX_RSSI_DB(pRxPacketInfo);
                VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO, 
                                     ("Public Action TDLS Discovery RSP ..")) ;
-               limSendSmeMgmtFrameInd(pMac, pHdr->fc.subType, 
-                  (tANI_U8*)pHdr, frameLen + sizeof(tSirMacMgmtHdr), 0, 
-                  WDA_GET_RX_CH( pRxPacketInfo ), psessionEntry, rssi);
+               limSendSmeMgmtFrameInd(pMac, 0, pRxPacketInfo,
+                                      psessionEntry, rssi);
 #endif
            }
                break;
@@ -2307,21 +2293,14 @@
          switch(pActionHdr->actionID) {
             case SIR_MAC_ACTION_VENDOR_SPECIFIC:
               {
-                tpSirMacMgmtHdr     pHdr;
-                tANI_U32            frameLen;
                 tANI_U8 P2POui[] = { 0x50, 0x6F, 0x9A, 0x09 };
 
-                pHdr = WDA_GET_RX_MAC_HEADER(pBd);
-                frameLen = WDA_GET_RX_PAYLOAD_LEN(pBd);
-
                 //Check if it is a P2P public action frame.
                 if (vos_mem_compare(pActionHdr->Oui, P2POui, 4))
                 {
                   /* 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( pBd ), NULL, 0);
+                  limSendSmeMgmtFrameInd(pMac, 0, pBd, NULL, 0);
                 }
                 else
                 {