Move from doing batch refill of Rx ring from bundles of 8 to once per
enetc_clean_rx_ring call. One benefit is that we're cleaning up all the
BDs that we just processed, which should still be cached. The other is
that hardware Rx index stays a little back and doesn't cause contention
on the BDs processed in the Rx loop.
Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Gagandeep Singh <g.singh@nxp.com>
#include "enetc.h"
#include "enetc_logs.h"
-#define ENETC_RXBD_BUNDLE 8 /* Number of BDs to update at once */
-
static int
enetc_clean_tx_ring(struct enetc_bdr *tx_ring)
{
union enetc_rx_bd *rxbd;
uint32_t bd_status;
- if (cleaned_cnt >= ENETC_RXBD_BUNDLE) {
- int count = enetc_refill_rx_ring(rx_ring, cleaned_cnt);
-
- cleaned_cnt -= count;
- }
-
rxbd = ENETC_RXBD(*rx_ring, i);
bd_status = rte_le_to_cpu_32(rxbd->r.lstatus);
if (!bd_status)
rx_frm_cnt++;
}
+ enetc_refill_rx_ring(rx_ring, cleaned_cnt);
+
return rx_frm_cnt;
}