1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2020 Intel Corporation. 3 */ 4 5 #include <bpf/xsk.h> 6 #include <linux/version.h> 7 8 #if KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE && \ 9 defined(RTE_LIBRTE_AF_XDP_PMD_SHARED_UMEM) 10 #define ETH_AF_XDP_SHARED_UMEM 1 11 #endif 12 13 #ifdef ETH_AF_XDP_SHARED_UMEM 14 static __rte_always_inline int 15 create_shared_socket(struct xsk_socket **xsk_ptr, 16 const char *ifname, 17 __u32 queue_id, struct xsk_umem *umem, 18 struct xsk_ring_cons *rx, 19 struct xsk_ring_prod *tx, 20 struct xsk_ring_prod *fill, 21 struct xsk_ring_cons *comp, 22 const struct xsk_socket_config *config) 23 { 24 return xsk_socket__create_shared(xsk_ptr, ifname, queue_id, umem, rx, 25 tx, fill, comp, config); 26 } 27 #else 28 static __rte_always_inline int 29 create_shared_socket(struct xsk_socket **xsk_ptr __rte_unused, 30 const char *ifname __rte_unused, 31 __u32 queue_id __rte_unused, 32 struct xsk_umem *umem __rte_unused, 33 struct xsk_ring_cons *rx __rte_unused, 34 struct xsk_ring_prod *tx __rte_unused, 35 struct xsk_ring_prod *fill __rte_unused, 36 struct xsk_ring_cons *comp __rte_unused, 37 const struct xsk_socket_config *config __rte_unused) 38 { 39 return -1; 40 } 41 #endif 42 43 #ifdef XDP_USE_NEED_WAKEUP 44 static int 45 syscall_needed(struct xsk_ring_prod *q, uint32_t busy_budget) 46 { 47 return xsk_ring_prod__needs_wakeup(q) | busy_budget; 48 } 49 #else 50 static int 51 syscall_needed(struct xsk_ring_prod *q __rte_unused, uint32_t busy_budget) 52 { 53 return busy_budget; 54 } 55 #endif 56