From nobody Mon Sep 28 05:45:36 2026 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CF8313D891 for ; Wed, 26 Aug 2026 00:02:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787702559; cv=none; b=HnxA8i8Foebh4aPX2eEwiia7SCRrMgUHJhKoyspNVy9tdL4rqZtw4uankCfTJJsqAXD+870A3432DfNDXHaCOwAwHODadhCbvubjFHDyBRpXej7V42DRF9XAMrU0f6JCDIV8U0X9UVNjsqN6Hm6DTEk0wqn4hmgUNGVby+BzDOQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787702559; c=relaxed/simple; bh=7VFxiajtNPEz8wd2qW7G25tWjW6JMDTpFm13VJwoHK8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=kXgp50lNp8G/NwR3V56nYlDqym8d2J8MxNGoV2GM60Q5hbFXLw0adebthRYcEnppGStMc6L9dyndqOFfVahPc1pV5W85O5C4suLZXEAkuJQkkbqd1sHZ6U7NywND0EFaa/hoj5wyjS2ZvCg7aaq1aqFtenKtOYBhiZU+XPgPymY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to; spf=none smtp.mailfrom=dama.to; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b=q2lN9NrA; arc=none smtp.client-ip=209.85.216.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=dama.to Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b="q2lN9NrA" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-38e07ebd263so379882a91.1 for ; Tue, 25 Aug 2026 17:02:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dama-to.20251104.gappssmtp.com; s=20251104; t=1787702557; x=1788307357; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Utmg/kSt4ut5hrQSIKyhDScZLEzGOdoo3IAf81kK6dA=; b=q2lN9NrAZgc1U0CyW707xwP9OjqAt1k869suvt4/yr3Z9XkiAr4lFAYKBbkaqaOIiv 3GL5DCdxxVugVdeFcUM2/EiXdn8RCc5NfGuJu7PoVnKM+cucyCIWZcf4LAdEJYtHHnZZ IluaiPDzbFstwaywB8hJ8FKk2sAcodFw6/6AT94keBoAGV3Nxa0WfiWq7+jtEUNoiYcx 6N+K+lQ/6IZA+kkk1a7b7cWFCc096/b9ibeYvblDUj/gKQZ5bVegjhkLkGKvE9Ax5ogp 0801p9jsUY1Zy6RshCAu9/LBbTFrN4AgHOi70ZEcQzKMK9r6sCrF1XwBsBO+RnRAXazv R0WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787702557; x=1788307357; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Utmg/kSt4ut5hrQSIKyhDScZLEzGOdoo3IAf81kK6dA=; b=PbOv4mEMUUr2Q3Oosu9W2klfvqgtbp53T5u/DSs+NeBWT+inTTZJ8EOepVWDj3VnwU uXgmk8yF7mKdO7+CSaAXnTKhiwFUqNRhtQFeFIdUarwvC0x3Dd/XIpDnr5ubkZyLT5ZJ Kn/TYT0rKcgGAwoHsVz1ZClBfb2vk9RrG94ljIF15I9Vevz3Znx8DzlCrk0apOiy/ZMt fZ049ZT/e1FtBXzIuhA9PQuHRySyJh3v2toVG39tu6D1Ec2imTKX269BnfNdVvyVXRLB 5R8eOyTyJMnua9CXxr/jisYXYRzV12Y9Ujz0CrfZP2GgV0ZMPUr7K6DfuiFBstti8xah jXoA== X-Forwarded-Encrypted: i=1; AHgh+RrJb1H6JQJwk+SN92uHm1C66yDLPk7E+eYGeGPyHE+oz6j/eBIqVTLhinsqt/jAvaNtOU2Jn5SmknCYgpY=@vger.kernel.org X-Gm-Message-State: AFuF++m19bN+gU7rObWdk0xXDVG3cPchkxV0ueWCwDZYrpUdp/OwZ35d v0aTZsGoMYJr4pzMXih6p9qMkIXmG8lY0xouYcP5m7ZKLFsqD2ko4slhuqmZaliSdYQ= X-Gm-Gg: AR+sD1102R7WNrLuOiGT2J/4cG1KBby/zS9hKcmzqxeSl4MxwaFt6T+a2mCdnneuq3C qAoZVs3yK0TOD9mW1UPSEP1JTaKry0CpPRWMj183Nn6tuiIyEfyDNYrlaDCWicN8N2A5FIs5+lk Sw9WM2/JioHe0bJdT4ETzkm6uwhz9ZzX/1MNDPd5TtdyEqOoTKl0eiJ+DyTOS/dLULTebSfyNfK FAS1l/QhHQLRTgSQtibL5do/u8A/cLnRevtpcbBzXi57MS5KrYvYW9WejKkQNGIhPOa+1a4cjHT FLG7h/a3i3fFsGaqIQrY6IazAXxTtb82O6YzqAY8ZN95M5K6Jerw6/ycpfA8mQUXhED5ivU4PP7 EzhnE3Kt4ZEnn3QB0DkmHRv7o6E58elGDQo6adhGqmR1ZxbyUlMddxzUX4J4DXfk3xVRRZE9ZdI cRHTXXnBK53fn6I2DW390Pd+D/iPoj22uVBHAe3O7NF04= X-Received: by 2002:a17:90b:560c:b0:396:67ed:da2d with SMTP id 98e67ed59e1d1-3966d4931a0mr5782303a91.15.1787702556523; Tue, 25 Aug 2026 17:02:36 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:49::]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39645da08desm5362829a91.17.2026.08.25.17.02.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 17:02:35 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org, Michael Chan , Pavan Chebbi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andy Gospodarek , Somnath Kotur , Simon Horman Cc: kalesh-anakkur.purayil@broadcom.com, linux-kernel@vger.kernel.org, Joe Damato , stable@vger.kernel.org Subject: [PATCH net] bnxt_en: Write doorbell when linearizing skb fails Date: Tue, 25 Aug 2026 17:02:33 -0700 Message-ID: <20260826000234.2031564-1-joe@dama.to> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When the driver is handed a burst of packets, the doorbell is deferred until the end. If the last packet has a huge number of frags, but fails to linearize, the doorbell will not be written adding latency on TX for any packets in the ring and holding their DMA mappings until the next TX. Note that the queue is not stopped, so this issue would delay pending BDs until the next TX. This issue was discovered by Sashiko and reading the code verifies that, while unlikely, it is possible. Fix this by jumping to tx_free, which replicates the same pre-existing logic but also writes the doorbell. Fixes: b91e82129400 ("bnxt_en: Linearize TX SKB if the fragments exceed the= max") Cc: stable@vger.kernel.org Signed-off-by: Joe Damato Reviewed-by: Andy Gospodarek Reviewed-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethern= et/broadcom/bnxt/bnxt.c index 9c2cc50276a5..d59bcca73a2b 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -502,11 +502,8 @@ static netdev_tx_t bnxt_start_xmit(struct sk_buff *skb= , struct net_device *dev) if (skb_shinfo(skb)->nr_frags > TX_MAX_FRAGS) { netdev_warn_once(dev, "SKB has too many (%d) fragments, max supported is= %d. SKB will be linearized.\n", skb_shinfo(skb)->nr_frags, TX_MAX_FRAGS); - if (skb_linearize(skb)) { - dev_kfree_skb_any(skb); - dev_core_stats_tx_dropped_inc(dev); - return NETDEV_TX_OK; - } + if (skb_linearize(skb)) + goto tx_free; } #endif if (skb_is_gso(skb) && base-commit: dc4b95b8fee95113587e93ca116356032d271371 --=20 2.53.0-Meta