qcacld-3.0: Downgrade connection to 11ax for EHT-only APs

Some IOT EHT APs do not respond to ML-probes. However, STA
does not support pure-EHT connections, therefore downgrade
the STA connection to 11ax for non-MLO APs.

Similarly, after 3 initial attempts of unicast join probing,
send the rest of the join probes as broadcast.

Change-Id: I9471c5b211f9480877c9c2475eaef93071b82734
CRs-Fixed: 3846888
This commit is contained in:
Surya Prakash Sivaraj 2024-06-20 13:29:43 +05:30 committed by Ravindra Konda
parent 17c45a2d4e
commit 3fbcb24a71
2 changed files with 13 additions and 12 deletions

View File

@ -1713,7 +1713,6 @@ static void lim_process_periodic_join_probe_req_timer(struct mac_context *mac_ct
struct pe_session *session;
tSirMacSSid ssid;
tSirMacAddr bssid;
tSirMacAddr bcast_mac = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
session = pe_find_session_by_session_id(mac_ctx,
mac_ctx->lim.lim_timers.gLimPeriodicJoinProbeReqTimer.sessionId);
@ -1733,16 +1732,6 @@ static void lim_process_periodic_join_probe_req_timer(struct mac_context *mac_ct
sir_copy_mac_addr(bssid,
session->pLimMlmJoinReq->bssDescription.bssId);
/*
* Some APs broadcasting hidden SSID doesn't respond to unicast
* probe requests, however those APs respond to broadcast probe
* requests. Therefore for hidden ssid connections, after 3
* unicast probe requests, try the pending probes with broadcast
* mac.
*/
if (session->ssidHidden && session->join_probe_cnt > 2)
sir_copy_mac_addr(bssid, bcast_mac);
lim_send_probe_req_mgmt_frame(mac_ctx, &ssid, bssid,
session->curr_op_freq,
session->self_mac_addr, session->dot11mode,

View File

@ -202,6 +202,7 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
uint8_t *eht_cap_ie = NULL, eht_cap_ie_len = 0;
bool is_band_2g;
uint16_t mlo_ie_len = 0;
tSirMacAddr bcast_mac = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
if (additional_ielen)
addn_ielen = *additional_ielen;
@ -240,6 +241,16 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
return QDF_STATUS_E_NOMEM;
}
/*
* Some IOT APs doesn't respond to unicast probe requests,
* however those APs respond to broadcast probe requests.
* Therefore for hidden ssid connections, after 3 unicast probe
* requests, try the pending probes with broadcast mac.
*/
if (!WLAN_REG_IS_6GHZ_CHAN_FREQ(pesession->curr_op_freq) &&
pesession->join_probe_cnt > 2)
sir_copy_mac_addr(bssid, bcast_mac);
/* The scheme here is to fill out a 'tDot11fProbeRequest' structure */
/* and then hand it off to 'dot11f_pack_probe_request' (for */
/* serialization). */
@ -339,7 +350,8 @@ lim_send_probe_req_mgmt_frame(struct mac_context *mac_ctx,
&pr->he_6ghz_band_cap);
if (IS_DOT11_MODE_EHT(dot11mode) && pesession &&
pesession->lim_join_req) {
pesession->lim_join_req &&
!qdf_is_macaddr_broadcast((struct qdf_mac_addr *)bssid)) {
lim_update_session_eht_capable(mac_ctx, pesession);
if (pesession->lim_join_req->bssDescription.is_ml_ap)