Parcourir la source

qcacld-3.0: Update SSID to vdev for roam sync

During different SSID roaming the SSID maybe changed,
save ssid from beacon to roam sync ind struct and update
to mlme.

Change-Id: I83522334a2b86de13584ef4b5f55e6df68ec261a
CRs-Fixed: 3047205
Liangwei Dong il y a 3 ans
Parent
commit
26da9327ad

+ 5 - 0
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c

@@ -393,6 +393,11 @@ cm_fill_roam_info(struct wlan_objmgr_vdev *vdev,
 	rsp->connect_rsp.vdev_id = roam_synch_data->roamed_vdev_id;
 	qdf_copy_macaddr(&rsp->connect_rsp.bssid, &roam_synch_data->bssid);
 
+	if (!util_scan_is_null_ssid(&roam_synch_data->ssid))
+		wlan_vdev_mlme_set_ssid(vdev,
+					roam_synch_data->ssid.ssid,
+					roam_synch_data->ssid.length);
+
 	status = wlan_vdev_mlme_get_ssid(vdev,
 					 rsp->connect_rsp.ssid.ssid,
 					 &rsp->connect_rsp.ssid.length);

+ 1 - 0
components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_public_struct.h

@@ -2325,6 +2325,7 @@ struct roam_offload_synch_ind {
 	uint8_t isBeacon;
 	uint8_t roamed_vdev_id;
 	struct qdf_mac_addr bssid;
+	struct wlan_ssid ssid;
 	struct qdf_mac_addr self_mac;
 	int8_t txMgmtPower;
 	uint32_t auth_status;

+ 5 - 0
core/mac/src/pe/lim/lim_api.c

@@ -2627,6 +2627,11 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
 	lim_fill_ft_session(mac_ctx, bss_desc, ft_session_ptr,
 			    session_ptr, roam_sync_ind_ptr->phy_mode,
 			    assoc_rsp);
+	roam_sync_ind_ptr->ssid.length =
+		qdf_min((qdf_size_t)ft_session_ptr->ssId.length,
+			sizeof(roam_sync_ind_ptr->ssid.ssid));
+	qdf_mem_copy(roam_sync_ind_ptr->ssid.ssid, ft_session_ptr->ssId.ssId,
+		     roam_sync_ind_ptr->ssid.length);
 	pe_set_rmf_caps(mac_ctx, ft_session_ptr, roam_sync_ind_ptr);
 	/* Next routine may update nss based on dot11Mode */