diff options
| author | R. Christian McDonald <rcm@FreeBSD.org> | 2026-10-05 15:17:13 +0000 |
|---|---|---|
| committer | R. Christian McDonald <rcm@FreeBSD.org> | 2026-10-05 15:19:01 +0000 |
| commit | 4a0ec469934a5de60b9b540689703a698ac44105 (patch) | |
| tree | 1c5a6f8f93bf5801f6cc54a38da60c59b31ba50f /sys/dev/nvmf/nvmf_proto.h | |
| parent | 16c787fbabb8077df1af3bd3baaddf3b4c0dd8e8 (diff) | |
For a lightly used ring iflib_txd_db_check() may defer zero descriptors,
so its "pending >= limit" test is true even when nothing has been queued
since the last doorbell. iflib_txq_drain() calls it before, inside and
after its loop, so a sender that drains its own packet wrote the tail
register three times per packet, twice with the value the hardware
already had.
The log of 81be655266fa ("iflib: ensure that tx interrupts enabled and
cleanups") calls skipping the doorbell when db_pending is zero "an
obvious missing optimization"; the comparison against a limit of zero
defeated it. vmx(4) and mgb(4) have dropped such repeated requests in
the driver since 2019. Return early when nothing is pending.
Reviewed by: gallatin
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D60290
Diffstat (limited to 'sys/dev/nvmf/nvmf_proto.h')
0 files changed, 0 insertions, 0 deletions
