]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
eth: fbnic: Increase FBNIC_QUEUE_SIZE_MIN to 64
authorDimitri Daskalakis <daskald@meta.com>
Wed, 1 Apr 2026 16:28:48 +0000 (09:28 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 Apr 2026 15:38:34 +0000 (08:38 -0700)
commitec7067e661193403a7a00980bda8612db5954142
treedd9907c8aa0af7c81076a30c3692c32bf22720a3
parent4e453375561fc60820e6b9d8ebeb6b3ee177d42e
eth: fbnic: Increase FBNIC_QUEUE_SIZE_MIN to 64

On systems with 64K pages, RX queues will be wedged if users set the
descriptor count to the current minimum (16). Fbnic fragments large
pages into 4K chunks, and scales down the ring size accordingly. With
64K pages and 16 descriptors, the ring size mask is 0 and will never
be filled.

32 descriptors is another special case that wedges the RX rings.
Internally, the rings track pages for the head/tail pointers, not page
fragments. So with 32 descriptors, there's only 1 usable page as one
ring slot is kept empty to disambiguate between an empty/full ring.
As a result, the head pointer never advances and the HW stalls after
consuming 16 page fragments.

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