Re: [PATCH net-next] net: mana: Extend RX CQE coalescing up to 8 packets
Joe Damato <[email protected]> Thu, 30 Jul 2026 08:54:48 -0700
| Newsgroups | org.kernel.vger.linux-hyperv,org.kernel.vger.linux-kernel,org.kernel.vger.linux-rdma,org.kernel.vger.netdev |
|---|---|
| Message-ID | <amtzyNmcIIYy6/[email protected]> |
On Wed, Jul 29, 2026 at 03:52:22PM -0700, Haiyang Zhang wrote: > From: Haiyang Zhang <[email protected]> > > To support up to 8 packets per CQE, put two packet lengths and > hash values into one PPI entry by using the reserved fields. > Update ethtool handlers to set this feature. > Update per queue stat to show the coalesced CQE counters. > This feature is supported on NIC hardware showing the relevant > PF flag. > > Signed-off-by: Haiyang Zhang <[email protected]> > --- > drivers/net/ethernet/microsoft/mana/mana_en.c | 137 ++++++++++++------ > .../ethernet/microsoft/mana/mana_ethtool.c | 30 +++- > include/net/mana/gdma.h | 4 + > include/net/mana/mana.h | 43 ++++-- > 4 files changed, 150 insertions(+), 64 deletions(-) > > diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c > index a8c329bdbacf..720d22e6aea9 100644 > --- a/drivers/net/ethernet/microsoft/mana/mana_en.c > +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c > @@ -1241,6 +1241,9 @@ int mana_gd_query_device_cfg(struct gdma_context *gc, u32 proto_major_ver, [...] > > +static void mana_process_one_rx_pkt(struct device *dev, struct mana_rxq *rxq, > + struct mana_rxcomp_oob *oob, > + u32 pktlen, u32 pkt_hash) > +{ > + struct mana_recv_buf_oob *rxbuf_oob; > + struct net_device *ndev = rxq->ndev; > + void *old_buf = NULL; > + bool old_fp; > + > + rxbuf_oob = &rxq->rx_oobs[rxq->buf_index]; > + WARN_ON_ONCE(rxbuf_oob->wqe_inf.wqe_size_in_bu != 1); > + > + if (unlikely(pktlen > rxq->datasize)) { > + /* Increase it even if mana_rx_skb() isn't called. */ > + rxq->rx_cq.work_done++; > + > + ++ndev->stats.rx_dropped; It looks like this code was moved from mana_process_rx_cqe, so this is prob out of scope, but I saw this and was wondering if maybe rx_length_errors is more appropriate? from if_link.h: * @rx_length_errors: Number of packets dropped due to invalid length. * Part of aggregate "frame" errors in `/proc/net/dev`.