qcacld-3.0: Use orig_key_mgmt vdev param for AKM negotiation

Currently, the driver overwrites the supplicant
configured connect request AKMs with that of the
candidate's AKM. Due to this, the STA attempts
connection via an AKM which is not present in the
original connect request.

To fix this, use the intersection of original AKM
list and the candidate supported AKMs to derive the
connection AKM.

Change-Id: I700630fda91b4b3ff73e50a38e3c0386ede85e42
CRs-Fixed: 4490428
This commit is contained in:
Abinandhu M 2026-03-10 17:11:27 +05:30
commit 78e07c9a01

View file

@ -2454,7 +2454,7 @@ static void csr_update_key_mgmt_crypto_param(struct wlan_objmgr_vdev *vdev,
int32_t ap_akm = 0;
uint8_t i;
neg_akm = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_KEY_MGMT);
neg_akm = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_ORIG_KEY_MGMT);
if (neg_akm < 0) {
sme_err("Invalid AKM suite");
return;
@ -2470,6 +2470,7 @@ static void csr_update_key_mgmt_crypto_param(struct wlan_objmgr_vdev *vdev,
sme_err("Invalid AKM suite");
return;
}
sme_debug("Intersected AKM with AP's AKM 0x%x", neg_akm);
/*
* As there can be multiple AKM present select the most secured AKM