diff options
author | Jakub Kicinski <kuba@kernel.org> | 2023-04-07 04:25:36 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-04-11 03:56:18 +0300 |
commit | 301f227fc860624d37ba5dae9da57dcf371268db (patch) | |
tree | d63448425584a016acf0c88d6adea460ac85b6a6 /tools/perf/scripts/python | |
parent | 08a096780d9239e69909c48f4b1fcd99c860b2ef (diff) | |
download | linux-301f227fc860624d37ba5dae9da57dcf371268db.tar.xz |
net: piggy back on the memory barrier in bql when waking queues
Drivers call netdev_tx_completed_queue() right before
netif_txq_maybe_wake(). If BQL is enabled netdev_tx_completed_queue()
should issue a memory barrier, so we can depend on that separating
the stop check from the consumer index update, instead of adding
another barrier in netif_txq_maybe_wake().
This matters more than the barriers on the xmit path, because
the wake condition is almost always true. So we issue the
consumer side barrier often.
Wrap netdev_tx_completed_queue() in a local helper to issue
the barrier even if BQL is disabled. Keep the same semantics
as netdev_tx_completed_queue() (barrier only if bytes != 0)
to make it clear that the barrier is conditional.
Plus since macro gets pkt/byte counts as arguments now -
we can skip waking if there were no packets completed.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions