Hi Paul, Thanks for your work. On 2024-03-26 08:37:39 +0000, Paul Barker wrote: > The TX queue should be serviced each time the poll function is called, > even if the full RX work budget has been consumed. This prevents > starvation of the TX queue when RX bandwidth usage is high. Is this not a design decision? That the driver should prioritize Rx over Tx if there is contention. I have no opinion on if this design is good or bad, I let Sergey judge that. > > Fixes: a0d2f20650e8 ("Renesas Ethernet AVB PTP clock driver") However, I do not think it is a bug and should not have a fixes tag. Also this fixes tag is incorrect, this points to the commit where ravb.c was renamed ravb_main.c. ravb_poll() is not touched by this commit. > Signed-off-by: Paul Barker <paul.barker.ct@xxxxxxxxxxxxxx> > --- > drivers/net/ethernet/renesas/ravb_main.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c > index d1be030c8848..4f98e4e2badb 100644 > --- a/drivers/net/ethernet/renesas/ravb_main.c > +++ b/drivers/net/ethernet/renesas/ravb_main.c > @@ -1324,12 +1324,12 @@ static int ravb_poll(struct napi_struct *napi, int budget) > int q = napi - priv->napi; > int mask = BIT(q); > int quota = budget; > + bool rearm = true; > > /* Processing RX Descriptor Ring */ > /* Clear RX interrupt */ > ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0); > - if (ravb_rx(ndev, "a, q)) > - goto out; > + rearm = !ravb_rx(ndev, "a, q); > > /* Processing TX Descriptor Ring */ > spin_lock_irqsave(&priv->lock, flags); > @@ -1339,6 +1339,9 @@ static int ravb_poll(struct napi_struct *napi, int budget) > netif_wake_subqueue(ndev, q); > spin_unlock_irqrestore(&priv->lock, flags); > > + if (!rearm) > + goto out; > + > napi_complete(napi); > > /* Re-enable RX/TX interrupts */ > > base-commit: 4cece764965020c22cff7665b18a012006359095 > -- > 2.44.0 > -- Kind Regards, Niklas Söderlund