qcacld-3.0: Support transmit addr for roam pre-auth

When roam from SAE legacy to SAE MLO, pre-auth TA is MLD address,
while peer AP expects link address, pre-auth fails.
Parse transmit address field from firmware roam_preauth_start_event and
include it when send NL80211_EXTERNAL_AUTH_START to wpa supplicant for
SAE roaming cases.
If transmit address is all zeros, wpa_supplicant will not do ML sae
auth, use MLD address as TA.
If transmit address is not zeros, wpa_supplicant will do ML sae auth,
use 'transmit address' as TA.

Since self peer is created with mld address, when roam from legacy to
MLO, try to get peer by mld address during pre-auth tx since bss peer
absent, or TX fails for no peer.

Change-Id: I99ed846e94165bfe01e1d1e8c620f035751c7056
CRs-Fixed: 3289987
This commit is contained in:
Jianmin Zhu
2022-09-14 20:59:32 +08:00
committed by Madan Koyyalamudi
parent 815b1c0827
commit 76b7b34cdd
9 changed files with 145 additions and 23 deletions

View File

@@ -3234,6 +3234,8 @@ extract_auth_offload_event_tlv(wmi_unified_t wmi_handle,
WMI_MAC_ADDR_TO_CHAR_ARRAY(&rso_auth_start_ev->candidate_ap_bssid,
auth_event->ap_bssid.bytes);
WMI_MAC_ADDR_TO_CHAR_ARRAY(&rso_auth_start_ev->transmit_addr,
auth_event->ta.bytes);
if (qdf_is_macaddr_zero(&auth_event->ap_bssid) ||
qdf_is_macaddr_broadcast(&auth_event->ap_bssid) ||
qdf_is_macaddr_group(&auth_event->ap_bssid)) {
@@ -3241,8 +3243,11 @@ extract_auth_offload_event_tlv(wmi_unified_t wmi_handle,
return -EINVAL;
}
wmi_debug("Received Roam auth offload event for bss:"QDF_MAC_ADDR_FMT" vdev_id:%d",
QDF_MAC_ADDR_REF(auth_event->ap_bssid.bytes), auth_event->vdev_id);
wmi_debug("Received Roam auth offload event for bss:"
QDF_MAC_ADDR_FMT " ta:" QDF_MAC_ADDR_FMT " vdev_id: %d",
QDF_MAC_ADDR_REF(auth_event->ap_bssid.bytes),
QDF_MAC_ADDR_REF(auth_event->ta.bytes),
auth_event->vdev_id);
return QDF_STATUS_SUCCESS;
}