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,

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to