diff options
| author | Suraj Gupta <suraj.gupta2@amd.com> | 2026-03-27 13:02:38 +0530 |
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2026-03-31 12:09:12 +0200 |
| commit | d1978d03e86785872871bff9c2623174b10740de (patch) | |
| tree | 544fe7f6ae51070e7c9681c9fdb222c2fa5ea1cb /arch/ppc/git@git.tavy.me:linux.git | |
| parent | 393e0b4f178ec7fce1141dacc3304e3607a92ee9 (diff) | |
net: xilinx: axienet: Fix BQL accounting for multi-BD TX packets
When a TX packet spans multiple buffer descriptors (scatter-gather),
axienet_free_tx_chain sums the per-BD actual length from descriptor
status into a caller-provided accumulator. That sum is reset on each
NAPI poll. If the BDs for a single packet complete across different
polls, the earlier bytes are lost and never credited to BQL. This
causes BQL to think bytes are permanently in-flight, eventually
stalling the TX queue.
The SKB pointer is stored only on the last BD of a packet. When that
BD completes, use skb->len for the byte count instead of summing
per-BD status lengths. This matches netdev_sent_queue(), which debits
skb->len, and naturally survives across polls because no partial
packet contributes to the accumulator.
Fixes: c900e49d58eb ("net: xilinx: axienet: Implement BQL")
Signed-off-by: Suraj Gupta <suraj.gupta2@amd.com>
Reviewed-by: Sean Anderson <sean.anderson@linux.dev>
Link: https://patch.msgid.link/20260327073238.134948-3-suraj.gupta2@amd.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'arch/ppc/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
