Message ID | 20241001184607.193461-2-rosenp@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: lantiq_etop: some cleanups | expand |
On Tue, Oct 01, 2024 at 11:45:58AM -0700, Rosen Penev wrote: > Improves cache efficiency by batching rx skb processing. Small > performance improvement on RX. Benchmark numbers would be good. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > Reviewed-by: Shannon Nelson <shannon.nelson@amd.com> > --- > drivers/net/ethernet/lantiq_etop.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c > index 3c289bfe0a09..94b37c12f3f7 100644 > --- a/drivers/net/ethernet/lantiq_etop.c > +++ b/drivers/net/ethernet/lantiq_etop.c > @@ -122,8 +122,7 @@ ltq_etop_alloc_skb(struct ltq_etop_chan *ch) > return 0; > } > > -static void > -ltq_etop_hw_receive(struct ltq_etop_chan *ch) > +static void ltq_etop_hw_receive(struct ltq_etop_chan *ch, struct list_head *lh) Please don't put the return type on the same line. If you look at this driver, it is the coding style to always have it on a separate line. You broken the coding style. Andrew --- pw-bot: cr
On Tue, Oct 1, 2024 at 3:40 PM Andrew Lunn <andrew@lunn.ch> wrote: > > On Tue, Oct 01, 2024 at 11:45:58AM -0700, Rosen Penev wrote: > > Improves cache efficiency by batching rx skb processing. Small > > performance improvement on RX. > > Benchmark numbers would be good. > > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > Reviewed-by: Shannon Nelson <shannon.nelson@amd.com> > > --- > > drivers/net/ethernet/lantiq_etop.c | 11 +++++++---- > > 1 file changed, 7 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c > > index 3c289bfe0a09..94b37c12f3f7 100644 > > --- a/drivers/net/ethernet/lantiq_etop.c > > +++ b/drivers/net/ethernet/lantiq_etop.c > > @@ -122,8 +122,7 @@ ltq_etop_alloc_skb(struct ltq_etop_chan *ch) > > return 0; > > } > > > > -static void > > -ltq_etop_hw_receive(struct ltq_etop_chan *ch) > > +static void ltq_etop_hw_receive(struct ltq_etop_chan *ch, struct list_head *lh) > > Please don't put the return type on the same line. If you look at this > driver, it is the coding style to always have it on a separate > line. You broken the coding style. I'm using git clang-format HEAD~1 on my commits. Something to improve I guess. > > > Andrew > > --- > pw-bot: cr >
diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c index 3c289bfe0a09..94b37c12f3f7 100644 --- a/drivers/net/ethernet/lantiq_etop.c +++ b/drivers/net/ethernet/lantiq_etop.c @@ -122,8 +122,7 @@ ltq_etop_alloc_skb(struct ltq_etop_chan *ch) return 0; } -static void -ltq_etop_hw_receive(struct ltq_etop_chan *ch) +static void ltq_etop_hw_receive(struct ltq_etop_chan *ch, struct list_head *lh) { struct ltq_etop_priv *priv = netdev_priv(ch->netdev); struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->dma.desc]; @@ -143,7 +142,7 @@ ltq_etop_hw_receive(struct ltq_etop_chan *ch) skb_put(skb, len); skb->protocol = eth_type_trans(skb, ch->netdev); - netif_receive_skb(skb); + list_add_tail(&skb->list, lh); } static int @@ -151,6 +150,7 @@ ltq_etop_poll_rx(struct napi_struct *napi, int budget) { struct ltq_etop_chan *ch = container_of(napi, struct ltq_etop_chan, napi); + LIST_HEAD(rx_list); int work_done = 0; while (work_done < budget) { @@ -158,9 +158,12 @@ ltq_etop_poll_rx(struct napi_struct *napi, int budget) if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) != LTQ_DMA_C) break; - ltq_etop_hw_receive(ch); + ltq_etop_hw_receive(ch, &rx_list); work_done++; } + + netif_receive_skb_list(&rx_list); + if (work_done < budget) { napi_complete_done(&ch->napi, work_done); ltq_dma_ack_irq(&ch->dma);