]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
eth: fbnic: Account for page fragments when updating BDQ tail
authorDimitri Daskalakis <daskald@meta.com>
Tue, 24 Mar 2026 19:51:22 +0000 (12:51 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 28 Mar 2026 03:30:23 +0000 (20:30 -0700)
commitb38c55320bf85a84a4f04803c57b261fc87e9b4b
tree545d26f6830d9e9e852ebe662d103701b33bd851
parent2edfa31769a4add828a7e604b21cb82aaaa05925
eth: fbnic: Account for page fragments when updating BDQ tail

FBNIC supports fixed size buffers of 4K. When PAGE_SIZE > 4K, we
fragment the page across multiple descriptors (FBNIC_BD_FRAG_COUNT).
When refilling the BDQ, the correct number of entries are populated,
but tail was only incremented by one. So on a system with 64K pages,
HW would get one descriptor refilled for every 16 we populate.

Additionally, we program the ring size in the HW when enabling the BDQ.
This was not accounting for page fragments, so on systems with 64K pages,
the HW used 1/16th of the ring.

Fixes: 0cb4c0a13723 ("eth: fbnic: Implement Rx queue alloc/start/stop/free")
Signed-off-by: Dimitri Daskalakis <daskald@meta.com>
Link: https://patch.msgid.link/20260324195123.3486219-2-dimitri.daskalakis1@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c