Browse Source

qcacmn: Support stop-start cmd enqueue mlme ops

Add change to support mlme ops to enable enqueuing stop-start
cmd to serialization queue when CSA is triggered for a DFS channel.

Change-Id: I9f2dca3bc4ccfe40bd40c7e04b3ce035df56d19d
CRs-Fixed: 2825760
Santosh Anbu 4 years ago
parent
commit
abbeda0b03

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

@@ -532,6 +532,8 @@ struct vdev_mlme_ops {
 	QDF_STATUS (*mlme_vdev_ext_peer_delete_all_rsp)(
 				struct vdev_mlme_obj *vdev_mlme,
 				struct peer_delete_all_response *rsp);
+	QDF_STATUS (*mlme_vdev_replace_csa_with_stop_start)(
+				struct vdev_mlme_obj *vdev_mlme);
 };
 
 /**

+ 2 - 1
umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c

@@ -1413,7 +1413,8 @@ static bool mlme_vdev_subst_suspend_csa_restart_event(void *ctx,
 			mlme_vdev_sm_deliver_event(vdev_mlme,
 						   WLAN_VDEV_SM_EV_RESTART_REQ,
 						   event_data_len, event_data);
-		} else {
+		} else if (mlme_vdev_replace_csa_with_stop_start(vdev_mlme) ==
+						QDF_STATUS_E_NOSUPPORT) {
 			mlme_vdev_sm_transition_to
 				(vdev_mlme,
 				 WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART);

+ 21 - 0
umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h

@@ -580,6 +580,27 @@ static inline QDF_STATUS mlme_vdev_is_newchan_no_cac(
 	return ret;
 }
 
+/**
+ * mlme_vdev_replace_csa_with_stop_start - Support to use stop-start instead of
+ * multivdev restart in CSA with DFS chan
+ * @vdev_mlme_obj:  VDEV MLME comp object
+ *
+ * Return: NO_SUPPORT if the callback is not supported.
+ *         SUCCESS if stop-start is enqueued, else FAILURE.
+ */
+static inline QDF_STATUS mlme_vdev_replace_csa_with_stop_start(
+				struct vdev_mlme_obj *vdev_mlme)
+{
+	QDF_STATUS ret = QDF_STATUS_E_NOSUPPORT;
+
+	if ((vdev_mlme->ops) &&
+	    vdev_mlme->ops->mlme_vdev_replace_csa_with_stop_start)
+		ret = vdev_mlme->ops->mlme_vdev_replace_csa_with_stop_start(
+							vdev_mlme);
+
+	return ret;
+}
+
 #ifdef VDEV_SM_LOCK_SUPPORT
 /**
  * mlme_vdev_sm_spinlock_create - Create VDEV MLME spinlock