qcacld-3.0: Update auth key mgmt semantics

Currently HDD maintains an auth key management bitmap as field
authKeyMgmt in struct hdd_wext_state utilizing bitmaps defined by
wireless.h. This current implementation suffers from the following
issues:
- The implementation is independent of wireless extensions so it
  should not use wireless.h definitons or be stored in a wext-related
  data structure.
- The name uses camelCase which is inconsistent with the Linux coding
  style.

To address these issues define a new set of bitmps along with a
properly named field located in struct hdd_station_ctx.

Change-Id: I0d1c66236f88b7e6486b2d03c3383ef38f80c134
CRs-Fixed: 2207904
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index a6a52a3..47f809c 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/core/hdd/inc/wlan_hdd_main.h
@@ -386,6 +386,18 @@
 #define NUM_TX_RX_HISTOGRAM_MASK (NUM_TX_RX_HISTOGRAM - 1)
 
 /**
+ * enum hdd_auth_key_mgmt - auth key mgmt protocols
+ * @HDD_AUTH_KEY_MGMT_802_1X: 802.1x
+ * @HDD_AUTH_KEY_MGMT_PSK: PSK
+ * @HDD_AUTH_KEY_MGMT_CCKM: CCKM
+ */
+enum hdd_auth_key_mgmt {
+	HDD_AUTH_KEY_MGMT_802_1X = BIT(0),
+	HDD_AUTH_KEY_MGMT_PSK = BIT(1),
+	HDD_AUTH_KEY_MGMT_CCKM = BIT(2)
+};
+
+/**
  * struct hdd_tx_rx_histogram - structure to keep track of tx and rx packets
  *				received over 100ms intervals
  * @interval_rx:	# of rx packets received in the last 100ms interval
@@ -683,6 +695,7 @@
  * struct hdd_station_ctx -- STA-specific information
  * @wext_state: wireless extensions state
  * @wpa_versions: bitmap of supported WPA versions
+ * @auth_key_mgmt: bitmap of supported auth key mgmt protocols
  * @requested_bssid: Specific BSSID to which to connect
  * @conn_info: current connection information
  * @roam_info: current roaming information
@@ -705,6 +718,7 @@
 struct hdd_station_ctx {
 	struct hdd_wext_state wext_state;
 	enum nl80211_wpa_versions wpa_versions;
+	enum hdd_auth_key_mgmt auth_key_mgmt;
 	struct qdf_mac_addr requested_bssid;
 	struct hdd_connection_info conn_info;
 	struct hdd_connection_info cache_conn_info;
diff --git a/core/hdd/inc/wlan_hdd_wext.h b/core/hdd/inc/wlan_hdd_wext.h
index eba2d80..c5e696e 100644
--- a/core/hdd/inc/wlan_hdd_wext.h
+++ b/core/hdd/inc/wlan_hdd_wext.h
@@ -212,9 +212,6 @@
 
 	/**Additional IE for assoc */
 	tSirAddie assocAddIE;
