qcacmn: Notify MLME about DFS CAC WAIT state

This change notifies MLME about DFS CAC WAIT state,
and removes code, which releases PDEV RESTART and
enqueues STOP-START command

Change-Id: Iaaf4b657c4f95330e3ac383adc74211b23006718
CRs-Fixed: 2862724
This commit is contained in:
Srinivas Pitla
2021-01-20 13:13:10 -08:00
committed by snandini
parent 7d38880a19
commit ef51b2343f
3 changed files with 14 additions and 15 deletions

View File

@@ -461,8 +461,7 @@ enum vdev_start_resp_type {
* @mlme_vdev_is_newchan_no_cac: callback to check CAC is required * @mlme_vdev_is_newchan_no_cac: callback to check CAC is required
* @mlme_vdev_ext_peer_delete_all_rsp: callback to initiate actions for * @mlme_vdev_ext_peer_delete_all_rsp: callback to initiate actions for
* vdev mlme peer delete all response * vdev mlme peer delete all response
* @mlme_vdev_replace_csa_with_stop_start: callback to replace CSA restart * @mlme_vdev_dfs_cac_wait_notify: callback to notify about CAC state
* request with stop-start
* @mlme_vdev_csa_complete: callback to indicate CSA complete * @mlme_vdev_csa_complete: callback to indicate CSA complete
*/ */
struct vdev_mlme_ops { struct vdev_mlme_ops {
@@ -535,7 +534,7 @@ 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)( QDF_STATUS (*mlme_vdev_dfs_cac_wait_notify)(
struct vdev_mlme_obj *vdev_mlme); struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_csa_complete)( QDF_STATUS (*mlme_vdev_csa_complete)(
struct vdev_mlme_obj *vdev_mlme); struct vdev_mlme_obj *vdev_mlme);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for any * Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
@@ -335,6 +335,10 @@ static bool mlme_vdev_state_dfs_cac_wait_event(void *ctx, uint16_t event,
switch (event) { switch (event) {
case WLAN_VDEV_SM_EV_DFS_CAC_WAIT: case WLAN_VDEV_SM_EV_DFS_CAC_WAIT:
/* Notify MLME about CAC wait state, MLME can perform
* unblocking of some commands
*/
mlme_vdev_dfs_cac_wait_notify(vdev_mlme);
/* DFS timer should have started already, then only this event /* DFS timer should have started already, then only this event
* could have been triggered * could have been triggered
*/ */
@@ -1413,8 +1417,7 @@ 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 if (mlme_vdev_replace_csa_with_stop_start(vdev_mlme) == } else {
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

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -581,22 +581,19 @@ static inline QDF_STATUS mlme_vdev_is_newchan_no_cac(
} }
/** /**
* mlme_vdev_replace_csa_with_stop_start - Support to use stop-start instead of * mlme_vdev_dfs_cac_wait_notify - Notifies DFS CAC wait state
* multivdev restart in CSA with DFS chan
* @vdev_mlme_obj: VDEV MLME comp object * @vdev_mlme_obj: VDEV MLME comp object
* *
* Return: NO_SUPPORT if the callback is not supported. * Return: NO_SUPPORT if the callback is not supported.
* SUCCESS if stop-start is enqueued, else FAILURE. * SUCCESS if DFS CAC Wait notification handled by caller
*/ */
static inline QDF_STATUS mlme_vdev_replace_csa_with_stop_start( static inline QDF_STATUS mlme_vdev_dfs_cac_wait_notify(
struct vdev_mlme_obj *vdev_mlme) struct vdev_mlme_obj *vdev_mlme)
{ {
QDF_STATUS ret = QDF_STATUS_E_NOSUPPORT; QDF_STATUS ret = QDF_STATUS_E_NOSUPPORT;
if ((vdev_mlme->ops) && if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_dfs_cac_wait_notify)
vdev_mlme->ops->mlme_vdev_replace_csa_with_stop_start) ret = vdev_mlme->ops->mlme_vdev_dfs_cac_wait_notify(vdev_mlme);
ret = vdev_mlme->ops->mlme_vdev_replace_csa_with_stop_start(
vdev_mlme);
return ret; return ret;
} }