Эх сурвалжийг харах

qca-wifi: Revert "qca-wifi: Handle multivdev restart request failure"

This reverts commit 45f510a90868226282a1a5cf5e2193a00ab8ff13.

Change-Id: I56d897856c4b71f73686fb038e35229a864f4285
Jeevan Kukkalli 5 жил өмнө
parent
commit
ca2eea84a4

+ 21 - 62
umac/mlme/vdev_mgr/core/src/vdev_mlme_sm_actions.c

@@ -263,50 +263,6 @@ static void wlan_vdev_start_fw_send(struct wlan_objmgr_pdev *pdev,
 	wlan_util_change_map_index(send_array, wlan_vdev_get_id(vdev), 0);
 }
 
-static void mlme_dispatch_mvr_req_fail(struct pdev_mlme_obj *pdev_mlme)
-{
-	uint32_t vdev_id;
-	uint32_t max_vdevs = 0;
-	struct wlan_objmgr_pdev *pdev;
-	struct wlan_objmgr_vdev *vdev;
-
-	if (!pdev_mlme) {
-		mlme_err("PDEV_MLME is NULL");
-		return;
-	}
-
-	pdev = pdev_mlme->pdev;
-	if (!pdev) {
-		mlme_err("PDEV is NULL");
-		return;
-	}
-
-	max_vdevs = wlan_psoc_get_max_vdev_count(wlan_pdev_get_psoc(pdev));
-	for (vdev_id = 0; vdev_id < max_vdevs; vdev_id++) {
-		if (!wlan_util_map_index_is_set(
-				pdev_mlme->restart_send_vdev_bmap,
-				vdev_id)) {
-			continue;
-		}
-
-		vdev = wlan_objmgr_get_vdev_by_id_from_pdev(
-				pdev, vdev_id, WLAN_MLME_NB_ID);
-		if (!vdev) {
-			mlme_err("objmgr vdev not found for vdev %u", vdev_id);
-			continue;
-		}
-
-		mlme_err("Multivdev restart request failed vdev:%u", vdev_id);
-		wlan_vdev_mlme_sm_deliver_evt(vdev,
-					      WLAN_VDEV_SM_EV_RESTART_REQ_FAIL,
-					      0, NULL);
-
-		wlan_util_change_map_index(pdev_mlme->restart_send_vdev_bmap,
-					   vdev_id, 0);
-		wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
-	}
-}
-
 static void mlme_restart_req_timer_start(struct pdev_mlme_obj *pdev_mlme)
 {
 	qdf_timer_mod(&pdev_mlme->restart_req_timer, 100);
@@ -317,10 +273,9 @@ static void mlme_restart_req_timer_stop(struct pdev_mlme_obj *pdev_mlme)
 	qdf_timer_stop(&pdev_mlme->restart_req_timer);
 }
 
-static QDF_STATUS mlme_multivdev_restart(struct pdev_mlme_obj *pdev_mlme)
+static void mlme_multivdev_restart(struct pdev_mlme_obj *pdev_mlme)
 {
 	struct wlan_objmgr_pdev *pdev;
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
 
 	pdev = pdev_mlme->pdev;
 
@@ -347,8 +302,7 @@ static QDF_STATUS mlme_multivdev_restart(struct pdev_mlme_obj *pdev_mlme)
 				 pdev_mlme->restart_send_vdev_bmap, 0,
 				 WLAN_MLME_NB_ID);
 		else
-			status = mlme_vdev_ops_multivdev_restart_fw_cmd_send(
-					pdev);
+			mlme_vdev_ops_multivdev_restart_fw_cmd_send(pdev);
 
 		if (pdev_mlme->start_send_vdev_arr[0] ||
 		    pdev_mlme->start_send_vdev_arr[1]) {
@@ -361,18 +315,16 @@ static QDF_STATUS mlme_multivdev_restart(struct pdev_mlme_obj *pdev_mlme)
 	} else {
 		mlme_restart_req_timer_start(pdev_mlme);
 	}
-
-	return status;
 }
 
 #define MULTIVDEV_RESTART_MAX_RETRY_CNT 100
-static void mlme_restart_req_timeout(void *arg)
+static os_timer_func(mlme_restart_req_timeout)
 {
 	unsigned long restart_pend_vdev_bmap[2];
 	struct wlan_objmgr_pdev *pdev;
-	struct pdev_mlme_obj *pdev_mlme = (struct pdev_mlme_obj *)arg;
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	struct pdev_mlme_obj *pdev_mlme;
 
+	OS_GET_TIMER_ARG(pdev_mlme, struct pdev_mlme_obj *);
 
 	pdev = pdev_mlme->pdev;
 
@@ -398,12 +350,9 @@ static void mlme_restart_req_timeout(void *arg)
 		     pdev_mlme->restart_pend_vdev_bmap[1])))
 			mlme_restart_req_timer_start(pdev_mlme);
 		else
-			status = mlme_multivdev_restart(pdev_mlme);
+			mlme_multivdev_restart(pdev_mlme);
 	}
 	qdf_spin_unlock_bh(&pdev_mlme->vdev_restart_lock);
-
-	if (status != QDF_STATUS_SUCCESS)
-		mlme_dispatch_mvr_req_fail(pdev_mlme);
 }
 
 static QDF_STATUS mlme_vdev_restart_is_allowed(struct wlan_objmgr_pdev *pdev,
@@ -457,12 +406,22 @@ static QDF_STATUS mlme_vdev_restart_is_allowed(struct wlan_objmgr_pdev *pdev,
 		wlan_util_change_map_index(pdev_mlme->restart_send_vdev_bmap,
 					   wlan_vdev_get_id(vdev), 1);
 
-		/* On timer expiry, check any pending vdev has gone
-		 * down, then enable thats vdev bit, if pending vdev
-		 * is still in valid, then restart the timer
+		/* If all vdev id bits are enabled, start vdev restart for all
+		 * vdevs, otherwise, start timer and return
 		 */
-		mlme_restart_req_timer_start(pdev_mlme);
-		status = QDF_STATUS_E_FAILURE;
+		if (!pdev_mlme->restart_pend_vdev_bmap[0] &&
+		    !pdev_mlme->restart_pend_vdev_bmap[1]) {
+			mlme_restart_req_timer_stop(pdev_mlme);
+			mlme_multivdev_restart(pdev_mlme);
+			status = QDF_STATUS_E_FAILURE;
+		} else {
+			/* On timer expiry, check any pending vdev has gone
+			 * down, then enable thats vdev bit, if pending vdev
+			 * is still in valid, then restart the timer
+			 */
+			mlme_restart_req_timer_start(pdev_mlme);
+			status = QDF_STATUS_E_FAILURE;
+		}
 	}
 	qdf_spin_unlock_bh(&pdev_mlme->vdev_restart_lock);