linux/drivers/net/ethernet/broadcom
Joe Damato 00eeab0c64 bnxt_en: Write doorbell when linearizing skb fails
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: b91e821294 ("bnxt_en: Linearize TX SKB if the fragments exceed the max")
Cc: stable@vger.kernel.org
Signed-off-by: Joe Damato <joe@dama.to>
Reviewed-by: Michael Chan <michael.chan@broadcom.com>
Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
Link: https://patch.msgid.link/20260826000234.2031564-1-joe@dama.to
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-08-27 11:27:31 +02:00
..
asp2 net: bcmasp: Keep phy link during WoL sleep cycle 2026-05-08 16:38:56 -07:00
bnge Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-06 11:53:47 -07:00
bnx2x bnx2x: fix double free in bnx2x_init_firmware() error path 2026-08-20 12:39:53 -07:00
bnxt bnxt_en: Write doorbell when linearizing skb fails 2026-08-27 11:27:31 +02:00
genet net: bcmgenet: use platform_device_set_of_node() 2026-07-10 16:07:09 +02:00
b44.c net: b44: use ethtool_puts 2026-06-03 17:44:45 -07:00
b44.h
bcm63xx_enet.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
bcm63xx_enet.h
bcm4908_enet.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
bcm4908_enet.h
bcmsysport.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
bcmsysport.h
bgmac-bcma-mdio.c
bgmac-bcma.c
bgmac-platform.c
bgmac.c
bgmac.h
bnx2_fw.h
bnx2.c net: Consistently define pci_device_ids using named initializers 2026-05-12 18:16:34 -07:00
bnx2.h
cnic_defs.h
cnic_if.h
cnic.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
cnic.h
Kconfig net: bcmgenet: convert RX path to page_pool 2026-06-11 15:44:10 -07:00
Makefile
sb1250-mac.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
tg3.c tg3: Fix race for querying speed/duplex 2026-03-27 12:06:38 +00:00
tg3.h
unimac.h