On 7/4/2025 9:18 AM, Michal Kubiak wrote: > @@ -1144,27 +841,35 @@ static int ice_clean_rx_irq(struct ice_rx_ring > *rx_ring, int budget) > if (ice_is_non_eop(rx_ring, rx_desc)) > continue; > > - ice_get_pgcnts(rx_ring); > xdp_verdict = ice_run_xdp(rx_ring, xdp, xdp_prog, xdp_ring, > rx_desc); > if (xdp_verdict == ICE_XDP_PASS) > goto construct_skb; > - total_rx_bytes += xdp_get_buff_len(xdp); > - total_rx_pkts++; > > - ice_put_rx_mbuf(rx_ring, xdp, &xdp_xmit, ntc, xdp_verdict); > + if (xdp_verdict & (ICE_XDP_TX | ICE_XDP_REDIR)) > + xdp_xmit |= xdp_verdict; > + total_rx_bytes += xdp_get_buff_len(&xdp->base); > + total_rx_pkts++; > > + xdp->data = NULL; > + rx_ring->first_desc = ntc;
I can't seem to find a user for first_desc outside of the ice_clean_rx_irq_zc > + rx_ring->nr_frags = 0; Similarly, I can't find a user of nr_frags now that we have dropped the ice_put_rx_mbuf. We assign it, but don't seem to actually use it. > continue; > construct_skb: > - skb = ice_build_skb(rx_ring, xdp); > + skb = xdp_build_skb_from_buff(&xdp->base); > + > /* exit if we failed to retrieve a buffer */ > if (!skb) { > rx_ring->ring_stats->rx_stats.alloc_page_failed++; > xdp_verdict = ICE_XDP_CONSUMED; > + xdp->data = NULL; > + rx_ring->first_desc = ntc; > + rx_ring->nr_frags = 0; > + break; > } > - ice_put_rx_mbuf(rx_ring, xdp, &xdp_xmit, ntc, xdp_verdict); > > - if (!skb) > - break; > + xdp->data = NULL; > + rx_ring->first_desc = ntc; > + rx_ring->nr_frags = 0; > > stat_err_bits = BIT(ICE_RX_FLEX_DESC_STATUS0_RXE_S); > if (unlikely(ice_test_staterr(rx_desc->wb.status_error0,
OpenPGP_signature.asc
Description: OpenPGP digital signature