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
This commit is contained in:
Santosh Anbu
2020-11-23 23:14:54 +05:30
committed by snandini
parent 34e43d37b1
commit abbeda0b03
3 changed files with 25 additions and 1 deletions

View File

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

View File

@@ -1413,7 +1413,8 @@ static bool mlme_vdev_subst_suspend_csa_restart_event(void *ctx,
mlme_vdev_sm_deliver_event(vdev_mlme, mlme_vdev_sm_deliver_event(vdev_mlme,
WLAN_VDEV_SM_EV_RESTART_REQ, WLAN_VDEV_SM_EV_RESTART_REQ,
event_data_len, event_data); 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 mlme_vdev_sm_transition_to
(vdev_mlme, (vdev_mlme,
WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART); WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART);

View File

@@ -580,6 +580,27 @@ static inline QDF_STATUS mlme_vdev_is_newchan_no_cac(
return ret; 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 #ifdef VDEV_SM_LOCK_SUPPORT
/** /**
* mlme_vdev_sm_spinlock_create - Create VDEV MLME spinlock * mlme_vdev_sm_spinlock_create - Create VDEV MLME spinlock