qcacmn: Disallow TKIP/WEP with HT supported client

As softap, send assoc failure if HT supported client try to associate
as WEP/TKIP pairwise key.

Change-Id: Ie33e5d83ec18e10aae51a4cc3515f754bd24774e
CRs-Fixed: 2623660
Tento commit je obsažen v:
Nirav Shah
2020-02-17 19:49:08 +05:30
odevzdal nshrivas
rodič c0de18fdc6
revize 5ad9b66679
2 změnil soubory, kde provedl 18 přidání a 10 odebrání

Zobrazit soubor

@@ -683,6 +683,7 @@ bool wlan_crypto_check_wep(struct wlan_objmgr_psoc *psoc, uint8_t vedv_id);
* @vdev_id: vdev id
* @ie_ptr: pointer to IEs
* @ie_len: IE length
* @peer_crypto_params: return peer crypto parameters
*
* This function gets called from ucfg to check RSN match.
*
@@ -690,7 +691,8 @@ bool wlan_crypto_check_wep(struct wlan_objmgr_psoc *psoc, uint8_t vedv_id);
*/
bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
uint8_t vedv_id, uint8_t *ie_ptr,
uint16_t ie_len);
uint16_t ie_len, struct wlan_crypto_params *
peer_crypto_params);
/**
* wlan_crypto_check_rsn_match - called by ucfg to check for WPA match
@@ -698,6 +700,7 @@ bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
* @vdev_id: vdev id
* @ie_ptr: pointer to IEs
* @ie_len: IE length
* @peer_crypto_params: return peer crypto parameters
*
* This function gets called from ucfg to check WPA match.
*
@@ -705,7 +708,8 @@ bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
*/
bool wlan_crypto_check_wpa_match(struct wlan_objmgr_psoc *psoc,
uint8_t vedv_id, uint8_t *ie_ptr,
uint16_t ie_len);
uint16_t ie_len, struct wlan_crypto_params *
peer_crypto_params);
/**
* wlan_set_vdev_crypto_prarams_from_ie - Sets vdev crypto params from IE info

Zobrazit soubor

@@ -3919,6 +3919,7 @@ wlan_get_crypto_params_from_wpa_ie(struct wlan_crypto_params *crypto_params,
* @vdev_id: vdev id
* @ie_ptr: pointer to IEs
* @ie_len: IE length
* @peer_crypto_params: return peer crypto parameters
*
* This function gets called from ucfg to check RSN match.
*
@@ -3926,9 +3927,9 @@ wlan_get_crypto_params_from_wpa_ie(struct wlan_crypto_params *crypto_params,
*/
bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t *ie_ptr,
uint16_t ie_len)
uint16_t ie_len, struct wlan_crypto_params *
peer_crypto_params)
{
struct wlan_crypto_params peer_crypto_params;
struct wlan_objmgr_vdev *vdev;
bool match = true;
QDF_STATUS status;
@@ -3937,7 +3938,7 @@ bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
crypto_err("PSOC is NULL");
return false;
}
status = wlan_get_crypto_params_from_rsn_ie(&peer_crypto_params,
status = wlan_get_crypto_params_from_rsn_ie(peer_crypto_params,
ie_ptr, ie_len);
if (QDF_STATUS_SUCCESS != status) {
crypto_err("get crypto prarams from RSN IE failed");
@@ -3950,7 +3951,8 @@ bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
return false;
}
match = wlan_crypto_rsn_info(vdev, &peer_crypto_params);
match = wlan_crypto_rsn_info(vdev, peer_crypto_params);
wlan_objmgr_vdev_release_ref(vdev, WLAN_CRYPTO_ID);
return match;
@@ -3962,6 +3964,7 @@ bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
* @vdev_id: vdev id
* @ie_ptr: pointer to IEs
* @ie_len: IE length
* @peer_crypto_params: return peer crypto parameters
*
* This function gets called from ucfg to check WPA match.
*
@@ -3969,9 +3972,9 @@ bool wlan_crypto_check_rsn_match(struct wlan_objmgr_psoc *psoc,
*/
bool wlan_crypto_check_wpa_match(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t *ie_ptr,
uint16_t ie_len)
uint16_t ie_len, struct wlan_crypto_params *
peer_crypto_params)
{
struct wlan_crypto_params peer_crypto_params;
struct wlan_objmgr_vdev *vdev;
bool match = true;
QDF_STATUS status;
@@ -3987,14 +3990,15 @@ bool wlan_crypto_check_wpa_match(struct wlan_objmgr_psoc *psoc,
return false;
}
status = wlan_get_crypto_params_from_wpa_ie(&peer_crypto_params,
status = wlan_get_crypto_params_from_wpa_ie(peer_crypto_params,
ie_ptr, ie_len);
if (QDF_STATUS_SUCCESS != status) {
crypto_err("get crypto prarams from WPA IE failed");
match = false;
goto send_res;
}
match = wlan_crypto_rsn_info(vdev, &peer_crypto_params);
match = wlan_crypto_rsn_info(vdev, peer_crypto_params);
send_res:
wlan_objmgr_vdev_release_ref(vdev, WLAN_CRYPTO_ID);