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/inc/wlan_hdd_tx_rx.h b/CORE/HDD/inc/wlan_hdd_tx_rx.h
index 95b3eae..7f2ced6 100644
--- a/CORE/HDD/inc/wlan_hdd_tx_rx.h
+++ b/CORE/HDD/inc/wlan_hdd_tx_rx.h
@@ -49,14 +49,6 @@
#define HDD_ETHERTYPE_802_1_X ( 0x888E )
#define HDD_ETHERTYPE_802_1_X_FRAME_OFFSET ( 12 )
#define HDD_ETHERTYPE_802_1_X_SIZE ( 2 )
-
-#define HDD_ETHERTYPE_802_1_X_FRAME_SUB_TYPE_OFFSET ( 19 )
-#define HDD_ETHERTYPE_802_1_X_SUB_TYPE_MASK ( 0x8003 )
-#define HDD_ETHERTYPE_802_1_X_M1_VALUE ( 0x8000 )
-#define HDD_ETHERTYPE_802_1_X_M2_VALUE ( 0x0001 )
-#define HDD_ETHERTYPE_802_1_X_M3_VALUE ( 0x8003 )
-#define HDD_ETHERTYPE_802_1_X_M4_VALUE ( 0x0003 )
-
#ifdef FEATURE_WLAN_WAPI
#define HDD_ETHERTYPE_WAI ( 0x88b4 )
#endif
@@ -325,14 +317,6 @@
extern v_BOOL_t hdd_IsEAPOLPacket( vos_pkt_t *pVosPacket );
/**============================================================================
- @brief hdd_FindEapolSubType() - Find EAPOL SubType.
-
- @param pVosPacket : [in] pointer to vos packet
- @return : EAPOL_SubType value
- ===========================================================================*/
-extern EAPOL_SubType hdd_FindEapolSubType( vos_pkt_t *pVosPacket );
-
-/**============================================================================
@brief hdd_mon_tx_mgmt_pkt() - Transmit MGMT packet received on monitor
interface.
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",