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

qcacmn: Fix monitor link descriptor memory alloc failure

In existing approach, monitor rings get initalized
on monitor vap init time,
For linux 5.4 kernel, physical contiguous memory(512Kb) is not
available on vap init time.
Initialize monitor related rings on monitor vap creation time
to get required memory.

Change-Id: I288c27cfcf77b3d224c2f21bbe8ac65670f32dda
CRs-Fixed: 2865141
Amir Patel 4 жил өмнө
parent
commit
6c6f067b65

+ 2 - 1
dp/wifi3.0/dp_main.c

@@ -265,6 +265,7 @@ static uint8_t dp_soc_ring_if_nss_offloaded(struct dp_soc *soc,
 					    int ring_num);
 					    int ring_num);
 static QDF_STATUS dp_vdev_set_monitor_mode_rings(struct dp_pdev *pdev,
 static QDF_STATUS dp_vdev_set_monitor_mode_rings(struct dp_pdev *pdev,
 						 uint8_t delayed_replenish);
 						 uint8_t delayed_replenish);
+static void dp_vdev_set_monitor_mode_buf_rings(struct dp_pdev *pdev);
 
 
 #define DP_INTR_POLL_TIMER_MS	5
 #define DP_INTR_POLL_TIMER_MS	5
 
 
@@ -5803,6 +5804,7 @@ static QDF_STATUS dp_vdev_attach_wifi3(struct cdp_soc_t *cdp_soc,
 	dp_vdev_id_map_tbl_add(soc, vdev, vdev_id);
 	dp_vdev_id_map_tbl_add(soc, vdev, vdev_id);
 
 
 	if (wlan_op_mode_monitor == vdev->opmode) {
 	if (wlan_op_mode_monitor == vdev->opmode) {
+		dp_vdev_set_monitor_mode_buf_rings(pdev);
 		pdev->monitor_vdev = vdev;
 		pdev->monitor_vdev = vdev;
 		return QDF_STATUS_SUCCESS;
 		return QDF_STATUS_SUCCESS;
 	}
 	}
@@ -7754,7 +7756,6 @@ static QDF_STATUS dp_vdev_set_monitor_mode(struct cdp_soc_t *dp_soc,
 	}
 	}
 
 
 	pdev->monitor_configured = true;
 	pdev->monitor_configured = true;
-	dp_vdev_set_monitor_mode_buf_rings(pdev);
 
 
 	dp_mon_filter_setup_mon_mode(pdev);
 	dp_mon_filter_setup_mon_mode(pdev);
 	status = dp_mon_filter_update(pdev);
 	status = dp_mon_filter_update(pdev);