Skip to content

Commit ec7067e

Browse files
ddaskalakuba-moo
authored andcommitted
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: 0cb4c0a ("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>
1 parent 4e45337 commit ec7067e

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/net/ethernet/meta/fbnic/fbnic_txrx.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct fbnic_net;
3838
#define FBNIC_MAX_XDPQS 128u
3939

4040
/* These apply to TWQs, TCQ, RCQ */
41-
#define FBNIC_QUEUE_SIZE_MIN 16u
41+
#define FBNIC_QUEUE_SIZE_MIN 64u
4242
#define FBNIC_QUEUE_SIZE_MAX SZ_64K
4343

4444
#define FBNIC_TXQ_SIZE_DEFAULT 1024

0 commit comments

Comments
 (0)