| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
| /* |
| * xdp_diag: interface for query/monitor XDP sockets |
| * Copyright(c) 2019 Intel Corporation. |
| */ |
| |
| #ifndef _LINUX_XDP_DIAG_H |
| #define _LINUX_XDP_DIAG_H |
| |
| #include <linux/types.h> |
| |
| struct xdp_diag_req { |
| __u8 sdiag_family; |
| __u8 sdiag_protocol; |
| __u16 pad; |
| __u32 xdiag_ino; |
| __u32 xdiag_show; |
| __u32 xdiag_cookie[2]; |
| }; |
| |
| struct xdp_diag_msg { |
| __u8 xdiag_family; |
| __u8 xdiag_type; |
| __u16 pad; |
| __u32 xdiag_ino; |
| __u32 xdiag_cookie[2]; |
| }; |
| |
| #define XDP_SHOW_INFO (1 << 0) /* Basic information */ |
| #define XDP_SHOW_RING_CFG (1 << 1) |
| #define XDP_SHOW_UMEM (1 << 2) |
| #define XDP_SHOW_MEMINFO (1 << 3) |
| #define XDP_SHOW_STATS (1 << 4) |
| |
| enum { |
| XDP_DIAG_NONE, |
| XDP_DIAG_INFO, |
| XDP_DIAG_UID, |
| XDP_DIAG_RX_RING, |
| XDP_DIAG_TX_RING, |
| XDP_DIAG_UMEM, |
| XDP_DIAG_UMEM_FILL_RING, |
| XDP_DIAG_UMEM_COMPLETION_RING, |
| XDP_DIAG_MEMINFO, |
| XDP_DIAG_STATS, |
| __XDP_DIAG_MAX, |
| }; |
| |
| #define XDP_DIAG_MAX (__XDP_DIAG_MAX - 1) |
| |
| struct xdp_diag_info { |
| __u32 ifindex; |
| __u32 queue_id; |
| }; |
| |
| struct xdp_diag_ring { |
| __u32 entries; /*num descs */ |
| }; |
| |
| #define XDP_DU_F_ZEROCOPY (1 << 0) |
| |
| struct xdp_diag_umem { |
| __u64 size; |
| __u32 id; |
| __u32 num_pages; |
| __u32 chunk_size; |
| __u32 headroom; |
| __u32 ifindex; |
| __u32 queue_id; |
| __u32 flags; |
| __u32 refs; |
| }; |
| |
| struct xdp_diag_stats { |
| __u64 n_rx_dropped; |
| __u64 n_rx_invalid; |
| __u64 n_rx_full; |
| __u64 n_fill_ring_empty; |
| __u64 n_tx_invalid; |
| __u64 n_tx_ring_empty; |
| }; |
| |
| #endif /* _LINUX_XDP_DIAG_H */ |