From: Simon Horman <horms@kernel•org>
To: Aditya Garg <gargaditya@linux•microsoft.com>
Cc: kys@microsoft•com, haiyangz@microsoft•com, wei.liu@kernel•org,
decui@microsoft•com, andrew+netdev@lunn•ch, davem@davemloft•net,
edumazet@google•com, kuba@kernel•org, pabeni@redhat•com,
longli@microsoft•com, kotaranov@microsoft•com,
shradhagupta@linux•microsoft.com, ssengar@linux•microsoft.com,
ernis@linux•microsoft.com, dipayanroy@linux•microsoft.com,
shirazsaleem@microsoft•com, linux-hyperv@vger•kernel.org,
netdev@vger•kernel.org, linux-kernel@vger•kernel.org,
linux-rdma@vger•kernel.org, gargaditya@microsoft•com
Subject: Re: [PATCH net-next v2] net: mana: Handle SKB if TX SGEs exceed hardware limit
Date: Thu, 30 Oct 2025 09:04:44 +0000 [thread overview]
Message-ID: <aQMqLN0FRmNU3_ke@horms.kernel.org> (raw)
In-Reply-To: <20251029131235.GA3903@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
On Wed, Oct 29, 2025 at 06:12:35AM -0700, Aditya Garg wrote:
> The MANA hardware supports a maximum of 30 scatter-gather entries (SGEs)
> per TX WQE. Exceeding this limit can cause TX failures.
> Add ndo_features_check() callback to validate SKB layout before
> transmission. For GSO SKBs that would exceed the hardware SGE limit, clear
> NETIF_F_GSO_MASK to enforce software segmentation in the stack.
> Add a fallback in mana_start_xmit() to linearize non-GSO SKBs that still
> exceed the SGE limit.
>
> Return NETDEV_TX_BUSY only for -ENOSPC from mana_gd_post_work_request(),
> send other errors to free_sgl_ptr to free resources and record the tx
> drop.
>
> Co-developed-by: Dipayaan Roy <dipayanroy@linux•microsoft.com>
> Signed-off-by: Dipayaan Roy <dipayanroy@linux•microsoft.com>
> Signed-off-by: Aditya Garg <gargaditya@linux•microsoft.com>
...
> @@ -289,6 +290,21 @@ netdev_tx_t mana_start_xmit(struct sk_buff *skb, struct net_device *ndev)
> cq = &apc->tx_qp[txq_idx].tx_cq;
> tx_stats = &txq->stats;
>
> + if (MAX_SKB_FRAGS + 2 > MAX_TX_WQE_SGL_ENTRIES &&
> + skb_shinfo(skb)->nr_frags + 2 > MAX_TX_WQE_SGL_ENTRIES) {
> + /* GSO skb with Hardware SGE limit exceeded is not expected here
> + * as they are handled in mana_features_check() callback
> + */
Hi,
I'm curious to know if we actually need this code.
Are there cases where the mana_features_check() doesn't
handle things and the kernel will reach this line?
> + if (skb_is_gso(skb))
> + netdev_warn_once(ndev, "GSO enabled skb exceeds max SGE limit\n");
> + if (skb_linearize(skb)) {
> + netdev_warn_once(ndev, "Failed to linearize skb with nr_frags=%d and is_gso=%d\n",
> + skb_shinfo(skb)->nr_frags,
> + skb_is_gso(skb));
> + goto tx_drop_count;
> + }
> + }
> +
> pkg.tx_oob.s_oob.vcq_num = cq->gdma_id;
> pkg.tx_oob.s_oob.vsq_frame = txq->vsq_frame;
>
...
next prev parent reply other threads:[~2025-10-30 9:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-29 13:12 [PATCH net-next v2] net: mana: Handle SKB if TX SGEs exceed hardware limit Aditya Garg
2025-10-30 9:04 ` Simon Horman [this message]
2025-10-31 13:20 ` Aditya Garg
2025-11-03 14:58 ` Simon Horman
2025-10-31 23:26 ` Jakub Kicinski
2025-11-05 16:40 ` Aditya Garg
2025-11-06 0:17 ` Jakub Kicinski
2025-11-06 13:00 ` Aditya Garg
2025-11-06 13:17 ` Eric Dumazet
2025-11-10 12:08 ` Aditya Garg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aQMqLN0FRmNU3_ke@horms.kernel.org \
--to=horms@kernel$(echo .)org \
--cc=andrew+netdev@lunn$(echo .)ch \
--cc=davem@davemloft$(echo .)net \
--cc=decui@microsoft$(echo .)com \
--cc=dipayanroy@linux$(echo .)microsoft.com \
--cc=edumazet@google$(echo .)com \
--cc=ernis@linux$(echo .)microsoft.com \
--cc=gargaditya@linux$(echo .)microsoft.com \
--cc=gargaditya@microsoft$(echo .)com \
--cc=haiyangz@microsoft$(echo .)com \
--cc=kotaranov@microsoft$(echo .)com \
--cc=kuba@kernel$(echo .)org \
--cc=kys@microsoft$(echo .)com \
--cc=linux-hyperv@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linux-rdma@vger$(echo .)kernel.org \
--cc=longli@microsoft$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=pabeni@redhat$(echo .)com \
--cc=shirazsaleem@microsoft$(echo .)com \
--cc=shradhagupta@linux$(echo .)microsoft.com \
--cc=ssengar@linux$(echo .)microsoft.com \
--cc=wei.liu@kernel$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox