Revert "wlan: Fix ULA Logic to remove EAPOL 4/4 race-condition."

This reverts commit c168d8688fc7ecec763e90f1d4706d0cb1a2e593

Change-Id: I504832774b6c6173a128cc597db8fd7304d7eeb8
CRs-Fixed: 834793
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 21a451b..9946451 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -8998,6 +8998,21 @@
         pHostapdState = WLAN_HDD_GET_HOSTAP_STATE_PTR(pAdapter);
         if( pHostapdState->bssState == BSS_START )
         {
+            hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
+            vos_status = wlan_hdd_check_ula_done(pAdapter);
+
+            if ( vos_status != VOS_STATUS_SUCCESS )
+            {
+                VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+                        "[%4d] wlan_hdd_check_ula_done returned ERROR status= %d",
+                        __LINE__, vos_status );
+
+                pHddStaCtx->roam_info.roamingState = HDD_ROAM_STATE_NONE;
+
+                status = -EINVAL;
+                goto end;
+            }
+
             status = WLANSAP_SetKeySta( pVosContext, &setKey);
 
             if ( status != eHAL_STATUS_SUCCESS )
@@ -9065,36 +9080,19 @@
                 setKey.peerMac[4], setKey.peerMac[5],
                 setKey.keyDirection);
 
-        /* Wait for EAPOL M4 before setting key.
-         * No need to consider Dynamic WEP as we will receive M8.
-         */
-        if ( (setKey.encType == eCSR_ENCRYPT_TYPE_AES ||
-             setKey.encType == eCSR_ENCRYPT_TYPE_TKIP) &&
-             ( 1
-#if defined WLAN_FEATURE_VOWIFI_11R
-               && pHddStaCtx->conn_info.authType != eCSR_AUTH_TYPE_FT_RSN
-               && pHddStaCtx->conn_info.authType != eCSR_AUTH_TYPE_FT_RSN_PSK
-#endif
-#ifdef FEATURE_WLAN_ESE
-               && pHddStaCtx->conn_info.authType != eCSR_AUTH_TYPE_CCKM_WPA
-               && pHddStaCtx->conn_info.authType != eCSR_AUTH_TYPE_CCKM_RSN
-#endif
-               ))
-        {
-            vos_status = wlan_hdd_check_ula_done(pAdapter);
+        vos_status = wlan_hdd_check_ula_done(pAdapter);
 
-            if ( vos_status != VOS_STATUS_SUCCESS )
-            {
-               VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+        if ( vos_status != VOS_STATUS_SUCCESS )
+        {
+            VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                     "[%4d] wlan_hdd_check_ula_done returned ERROR status= %d",
                     __LINE__, vos_status );
 
-               pHddStaCtx->roam_info.roamingState = HDD_ROAM_STATE_NONE;
+            pHddStaCtx->roam_info.roamingState = HDD_ROAM_STATE_NONE;
 
-               status = -EINVAL;
-               goto end;
+            status = -EINVAL;
+            goto end;
 
-            }
         }
 
 #ifdef WLAN_FEATURE_VOWIFI_11R
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index 2d407b8..7ca0a4f 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -1358,7 +1358,6 @@
          VOS_TRACE( VOS_MODULE_ID_HDD_SAP_DATA, VOS_TRACE_LEVEL_INFO_HIGH,
                     "%s: VOS packet is EAPOL packet", __func__);
          pPktMetaInfo->ucIsEapol = 1;
-         pPktMetaInfo->ucEapolSubType = hdd_FindEapolSubType(pVosPacket);
       }
    }
  
