summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2026-09-14 19:23:27 -0700
committerJakub Kicinski <kuba@kernel.org>2026-09-16 17:33:06 -0700
commit490599ab23134962a6d18a024e84541d77bdb999 (patch)
tree48122edd4e0f470ecaf9d9d1a1fe46023aadd0e3 /tools/perf/scripts/python
parent5ae916fabca141b79b32e2e57f3c915c0f1e1b2e (diff)
downloadlinux-next-490599ab23134962a6d18a024e84541d77bdb999.tar.gz
linux-next-490599ab23134962a6d18a024e84541d77bdb999.zip
eth: fbnic: ring the doorbell if a burst ends in a drop
fbnic_tx_map() skips the doorbell write, and the completion request, for every packet handed to it with xmit_more set, counting on the packet which ends the burst to publish them all. When that packet is dropped instead - skb_put_padto(), skb_cow_head() or a DMA mapping failure - nothing rings. The descriptors of the preceding packets stay invisible to the HW until the next transmit on that queue, which for a burst-then-idle workload may never come. Remember the meta descriptor of the last packet left without a doorbell and flush it from the error paths. The completion request has to be set on that descriptor rather than simply writing the tail, otherwise the HW would transmit the packets but never report a head, and the ring would fill up and stall for good. This is very similar to Joe's recent series of fixes for bnxt. Not seen in real life, reproduced under QEMU with failure injection. Fixes: 9a57bacd574b ("eth: fbnic: Add basic Tx handling") Reviewed-by: Alexander Duyck <alexanderduyck@fb.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20260915022327.913218-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions