|
@@ -1033,6 +1033,7 @@ QDF_STATUS dp_rx_mon_status_buffers_replenish(struct dp_soc *dp_soc,
|
|
|
union dp_rx_desc_list_elem_t *next;
|
|
|
void *rxdma_srng;
|
|
|
struct dp_pdev *dp_pdev = dp_get_pdev_for_lmac_id(dp_soc, mac_id);
|
|
|
+ QDF_STATUS status = QDF_STATUS_SUCCESS;
|
|
|
|
|
|
if (!dp_pdev) {
|
|
|
dp_rx_mon_status_debug("%pK: pdev is null for mac_id = %d",
|
|
@@ -1094,6 +1095,17 @@ QDF_STATUS dp_rx_mon_status_buffers_replenish(struct dp_soc *dp_soc,
|
|
|
if (qdf_unlikely(!rx_netbuf)) {
|
|
|
dp_rx_mon_status_err("%pK: qdf_nbuf allocate or map fail, count %d",
|
|
|
dp_soc, count);
|
|
|
+ /*
|
|
|
+ * If buffer allocation fails on current HP, then
|
|
|
+ * decrement HP so it will be set to previous index
|
|
|
+ * where proper buffer is attached.
|
|
|
+ */
|
|
|
+ if (!count)
|
|
|
+ status = QDF_STATUS_E_NOMEM;
|
|
|
+ else
|
|
|
+ hal_srng_src_dec_hp(dp_soc->hal_soc,
|
|
|
+ rxdma_srng);
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1148,7 +1160,7 @@ QDF_STATUS dp_rx_mon_status_buffers_replenish(struct dp_soc *dp_soc,
|
|
|
mac_id, rx_desc_pool);
|
|
|
}
|
|
|
|
|
|
- return QDF_STATUS_SUCCESS;
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
#if !defined(DISABLE_MON_CONFIG) && defined(MON_ENABLE_DROP_FOR_MAC)
|