-
-	/**auth key mgmt */
-	int32_t authKeyMgmt;
 };
 
 struct ccp_freq_chan_map {
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index 710f15e..3bf0e02 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -5292,10 +5292,9 @@
 			  eCsrAuthType RSNAuthType)
 {
 	struct csr_roam_profile *roam_profile;
-	struct hdd_wext_state *pWextState =
-		WLAN_HDD_GET_WEXT_STATE_PTR(adapter);
 	struct hdd_station_ctx *sta_ctx =
 		WLAN_HDD_GET_STATION_CTX_PTR(adapter);
+	enum hdd_auth_key_mgmt key_mgmt = sta_ctx->auth_key_mgmt;
 
 	roam_profile = hdd_roam_profile(adapter);
 	roam_profile->AuthType.numEntries = 1;
@@ -5317,8 +5316,8 @@
 
 #ifdef FEATURE_WLAN_ESE
 			if ((RSNAuthType == eCSR_AUTH_TYPE_CCKM_WPA) &&
-			    ((pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-			     == IW_AUTH_KEY_MGMT_802_1X)) {
+			    ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+			     == HDD_AUTH_KEY_MGMT_802_1X)) {
 				hdd_debug("set authType to CCKM WPA. AKM also 802.1X.");
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_CCKM_WPA;
@@ -5328,14 +5327,13 @@
 					eCSR_AUTH_TYPE_CCKM_WPA;
 			} else
 #endif
-			if ((pWextState->
-			     authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-			    == IW_AUTH_KEY_MGMT_802_1X) {
+			if ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+			    == HDD_AUTH_KEY_MGMT_802_1X) {
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_WPA;
 			} else
-			if ((pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_PSK)
-			    == IW_AUTH_KEY_MGMT_PSK) {
+			if ((key_mgmt & HDD_AUTH_KEY_MGMT_PSK)
+			    == HDD_AUTH_KEY_MGMT_PSK) {
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_WPA_PSK;
 			} else {
@@ -5346,8 +5344,8 @@
 		if (sta_ctx->wpa_versions & NL80211_WPA_VERSION_2) {
 #ifdef FEATURE_WLAN_ESE
 			if ((RSNAuthType == eCSR_AUTH_TYPE_CCKM_RSN) &&
-			    ((pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-			     == IW_AUTH_KEY_MGMT_802_1X)) {
+			    ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+			     == HDD_AUTH_KEY_MGMT_802_1X)) {
 				hdd_debug("set authType to CCKM RSN. AKM also 802.1X.");
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_CCKM_RSN;
@@ -5361,16 +5359,14 @@
 				roam_profile->AuthType.authType[0] =
 							eCSR_AUTH_TYPE_DPP_RSN;
 			} else if ((RSNAuthType == eCSR_AUTH_TYPE_FT_RSN) &&
-			    ((pWextState->
-			      authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-			     == IW_AUTH_KEY_MGMT_802_1X)) {
+			    ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+			     == HDD_AUTH_KEY_MGMT_802_1X)) {
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_FT_RSN;
 			} else if ((RSNAuthType == eCSR_AUTH_TYPE_FT_RSN_PSK)
 				   &&
-				   ((pWextState->
-				     authKeyMgmt & IW_AUTH_KEY_MGMT_PSK)
-				    == IW_AUTH_KEY_MGMT_PSK)) {
+				   ((key_mgmt & HDD_AUTH_KEY_MGMT_PSK)
+				    == HDD_AUTH_KEY_MGMT_PSK)) {
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_FT_RSN_PSK;
 			} else
@@ -5393,36 +5389,32 @@
 					RSNAuthType);
 
 			} else if ((RSNAuthType == eCSR_AUTH_TYPE_OWE) &&
-				  ((pWextState->
-				  authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-				  == IW_AUTH_KEY_MGMT_802_1X)) {
+				  ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+				  == HDD_AUTH_KEY_MGMT_802_1X)) {
 				/* OWE case */
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_OWE;
 			} else if ((RSNAuthType ==
 				  eCSR_AUTH_TYPE_SUITEB_EAP_SHA256) &&
-				  ((pWextState->
-				  authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-				  == IW_AUTH_KEY_MGMT_802_1X)) {
+				  ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+				  == HDD_AUTH_KEY_MGMT_802_1X)) {
 				/* Suite B EAP SHA 256 */
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_SUITEB_EAP_SHA256;
 			} else if ((RSNAuthType ==
 				  eCSR_AUTH_TYPE_SUITEB_EAP_SHA384) &&
-				  ((pWextState->
-				  authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-				  == IW_AUTH_KEY_MGMT_802_1X)) {
+				  ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+				  == HDD_AUTH_KEY_MGMT_802_1X)) {
 				/* Suite B EAP SHA 384 */
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_SUITEB_EAP_SHA384;
-			} else if ((pWextState->
-			     authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
-			    == IW_AUTH_KEY_MGMT_802_1X) {
+			} else if ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)
+			    == HDD_AUTH_KEY_MGMT_802_1X) {
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_RSN;
 			} else
-			if ((pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_PSK)
-			    == IW_AUTH_KEY_MGMT_PSK) {
+			if ((key_mgmt & HDD_AUTH_KEY_MGMT_PSK)
+			    == HDD_AUTH_KEY_MGMT_PSK) {
 				roam_profile->AuthType.authType[0] =
 					eCSR_AUTH_TYPE_RSN_PSK;
 			} else {
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index a703c9b..96cd3bc 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -16607,8 +16607,6 @@
 
 	} else if ((adapter->device_mode == QDF_STA_MODE) ||
 		   (adapter->device_mode == QDF_P2P_CLIENT_MODE)) {
-		struct hdd_wext_state *pWextState =
-			WLAN_HDD_GET_WEXT_STATE_PTR(adapter);
 		struct hdd_station_ctx *sta_ctx =
 			WLAN_HDD_GET_STATION_CTX_PTR(adapter);
 		struct csr_roam_profile *roam_profile;
@@ -16662,8 +16660,8 @@
 		 * group key with correct value
 		 */
 		if ((eCSR_BSS_TYPE_START_IBSS == roam_profile->BSSType) &&
-		    !((IW_AUTH_KEY_MGMT_802_1X ==
-		       (pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X))
+		    !((HDD_AUTH_KEY_MGMT_802_1X ==
+		       (sta_ctx->auth_key_mgmt & HDD_AUTH_KEY_MGMT_802_1X))
 		      && (eCSR_AUTH_TYPE_OPEN_SYSTEM ==
 			  sta_ctx->conn_info.authType)
 		      )
@@ -18351,8 +18349,7 @@
  */
 static int wlan_hdd_set_akm_suite(struct hdd_adapter *adapter, u32 key_mgmt)
 {
-	struct hdd_wext_state *pWextState =
-		WLAN_HDD_GET_WEXT_STATE_PTR(adapter);
+	struct hdd_station_ctx *sta_ctx;
 	struct csr_roam_profile *roam_profile;
 
 	roam_profile = hdd_roam_profile(adapter);
@@ -18366,6 +18363,9 @@
 #ifndef WLAN_AKM_SUITE_PSK_SHA256
 #define WLAN_AKM_SUITE_PSK_SHA256   0x000FAC06
 #endif
+
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
+
 	/*set key mgmt type */
 	switch (key_mgmt) {
 	case WLAN_AKM_SUITE_PSK:
@@ -18373,21 +18373,20 @@
 	case WLAN_AKM_SUITE_FT_PSK:
 	case WLAN_AKM_SUITE_DPP_RSN:
 		hdd_debug("setting key mgmt type to PSK");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_PSK;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_PSK;
 		break;
 
 	case WLAN_AKM_SUITE_8021X_SHA256:
 	case WLAN_AKM_SUITE_8021X:
 	case WLAN_AKM_SUITE_FT_8021X:
 		hdd_debug("setting key mgmt type to 8021x");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		break;
 #ifdef FEATURE_WLAN_ESE
 #define WLAN_AKM_SUITE_CCKM         0x00409600  /* Should be in ieee802_11_defs.h */
-#define IW_AUTH_KEY_MGMT_CCKM       8   /* Should be in linux/wireless.h */
 	case WLAN_AKM_SUITE_CCKM:
 		hdd_debug("setting key mgmt type to CCKM");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_CCKM;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_CCKM;
 		break;
 #endif
 #ifndef WLAN_AKM_SUITE_OSEN
@@ -18395,35 +18394,35 @@
 #endif
 	case WLAN_AKM_SUITE_OSEN:
 		hdd_debug("setting key mgmt type to OSEN");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		break;
 #if defined(WLAN_FEATURE_FILS_SK) && \
 	(defined(CFG80211_FILS_SK_OFFLOAD_SUPPORT) || \
 		 (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)))
 	case WLAN_AKM_SUITE_FILS_SHA256:
 		hdd_debug("setting key mgmt type to FILS SHA256");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		roam_profile->fils_con_info->akm_type =
 			eCSR_AUTH_TYPE_FILS_SHA256;
 		break;
 
 	case WLAN_AKM_SUITE_FILS_SHA384:
 		hdd_debug("setting key mgmt type to FILS SHA384");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		roam_profile->fils_con_info->akm_type =
 			eCSR_AUTH_TYPE_FILS_SHA384;
 		break;
 
 	case WLAN_AKM_SUITE_FT_FILS_SHA256:
 		hdd_debug("setting key mgmt type to FILS FT SHA256");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		roam_profile->fils_con_info->akm_type =
 			eCSR_AUTH_TYPE_FT_FILS_SHA256;
 		break;
 
 	case WLAN_AKM_SUITE_FT_FILS_SHA384:
 		hdd_debug("setting key mgmt type to FILS FT SHA384");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		roam_profile->fils_con_info->akm_type =
 			eCSR_AUTH_TYPE_FT_FILS_SHA384;
 		break;
@@ -18431,21 +18430,21 @@
 
 	case WLAN_AKM_SUITE_OWE:
 		hdd_debug("setting key mgmt type to OWE");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		break;
 
 	case WLAN_AKM_SUITE_EAP_SHA256:
 		hdd_debug("setting key mgmt type to EAP_SHA256");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		break;
 	case WLAN_AKM_SUITE_EAP_SHA384:
 		hdd_debug("setting key mgmt type to EAP_SHA384");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		break;
 
 	case WLAN_AKM_SUITE_SAE:
 		hdd_debug("setting key mgmt type to SAE");
-		pWextState->authKeyMgmt |= IW_AUTH_KEY_MGMT_802_1X;
+		sta_ctx->auth_key_mgmt |= HDD_AUTH_KEY_MGMT_802_1X;
 		break;
 
 	default:
@@ -19028,8 +19027,6 @@
 					 struct cfg80211_connect_params *req)
 {
 	int status = 0;
-	struct hdd_wext_state *pWextState =
-		WLAN_HDD_GET_WEXT_STATE_PTR(adapter);
 	struct hdd_station_ctx *sta_ctx;
 	struct csr_roam_profile *roam_profile;
 
@@ -19109,15 +19106,14 @@
 	if (req->key && req->key_len) {
 		u8 key_len = req->key_len;
 		u8 key_idx = req->key_idx;
+		u32 cipher = req->crypto.ciphers_pairwise[0];
 
-		if ((WLAN_CIPHER_SUITE_WEP40 == req->crypto.ciphers_pairwise[0])
-		    || (WLAN_CIPHER_SUITE_WEP104 ==
-			req->crypto.ciphers_pairwise[0])
-		    ) {
-			if (IW_AUTH_KEY_MGMT_802_1X
-			    ==
-			    (pWextState->
-			     authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)) {
+		if ((WLAN_CIPHER_SUITE_WEP40 == cipher) ||
+		    (WLAN_CIPHER_SUITE_WEP104 == cipher)) {
+			enum hdd_auth_key_mgmt key_mgmt =
+				sta_ctx->auth_key_mgmt;
+
+			if (key_mgmt & HDD_AUTH_KEY_MGMT_802_1X) {
 				hdd_err("Dynamic WEP not supported");
 				return -EOPNOTSUPP;
 			}
diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c
index e63b18c..fbdfbe5 100644
--- a/core/hdd/src/wlan_hdd_wext.c
+++ b/core/hdd/src/wlan_hdd_wext.c
@@ -4086,8 +4086,6 @@
 void hdd_clear_roam_profile_ie(struct hdd_adapter *adapter)
 {
 	struct hdd_station_ctx *sta_ctx;
-	struct hdd_wext_state *pWextState =
-		WLAN_HDD_GET_WEXT_STATE_PTR(adapter);
 	struct csr_roam_profile *roam_profile;
 
 	hdd_enter();
@@ -4132,8 +4130,6 @@
 	roam_profile->MFPCapable = 0;
 #endif
 
-	pWextState->authKeyMgmt = 0;
-
 	qdf_mem_zero(roam_profile->Keys.KeyLength, CSR_MAX_NUM_KEY);
 
 #ifdef FEATURE_WLAN_WAPI
@@ -4142,6 +4138,7 @@
 #endif
 
 	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
+	sta_ctx->auth_key_mgmt = 0;
 	qdf_zero_macaddr(&sta_ctx->requested_bssid);
 	hdd_exit();
 }