瀏覽代碼

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
Srinivas Pitla 4 年之前
父節點
當前提交
ef51b2343f

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

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

+ 6 - 3
umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c

@@ -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
  * 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) {
 	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
 		 * 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,
 						   WLAN_VDEV_SM_EV_RESTART_REQ,
 						   event_data_len, event_data);
-		} else if (mlme_vdev_replace_csa_with_stop_start(vdev_mlme) ==
-						QDF_STATUS_E_NOSUPPORT) {
+		} else  {
 			mlme_vdev_sm_transition_to
 				(vdev_mlme,
 				 WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART);

+ 6 - 9
umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h

@@ -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 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
- * multivdev restart in CSA with DFS chan
+ * mlme_vdev_dfs_cac_wait_notify - Notifies DFS CAC wait state
  * @vdev_mlme_obj:  VDEV MLME comp object
  *
  * 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)
 {
 	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);
+	if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_dfs_cac_wait_notify)
+		ret = vdev_mlme->ops->mlme_vdev_dfs_cac_wait_notify(vdev_mlme);
 
 	return ret;
 }