Re: [PATCH v3 net-next 08/14] mlx4: use order-0 pages for RX
From: Eric Dumazet <hidden>
Date: 2017-03-12 16:50:02
On Sun, 2017-03-12 at 17:49 +0200, Saeed Mahameed wrote:
On Sun, Mar 12, 2017 at 5:29 PM, Eric Dumazet [off-list ref] wrote:quoted
On Sun, 2017-03-12 at 07:57 -0700, Eric Dumazet wrote:quoted
Problem is XDP TX : I do not see any guarantee mlx4_en_recycle_tx_desc() runs while the NAPI RX is owned by current cpu. Since TX completion is using a different NAPI, I really do not believe we can avoid an atomic operation, like a spinlock, to protect the list of pages ( ring->page_cache )A quick fix for net-next would be :Hi Eric, Good catch. I don't think we need to complicate with an expensive spinlock, we can simply fix this by not enabling interrupts on XDP TX CQ (not arm this CQ at all). and handle XDP TX CQ completion from the RX NAPI context, in a serial (Atomic) manner before handling RX completions themselves. This way locking is not required since all page cache handling is done from the same context (RX NAPI). This is how we do this in mlx5, and this is the best approach (performance wise) since we dealy XDP TX CQ completions handling until we really need the space they hold (On new RX packets).
SGTM, can you provide the patch for mlx4 ? Thanks !