From nobody Thu Oct 2 21:53:26 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C479C2DF121; Thu, 11 Sep 2025 08:23:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757579009; cv=none; b=iEtMyQsI/0m3NDsBy5ziB/7LD/VRjersRqpK1xa6+azholMZUNiijk60xIvRmSV8FMpRl8HCsQEF4ZSHlYUyVy2Q3gFyvZqC6iNHYycgr/wUUNX3VkzT6RJkPzlhTq7h0rqflWbAPkrYnhesgFjlrLXOzn66L1tuZ+5g40+2jXI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757579009; c=relaxed/simple; bh=ypoWEn4gEmwpXn2cEWB0XS0dYLbndFFpNSdqJXTOW4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qnvQKxbD66G9rXDmtL/wX396biul/GOjPubvw7uy0W1+5w8qqEGuKZeHmpD/fAm6raDgrjZb8/lxhYqB+LobDgTHNzNdZLM8Ph2A8wXwwT73qztGJXLV7kFWlJdgl6GNnKUEQ8yAAY1hB2wgNv1iqVOT7OXdF9hFjF1o3nIAcm0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LyfXX21p; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LyfXX21p" Received: by smtp.kernel.org (Postfix) with ESMTPS id 752B9C4CEF5; Thu, 11 Sep 2025 08:23:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1757579009; bh=ypoWEn4gEmwpXn2cEWB0XS0dYLbndFFpNSdqJXTOW4Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=LyfXX21pQXJ8sPOmu/nEoHgenMeHVbEWPnevO04aNHJfFWHVHQYCllOtTDzBE+vZe sv9BVRDORO/daHD/fSfiXPoqv31NG2VGPRIMMWD5npOm+0zYRXY1J9orIrJAam3ZKp VjmoMdl0Jfn44UOfCi+2YVwt489tNkN8wDkn4puRG8xi84YFMHDfXz1eV1GIZ7OFIc Pt2t4BYxWLut0BdJq3ut/sMzhOZdceL9unHevQN+b4fmv/Jgs8Dob2SR80f3YJFDPi d8npjehLvZR92R6W1ijcUITRR+bARkntqnsZIzzvcVZ9vSk8ULjKH4ubyAieKwczPG KV3WOQi+ChMcQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 669FECAC592; Thu, 11 Sep 2025 08:23:29 +0000 (UTC) From: Rohan G Thomas via B4 Relay Date: Thu, 11 Sep 2025 16:23:00 +0800 Subject: [PATCH net 2/2] net: stmmac: Consider Tx VLAN offload tag length for maxSDU Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250911-qbv-fixes-v1-2-e81e9597cf1f@altera.com> References: <20250911-qbv-fixes-v1-0-e81e9597cf1f@altera.com> In-Reply-To: <20250911-qbv-fixes-v1-0-e81e9597cf1f@altera.com> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Maxime Coquelin , Alexandre Torgue , Jose Abreu , Rohan G Thomas Cc: netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Rohan G Thomas , Matthew Gerlach X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757579008; l=2479; i=rohan.g.thomas@altera.com; s=20250815; h=from:subject:message-id; bh=eTWmL606f3oYOV0qUeKRaPXnGZ0t6qItbR3wWeC6D1c=; b=EDvj8phpndTc3hNkoyw7M0iVbCa4P7nqQt6SJ1KQa45vJvvOkJC8WbBXDlreFnKXxieSCVo3x kfKcEo9wqWYB19X/Va7sRFb63+luJvaYFcmDC06AF0n9burngz9EWNu X-Developer-Key: i=rohan.g.thomas@altera.com; a=ed25519; pk=5yZXkXswhfUILKAQwoIn7m6uSblwgV5oppxqde4g4TY= X-Endpoint-Received: by B4 Relay for rohan.g.thomas@altera.com/20250815 with auth_id=494 X-Original-From: Rohan G Thomas Reply-To: rohan.g.thomas@altera.com From: Rohan G Thomas On hardware with Tx VLAN offload enabled, add the VLAN tag length to the skb length before checking the Qbv maxSDU. Add 4 bytes for 802.1Q an add 8 bytes for 802.1AD tagging. Fixes: c5c3e1bfc9e0 ("net: stmmac: Offload queueMaxSDU from tc-taprio") Signed-off-by: Rohan G Thomas Reviewed-by: Matthew Gerlach --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 25 ++++++++++++++++---= ---- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index 419cb49ee5a25519a60a84bae6bcdb0be655384e..c487ce95436c2a1f502f96d00af= ab6270d77c0bb 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -4531,6 +4531,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, s= truct net_device *dev) bool has_vlan, set_ic; int entry, first_tx; dma_addr_t des; + u32 sdu_len; =20 tx_q =3D &priv->dma_conf.tx_queue[queue]; txq_stats =3D &priv->xstats.txq_stats[queue]; @@ -4547,13 +4548,6 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, = struct net_device *dev) return stmmac_tso_xmit(skb, dev); } =20 - if (priv->est && priv->est->enable && - priv->est->max_sdu[queue] && - skb->len > priv->est->max_sdu[queue]){ - priv->xstats.max_sdu_txq_drop[queue]++; - goto max_sdu_err; - } - if (unlikely(stmmac_tx_avail(priv, queue) < nfrags + 1)) { if (!netif_tx_queue_stopped(netdev_get_tx_queue(dev, queue))) { netif_tx_stop_queue(netdev_get_tx_queue(priv->dev, @@ -4569,6 +4563,23 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, = struct net_device *dev) /* Check if VLAN can be inserted by HW */ has_vlan =3D stmmac_vlan_insert(priv, skb, tx_q); =20 + sdu_len =3D skb->len; + if (has_vlan) { + /* Add VLAN tag length to sdu length in case of txvlan offload */ + if (priv->dev->features & NETIF_F_HW_VLAN_CTAG_TX) + sdu_len +=3D VLAN_HLEN; + if (skb->vlan_proto =3D=3D htons(ETH_P_8021AD) && + priv->dev->features & NETIF_F_HW_VLAN_STAG_TX) + sdu_len +=3D VLAN_HLEN; + } + + if (priv->est && priv->est->enable && + priv->est->max_sdu[queue] && + sdu_len > priv->est->max_sdu[queue]) { + priv->xstats.max_sdu_txq_drop[queue]++; + goto max_sdu_err; + } + entry =3D tx_q->cur_tx; first_entry =3D entry; WARN_ON(tx_q->tx_skbuff[first_entry]); --=20 2.25.1