Эх сурвалжийг харах

qcacmn: Add ML reconfig starting notify for link removal

Add mlme_vdev_reconfig_notify callback to notify the ML
reconfig link removal starting after receive the first
ML reconfig link removal IE.

Change-Id: I9ae37b7defc75c97e7bc39e07c9d154e1923aedd
CRs-Fixed: 3380159
Liangwei Dong 2 жил өмнө
parent
commit
dec5632356

+ 6 - 0
umac/mlme/include/wlan_vdev_mlme.h

@@ -711,6 +711,9 @@ enum vdev_start_resp_type {
  * @mlme_vdev_dfs_cac_wait_notify:      callback to notify about CAC state
  * @mlme_vdev_csa_complete:             callback to indicate CSA complete
  * @mlme_vdev_sta_disconn_start:        callback to initiate STA disconnection
+ * @mlme_vdev_reconfig_notify:          callback to notify ml reconfing link
+ *                                      delete start operation after receive
+ *                                      the first ml reconfig IE
  * @mlme_vdev_reconfig_timer_complete:  callback to process ml reconfing
  *                                      operation
  * @mlme_vdev_notify_mlo_sync_wait_entry:
@@ -792,6 +795,9 @@ struct vdev_mlme_ops {
 	QDF_STATUS (*mlme_vdev_sta_disconn_start)(
 				struct vdev_mlme_obj *vdev_mlme,
 				uint16_t event_data_len, void *event_data);
+	QDF_STATUS (*mlme_vdev_reconfig_notify)(
+				struct vdev_mlme_obj *vdev_mlme,
+				uint16_t *tbtt_count, uint16_t bcn_int);
 	void (*mlme_vdev_reconfig_timer_complete)(
 				struct vdev_mlme_obj *vdev_mlme);
 	QDF_STATUS (*mlme_vdev_notify_mlo_sync_wait_entry)(

+ 9 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_sta.c

@@ -2185,6 +2185,7 @@ static void mlo_process_link_remove(struct wlan_objmgr_vdev *vdev,
 	struct wlan_objmgr_peer *bss_peer = NULL;
 	uint16_t bcn_int = 0;
 	uint16_t tbtt_count = 0;
+	QDF_STATUS status;
 
 	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
 	if (!vdev_mlme)
@@ -2207,6 +2208,14 @@ static void mlo_process_link_remove(struct wlan_objmgr_vdev *vdev,
 	if (!bcn_int)
 		return;
 
+	if (vdev_mlme->ops &&
+	    vdev_mlme->ops->mlme_vdev_reconfig_notify) {
+		status = vdev_mlme->ops->mlme_vdev_reconfig_notify(
+				vdev_mlme, &tbtt_count, bcn_int);
+		if (QDF_IS_STATUS_ERROR(status))
+			return;
+	}
+
 	vdev_mlme->ml_reconfig_started = true;
 	qdf_timer_mod(&vdev_mlme->ml_reconfig_timer,
 		      qdf_time_uint_to_ms(tbtt_count * bcn_int));