@@ -1370,7 +1369,7 @@
       if (VOS_PKT_PROTO_TYPE_EAPOL & proto_type)
       {
          VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
-                   "SAP TX EAPOL SubType %d",pPktMetaInfo->ucEapolSubType);
+                   "SAP TX EAPOL");
       }
       else if (VOS_PKT_PROTO_TYPE_DHCP & proto_type)
       {
@@ -1527,7 +1526,6 @@
    vos_pkt_t* pNextVosPacket;   
    hdd_context_t *pHddCtx = NULL;   
    v_U8_t proto_type;
-   EAPOL_SubType eapolSubType = EAPOL_UNKNOWN;
 
    //Sanity check on inputs
    if ( ( NULL == vosContext ) || 
@@ -1595,12 +1593,6 @@
          return VOS_STATUS_E_FAILURE;
       }
 
-      if (pHddCtx->cfg_ini->gEnableDebugLog)
-      {
-         if(hdd_IsEAPOLPacket(pVosPacket))
-            eapolSubType = hdd_FindEapolSubType(pVosPacket);
-      }
-
       // Extract the OS packet (skb).
       // Tell VOS to detach the OS packet from the VOS packet
       status = vos_pkt_get_os_packet( pVosPacket, (v_VOID_t **)&skb, VOS_TRUE );
@@ -1633,7 +1625,7 @@
          if (VOS_PKT_PROTO_TYPE_EAPOL & proto_type)
          {
             VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
-                      "SAP RX EAPOL SubType %d",eapolSubType);
+                      "SAP RX EAPOL");
          }
          else if (VOS_PKT_PROTO_TYPE_DHCP & proto_type)
          {
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index 489026b..c42131a 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1110,7 +1110,6 @@
    }
 
    if ( (granted && ( pktListSize == 1 )) ||
-        (pHddStaCtx->conn_info.uIsAuthenticated == VOS_FALSE) ||
         (qid == WLANTL_AC_HIGH_PRIO))
    {
       //Let TL know we have a packet to send for this AC
@@ -1596,50 +1595,6 @@
 }
 
 /**============================================================================
-  @brief hdd_FindEapolSubType() - Find EAPOL SubType.
-
-  @param pVosPacket : [in] pointer to vos packet
-  @return         : EAPOL_SubType value
-  ===========================================================================*/
-EAPOL_SubType hdd_FindEapolSubType( vos_pkt_t *pVosPacket )
-{
-    VOS_STATUS vosStatus  = VOS_STATUS_SUCCESS;
-    void       *pBuffer   = NULL;
-    EAPOL_SubType   subType = EAPOL_UNKNOWN;
-    v_U16_t   keyInfo;
-    vosStatus = vos_pkt_peek_data( pVosPacket,
-                         (v_SIZE_t)HDD_ETHERTYPE_802_1_X_FRAME_SUB_TYPE_OFFSET,
-                         &pBuffer, HDD_ETHERTYPE_802_1_X_SIZE );
-    if ( VOS_IS_STATUS_SUCCESS( vosStatus ) )
-    {
-       if ( pBuffer )
-       {
-          keyInfo = (*(unsigned short*)pBuffer &
-                         HDD_ETHERTYPE_802_1_X_SUB_TYPE_MASK);
-
-          switch (keyInfo) {
-            case HDD_ETHERTYPE_802_1_X_M1_VALUE:
-                 subType = EAPOL_M1;
-                 break;
-            case HDD_ETHERTYPE_802_1_X_M2_VALUE:
-                 subType = EAPOL_M2;
-                 break;
-            case HDD_ETHERTYPE_802_1_X_M3_VALUE:
-                 subType = EAPOL_M3;
-                 break;
-            case HDD_ETHERTYPE_802_1_X_M4_VALUE:
-                 subType = EAPOL_M4;
-                 break;
-            default:
-                 break;
-         }
-       }
-    }
-
-   return subType;
-}
-
-/**============================================================================
   @brief hdd_IsARP() - Checks the packet is ARP or not.
 
   @param pVosPacket : [in] pointer to vos packet
@@ -2248,11 +2203,7 @@
    if(pAdapter->sessionCtx.station.conn_info.uIsAuthenticated == VOS_TRUE)
       pPktMetaInfo->ucIsEapol = 0;       
    else
-   {
       pPktMetaInfo->ucIsEapol = hdd_IsEAPOLPacket( pVosPacket ) ? 1 : 0;
-      if(pPktMetaInfo->ucIsEapol)
-         pPktMetaInfo->ucEapolSubType = hdd_FindEapolSubType( pVosPacket );
-   }
 
    if ((NULL != pHddCtx) &&
        (pHddCtx->cfg_ini->gEnableDebugLog))
@@ -2262,7 +2213,7 @@
       if (VOS_PKT_PROTO_TYPE_EAPOL & proto_type)
       {
          VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
-                   "STA TX EAPOL SubType %d",pPktMetaInfo->ucEapolSubType);
+                   "STA TX EAPOL");
       }
       else if (VOS_PKT_PROTO_TYPE_DHCP & proto_type)
       {
@@ -2514,7 +2465,6 @@
    vos_pkt_t* pVosPacket;
    vos_pkt_t* pNextVosPacket;
    v_U8_t proto_type;
-   EAPOL_SubType eapolSubType = EAPOL_UNKNOWN;
 
    //Sanity check on inputs
    if ( ( NULL == vosContext ) || 
@@ -2561,12 +2511,6 @@
          return VOS_STATUS_E_FAILURE;
       }
 
-      if (pHddCtx->cfg_ini->gEnableDebugLog)
-      {
-         if (hdd_IsEAPOLPacket(pVosPacket))
-             eapolSubType = hdd_FindEapolSubType(pVosPacket);
-      }
-
       // Extract the OS packet (skb).
       // Tell VOS to detach the OS packet from the VOS packet
       status = vos_pkt_get_os_packet( pVosPacket, (v_VOID_t **)&skb, VOS_TRUE );
@@ -2625,7 +2569,7 @@
          if (VOS_PKT_PROTO_TYPE_EAPOL & proto_type)
          {
             VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
-                      "STA RX EAPOL SubType %d",eapolSubType);
+                      "STA RX EAPOL");
          }
          else if (VOS_PKT_PROTO_TYPE_DHCP & proto_type)
          {
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index b093bc5..ad3f521 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -1427,15 +1427,9 @@
         /*To avoid race condition between the set key and the last EAPOL
           packet, notify TL to finish upper layer authentication incase if the
           last EAPOL packet pending in the TL queue.*/
-        vos_status = WLANTL_Finish_ULA(wlan_hdd_ula_done_cb, pAdapter,
-                        (WLAN_HDD_GET_CTX(pAdapter))->pvosContext,
-                        pHddStaCtx->conn_info.staId[0]);
+        vos_status = WLANTL_Finish_ULA(wlan_hdd_ula_done_cb, pAdapter);
 
-        if ( vos_status == VOS_STATUS_E_ALREADY )
-        {
-            return VOS_STATUS_SUCCESS;
-        }
-        else if ( vos_status != VOS_STATUS_SUCCESS )
+        if ( vos_status != VOS_STATUS_SUCCESS )
         {
             VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                    "[%4d] WLANTL_Finish_ULA returned ERROR status= %d",