qcacmn: Allow 6GHz AP for WPS

With current implementation host does not allow
6GHz AP for WPS security, add a change to allow 6GHz AP for WPS.

Change-Id: I9e330f2984a716bb56e47313b65eedb4a1a0e216
CRs-Fixed: 2814259
This commit is contained in:
Ashish Kumar Dhanotiya
2020-12-09 00:44:24 +05:30
committed by snandini
parent 8ca19e58fe
commit 35998406e0
3 changed files with 23 additions and 4 deletions

View File

@@ -1824,11 +1824,16 @@ void wlan_cm_calculate_bss_score(struct wlan_objmgr_pdev *pdev,
#ifdef CONFIG_BAND_6GHZ #ifdef CONFIG_BAND_6GHZ
bool wlan_cm_6ghz_allowed_for_akm(struct wlan_objmgr_psoc *psoc, bool wlan_cm_6ghz_allowed_for_akm(struct wlan_objmgr_psoc *psoc,
uint32_t key_mgmt, uint16_t rsn_caps, uint32_t key_mgmt, uint16_t rsn_caps,
const uint8_t *rsnxe, uint8_t sae_pwe) const uint8_t *rsnxe, uint8_t sae_pwe,
bool is_wps)
{ {
struct psoc_mlme_obj *mlme_psoc_obj; struct psoc_mlme_obj *mlme_psoc_obj;
struct scoring_cfg *config; struct scoring_cfg *config;
/* Allow connection for WPS security */
if (is_wps)
return true;
mlme_psoc_obj = wlan_psoc_mlme_get_cmpt_obj(psoc); mlme_psoc_obj = wlan_psoc_mlme_get_cmpt_obj(psoc);
if (!mlme_psoc_obj) if (!mlme_psoc_obj)
return false; return false;

View File

@@ -869,11 +869,21 @@ static QDF_STATUS cm_connect_get_candidates(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id = wlan_vdev_get_id(cm_ctx->vdev); uint8_t vdev_id = wlan_vdev_get_id(cm_ctx->vdev);
bool security_valid_for_6ghz; bool security_valid_for_6ghz;
const uint8_t *rsnxe; const uint8_t *rsnxe;
uint8_t wsc_oui[OUI_LENGTH];
uint32_t oui_cpu;
bool is_wps = false;
filter = qdf_mem_malloc(sizeof(*filter)); filter = qdf_mem_malloc(sizeof(*filter));
if (!filter) if (!filter)
return QDF_STATUS_E_NOMEM; return QDF_STATUS_E_NOMEM;
oui_cpu = qdf_be32_to_cpu(WSC_OUI);
qdf_mem_copy(wsc_oui, &oui_cpu, OUI_LENGTH);
if (wlan_get_vendor_ie_ptr_from_oui(wsc_oui, OUI_LENGTH,
cm_req->req.assoc_ie.ptr,
cm_req->req.assoc_ie.len))
is_wps = true;
rsnxe = wlan_get_ie_ptr_from_eid(WLAN_ELEMID_RSNXE, rsnxe = wlan_get_ie_ptr_from_eid(WLAN_ELEMID_RSNXE,
cm_req->req.assoc_ie.ptr, cm_req->req.assoc_ie.ptr,
cm_req->req.assoc_ie.len); cm_req->req.assoc_ie.len);
@@ -881,7 +891,8 @@ static QDF_STATUS cm_connect_get_candidates(struct wlan_objmgr_pdev *pdev,
wlan_cm_6ghz_allowed_for_akm(wlan_pdev_get_psoc(pdev), wlan_cm_6ghz_allowed_for_akm(wlan_pdev_get_psoc(pdev),
cm_req->req.crypto.akm_suites, cm_req->req.crypto.akm_suites,
cm_req->req.crypto.rsn_caps, cm_req->req.crypto.rsn_caps,
rsnxe, cm_req->req.sae_pwe); rsnxe, cm_req->req.sae_pwe,
is_wps);
/* /*
* Ignore connect req if the freq is provided and its 6Ghz and * Ignore connect req if the freq is provided and its 6Ghz and

View File

@@ -236,13 +236,15 @@ void wlan_cm_init_score_config(struct wlan_objmgr_psoc *psoc,
* @rsn_caps: rsn caps * @rsn_caps: rsn caps
* @rsnxe: rsnxe pointer if present * @rsnxe: rsnxe pointer if present
* @sae_pwe: support for SAE password * @sae_pwe: support for SAE password
* @is_wps: if security is WPS
* *
* Return: bool * Return: bool
*/ */
#ifdef CONFIG_BAND_6GHZ #ifdef CONFIG_BAND_6GHZ
bool wlan_cm_6ghz_allowed_for_akm(struct wlan_objmgr_psoc *psoc, bool wlan_cm_6ghz_allowed_for_akm(struct wlan_objmgr_psoc *psoc,
uint32_t key_mgmt, uint16_t rsn_caps, uint32_t key_mgmt, uint16_t rsn_caps,
const uint8_t *rsnxe, uint8_t sae_pwe); const uint8_t *rsnxe, uint8_t sae_pwe,
bool is_wps);
/** /**
* wlan_cm_set_check_6ghz_security() - Set check 6Ghz security * wlan_cm_set_check_6ghz_security() - Set check 6Ghz security
@@ -293,7 +295,8 @@ uint32_t wlan_cm_get_6ghz_key_mgmt_mask(struct wlan_objmgr_psoc *psoc);
static inline bool static inline bool
wlan_cm_6ghz_allowed_for_akm(struct wlan_objmgr_psoc *psoc, wlan_cm_6ghz_allowed_for_akm(struct wlan_objmgr_psoc *psoc,
uint32_t key_mgmt, uint16_t rsn_caps, uint32_t key_mgmt, uint16_t rsn_caps,
const uint8_t *rsnxe, uint8_t sae_pwe) const uint8_t *rsnxe, uint8_t sae_pwe,
bool is_wps)
{ {
return true; return true;
} }