On 01/10/2024 14:36, Sebastian Andrzej Siewior wrote: > diff --git a/drivers/net/ethernet/sfc/efx_channels.c b/drivers/net/ethernet/sfc/efx_channels.c > index c9e17a8208a90..f3288e02c1bd8 100644 > --- a/drivers/net/ethernet/sfc/efx_channels.c > +++ b/drivers/net/ethernet/sfc/efx_channels.c > @@ -1260,7 +1260,8 @@ static int efx_poll(struct napi_struct *napi, int budget) > > spent = efx_process_channel(channel, budget); > > - xdp_do_flush(); > + if (spent) > + xdp_do_flush(); > > if (spent < budget) { > if (efx_channel_has_rx_queue(channel) && Seems reasonable to me. Another alternative is to look at budget rather than spent, as that seems like the condition that drives whether we have a real XDP. -ed