From abbeda0b03e44e64c960c3a8b44b5e48b2a09ee8 Mon Sep 17 00:00:00 2001 From: Santosh Anbu Date: Mon, 23 Nov 2020 23:14:54 +0530 Subject: [PATCH] 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 --- umac/mlme/include/wlan_vdev_mlme.h | 2 ++ umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c | 3 ++- umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/umac/mlme/include/wlan_vdev_mlme.h b/umac/mlme/include/wlan_vdev_mlme.h index 74d18b785c..89e16eb88c 100644 --- a/umac/mlme/include/wlan_vdev_mlme.h +++ b/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); }; /** diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c index 85e65a47f0..06c1e78752 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c +++ b/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); diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h index deb784b49a..68edf73c7b 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h +++ b/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