From: Jason Xing <kernelxing@tencent.com>
Add a union member for completion queue only in copy mode for now. The
purpose is to replace the cq_cached_prod_lock with atomic operation
to improve performance. Note that completion queue in zerocopy mode
doesn't need to be converted because the whole process is lockless.
Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
net/xdp/xsk_queue.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/net/xdp/xsk_queue.h b/net/xdp/xsk_queue.h
index 1eb8d9f8b104..44cc01555c0b 100644
--- a/net/xdp/xsk_queue.h
+++ b/net/xdp/xsk_queue.h
@@ -40,7 +40,11 @@ struct xdp_umem_ring {
struct xsk_queue {
u32 ring_mask;
u32 nentries;
- u32 cached_prod;
+ union {
+ u32 cached_prod;
+ /* Used for cq in copy mode only */
+ atomic_t cached_prod_atomic;
+ };
u32 cached_cons;
struct xdp_ring *ring;
u64 invalid_descs;--
2.41.3