On 10/1/21 7:42 PM, Biju Das wrote: > Fillup ravb_rx_ring_free_gbeth() function to support RZ/G2L. > > This patch also renames ravb_rx_ring_free to ravb_rx_ring_free_rcar > to be consistent with the naming convention used in sh_eth driver. > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> > --- > RFC->v1: > * renamed "rgeth" to "gbeth". > * renamed ravb_rx_ring_free to ravb_rx_ring_free_rcar > --- > drivers/net/ethernet/renesas/ravb.h | 1 + > drivers/net/ethernet/renesas/ravb_main.c | 41 ++++++++++++++++++++---- > 2 files changed, 36 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h > index b147c4a0dc0b..1a73f960d918 100644 > --- a/drivers/net/ethernet/renesas/ravb.h > +++ b/drivers/net/ethernet/renesas/ravb.h > @@ -1077,6 +1077,7 @@ struct ravb_private { > unsigned int num_tx_desc; /* TX descriptors per packet */ > > int duplex; > + struct ravb_rx_desc *gbeth_rx_ring[NUM_RX_QUEUE]; GBEther only has 1 RX queue, right? And please move the declaration closer to ravb_private::rx_ring. [...] > diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c > index 0d1e3f7d8c33..6ef55f1cf306 100644 > --- a/drivers/net/ethernet/renesas/ravb_main.c > +++ b/drivers/net/ethernet/renesas/ravb_main.c [...] > @@ -1084,16 +1104,25 @@ static int ravb_poll(struct napi_struct *napi, int budget) > struct net_device *ndev = napi->dev; > struct ravb_private *priv = netdev_priv(ndev); > const struct ravb_hw_info *info = priv->info; > + struct ravb_rx_desc *desc; > unsigned long flags; > int q = napi - priv->napi; > int mask = BIT(q); > int quota = budget; > + unsigned int entry; > + bool non_gptp = !(info->gptp || info->ccc_gac); Just no_gptp? Or maybe gptp, seems even better? > > + if (non_gptp) { > + entry = priv->cur_rx[q] % priv->num_rx_ring[q]; > + desc = &priv->gbeth_rx_ring[q][entry]; > + } > /* Processing RX Descriptor Ring */ > /* Clear RX interrupt */ > ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0); > - if (ravb_rx(ndev, "a, q)) > - goto out; > + if (!non_gptp || desc->die_dt != DT_FEMPTY) { > + if (ravb_rx(ndev, "a, q)) > + goto out; > + } > > /* Processing TX Descriptor Ring */ > spin_lock_irqsave(&priv->lock, flags); [...] MBR, Sergey