wlan : Fast transition (11r)
- Add WLAN_AKM_SUITE_FT_PSK & WLAN_AKM_SUITE_FT_8021X in the
AKM suite
- Kernel interface changes for cfg80211_ft_event
Change-Id: I078d67bb207153ea2d02f8f78959d81229e87353
CRs-fixed: 434525
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index c7bb02c..238b65a 100755
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -384,6 +384,7 @@
struct cfg80211_ft_event_params ftEvent;
v_U8_t ftIe[DOT11F_IE_FTINFO_MAX_LEN];
v_U8_t ricIe[DOT11F_IE_RICDESCRIPTOR_MAX_LEN];
+ v_U8_t target_ap[SIR_MAC_ADDR_LENGTH];
struct net_device *dev = pAdapter->dev;
#else
char *buff;
@@ -417,7 +418,9 @@
return;
}
- vos_mem_copy(ftEvent.target_ap, ftIe, SIR_MAC_ADDR_LENGTH );
+ vos_mem_copy(target_ap, ftIe, SIR_MAC_ADDR_LENGTH);
+
+ ftEvent.target_ap = target_ap;
ftEvent.ies = (u8 *)(ftIe + SIR_MAC_ADDR_LENGTH);
ftEvent.ies_len = auth_resp_len - SIR_MAC_ADDR_LENGTH;
@@ -429,7 +432,7 @@
ftEvent.target_ap[2], ftEvent.target_ap[3], ftEvent.target_ap[4],
ftEvent.target_ap[5]);
- (void)cfg80211_ft_event(dev, ftEvent);
+ (void)cfg80211_ft_event(dev, &ftEvent);
#else
// We need to send the IEs to the supplicant
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index bf7a0a7..9a1c897 100755
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -144,6 +144,11 @@
#define TDLS_LOG_LEVEL VOS_TRACE_LEVEL_ERROR
#endif
+#ifdef WLAN_FEATURE_VOWIFI_11R
+#define WLAN_AKM_SUITE_FT_8021X 0x000FAC03
+#define WLAN_AKM_SUITE_FT_PSK 0x000FAC04
+#endif
+
static const u32 hdd_cipher_suites[] =
{
WLAN_CIPHER_SUITE_WEP40,
@@ -4909,13 +4914,19 @@
switch(key_mgmt)
{
case WLAN_AKM_SUITE_PSK:
- hddLog(VOS_TRACE_LEVEL_INFO, "%s: setting key mgmt type to PSK",
+#ifdef WLAN_FEATURE_VOWIFI_11R
+ case WLAN_AKM_SUITE_FT_PSK:
+#endif
+ hddLog(VOS_TRACE_LEVEL_INFO, "%s: setting key mgmt type to PSK",
__func__);
pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_PSK;
break;
case WLAN_AKM_SUITE_8021X:
- hddLog(VOS_TRACE_LEVEL_INFO, "%s: setting key mgmt type to 8021x",
+#ifdef WLAN_FEATURE_VOWIFI_11R
+ case WLAN_AKM_SUITE_FT_8021X:
+#endif
+ hddLog(VOS_TRACE_LEVEL_INFO, "%s: setting key mgmt type to 8021x",
__func__);
pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
break;
@@ -6712,7 +6723,8 @@
#endif
// Pass the received FT IEs to SME
- sme_SetFTIEs( WLAN_HDD_GET_HAL_CTX(pAdapter), pAdapter->sessionId, ftie->ie,
+ sme_SetFTIEs( WLAN_HDD_GET_HAL_CTX(pAdapter), pAdapter->sessionId,
+ (const u8 *)ftie->ie,
ftie->ie_len);
return 0;
}
diff --git a/CORE/SME/inc/sme_FTApi.h b/CORE/SME/inc/sme_FTApi.h
index 76685cf..115f3f9 100644
--- a/CORE/SME/inc/sme_FTApi.h
+++ b/CORE/SME/inc/sme_FTApi.h
@@ -93,7 +93,7 @@
------------------------------------------------------------------------*/
void sme_FTOpen(tHalHandle hHal);
void sme_FTClose(tHalHandle hHal);
-void sme_SetFTIEs( tHalHandle hHal, tANI_U8 sessionId, tANI_U8 *ft_ies, tANI_U16 ft_ies_length );
+void sme_SetFTIEs( tHalHandle hHal, tANI_U8 sessionId, const tANI_U8 *ft_ies, tANI_U16 ft_ies_length );
eHalStatus sme_FTUpdateKey( tHalHandle hHal, tCsrRoamSetKey * pFTKeyInfo );
void csrFTPreAuthRspProcessor( tHalHandle hHal, tpSirFTPreAuthRsp pFTPreAuthRsp );
void sme_GetFTPreAuthResponse( tHalHandle hHal, tANI_U8 *ft_ies, tANI_U32 ft_ies_ip_len, tANI_U16 *ft_ies_length );
diff --git a/CORE/SME/src/sme_common/sme_FTApi.c b/CORE/SME/src/sme_common/sme_FTApi.c
index 97e8b3e..81219f6 100644
--- a/CORE/SME/src/sme_common/sme_FTApi.c
+++ b/CORE/SME/src/sme_common/sme_FTApi.c
@@ -136,7 +136,7 @@
This function is called in SME. This fucntion packages and sends
the FT IEs to PE.
------------------------------------------------------------------------*/
-void sme_SetFTIEs( tHalHandle hHal, tANI_U8 sessionId, tANI_U8 *ft_ies,
+void sme_SetFTIEs( tHalHandle hHal, tANI_U8 sessionId, const tANI_U8 *ft_ies,
tANI_U16 ft_ies_length )
{
tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
@@ -187,12 +187,6 @@
#if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
smsLog( pMac, LOG1, "ft_ies_length=%d", ft_ies_length);
- /*
- smsLog( pMac, LOGE, "%d: New Auth ft_ies_length=%02x%02x%02x",
- current->pid, pMac->ft.ftSmeContext.auth_ft_ies[0],
- pMac->ft.ftSmeContext.auth_ft_ies[1],
- pMac->ft.ftSmeContext.auth_ft_ies[2]);
- */
#endif
break;