Jelajahi Sumber

qcacld-3.0: Add fixes for peer-level T2LM negotiation

Add the following fixes in case of peer-level tid-to-link
mapping negotiation.
1) Copy peer-level mapping to wlan_prev_t2lm_negotiated_info
from wlan_t2lm_onging_negotiation_info after negotiation
is completed as the former structure is used for mapping
reference.
2) Currently, the Host sends peer-level negotiated mapping
to FW, followed by an action frame response to the AP.
Reverse this order to align with the design flow.

Change-Id: I0e0db95c539cfd9aee27b481683e3e807a1f712e
CRs-Fixed: 3423125
Gururaj Pandurangi 2 tahun lalu
induk
melakukan
bc5b48f9de

+ 3 - 5
components/umac/mlme/mlo_mgr/src/wlan_t2lm_api.c

@@ -148,14 +148,12 @@ QDF_STATUS t2lm_handle_rx_req(struct wlan_objmgr_vdev *vdev,
 
 	if (QDF_IS_STATUS_SUCCESS(status) &&
 	    t2lm_req.t2lm_info[dir].direction != WLAN_T2LM_INVALID_DIRECTION) {
-		/* Apply T2LM config to peer T2LM ctx and send it to FW */
-		t2lm_info = &ml_peer->t2lm_policy.ongoing_tid_to_link_mapping.t2lm_info[dir];
+		/* Apply T2LM config to peer T2LM ctx */
+		t2lm_info = &ml_peer->t2lm_policy.t2lm_negotiated_info.t2lm_info[dir];
 		qdf_mem_copy(t2lm_info, &t2lm_req.t2lm_info[dir],
 			     sizeof(struct wlan_t2lm_info));
-		status = wlan_send_tid_to_link_mapping(vdev, t2lm_info);
-		if (!QDF_IS_STATUS_SUCCESS(status))
-			mlme_err("Could not send updated T2LM config to FW");
 	}
+
 	*token = t2lm_req.dialog_token;
 
 	return status;

+ 4 - 0
core/mac/src/pe/lim/lim_process_action_frame.c

@@ -2177,6 +2177,10 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
 					mac_ctx, mac_hdr->sa, session, token,
 					status_code) != QDF_STATUS_SUCCESS)
 				pe_err("T2LM action response frame not sent");
+			else
+				wlan_send_peer_level_tid_to_link_mapping(
+								session->vdev,
+								peer);
 			break;
 		case EHT_T2LM_RESPONSE:
 			wlan_t2lm_deliver_event(