/*
 * This file is auto-generated. Modifications will be lost.
 *
 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
 * for more information.
 */
#ifndef _UAPI_LINUX_NETDEV_H
#define _UAPI_LINUX_NETDEV_H
#define NETDEV_FAMILY_NAME "netdev"
#define NETDEV_FAMILY_VERSION 1
enum netdev_xdp_act {
  NETDEV_XDP_ACT_BASIC = 1,
  NETDEV_XDP_ACT_REDIRECT = 2,
  NETDEV_XDP_ACT_NDO_XMIT = 4,
  NETDEV_XDP_ACT_XSK_ZEROCOPY = 8,
  NETDEV_XDP_ACT_HW_OFFLOAD = 16,
  NETDEV_XDP_ACT_RX_SG = 32,
  NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
  NETDEV_XDP_ACT_MASK = 127,
};
enum netdev_xdp_rx_metadata {
  NETDEV_XDP_RX_METADATA_TIMESTAMP = 1,
  NETDEV_XDP_RX_METADATA_HASH = 2,
  NETDEV_XDP_RX_METADATA_VLAN_TAG = 4,
};
enum netdev_xsk_flags {
  NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1,
  NETDEV_XSK_FLAGS_TX_CHECKSUM = 2,
  NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO = 4,
};
enum netdev_queue_type {
  NETDEV_QUEUE_TYPE_RX,
  NETDEV_QUEUE_TYPE_TX,
};
enum netdev_qstats_scope {
  NETDEV_QSTATS_SCOPE_QUEUE = 1,
};
enum {
  NETDEV_A_DEV_IFINDEX = 1,
  NETDEV_A_DEV_PAD,
  NETDEV_A_DEV_XDP_FEATURES,
  NETDEV_A_DEV_XDP_ZC_MAX_SEGS,
  NETDEV_A_DEV_XDP_RX_METADATA_FEATURES,
  NETDEV_A_DEV_XSK_FEATURES,
  __NETDEV_A_DEV_MAX,
  NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1)
};
enum {
  __NETDEV_A_IO_URING_PROVIDER_INFO_MAX,
  NETDEV_A_IO_URING_PROVIDER_INFO_MAX = (__NETDEV_A_IO_URING_PROVIDER_INFO_MAX - 1)
};
enum {
  NETDEV_A_PAGE_POOL_ID = 1,
  NETDEV_A_PAGE_POOL_IFINDEX,
  NETDEV_A_PAGE_POOL_NAPI_ID,
  NETDEV_A_PAGE_POOL_INFLIGHT,
  NETDEV_A_PAGE_POOL_INFLIGHT_MEM,
  NETDEV_A_PAGE_POOL_DETACH_TIME,
  NETDEV_A_PAGE_POOL_DMABUF,
  NETDEV_A_PAGE_POOL_IO_URING,
  __NETDEV_A_PAGE_POOL_MAX,
  NETDEV_A_PAGE_POOL_MAX = (__NETDEV_A_PAGE_POOL_MAX - 1)
};
enum {
  NETDEV_A_PAGE_POOL_STATS_INFO = 1,
  NETDEV_A_PAGE_POOL_STATS_ALLOC_FAST = 8,
  NETDEV_A_PAGE_POOL_STATS_ALLOC_SLOW,
  NETDEV_A_PAGE_POOL_STATS_ALLOC_SLOW_HIGH_ORDER,
  NETDEV_A_PAGE_POOL_STATS_ALLOC_EMPTY,
  NETDEV_A_PAGE_POOL_STATS_ALLOC_REFILL,
  NETDEV_A_PAGE_POOL_STATS_ALLOC_WAIVE,
  NETDEV_A_PAGE_POOL_STATS_RECYCLE_CACHED,
  NETDEV_A_PAGE_POOL_STATS_RECYCLE_CACHE_FULL,
  NETDEV_A_PAGE_POOL_STATS_RECYCLE_RING,
  NETDEV_A_PAGE_POOL_STATS_RECYCLE_RING_FULL,
  NETDEV_A_PAGE_POOL_STATS_RECYCLE_RELEASED_REFCNT,
  __NETDEV_A_PAGE_POOL_STATS_MAX,
  NETDEV_A_PAGE_POOL_STATS_MAX = (__NETDEV_A_PAGE_POOL_STATS_MAX - 1)
};
enum {
  NETDEV_A_NAPI_IFINDEX = 1,
  NETDEV_A_NAPI_ID,
  NETDEV_A_NAPI_IRQ,
  NETDEV_A_NAPI_PID,
  NETDEV_A_NAPI_DEFER_HARD_IRQS,
  NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT,
  NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT,
  __NETDEV_A_NAPI_MAX,
  NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
};
enum {
  __NETDEV_A_XSK_INFO_MAX,
  NETDEV_A_XSK_INFO_MAX = (__NETDEV_A_XSK_INFO_MAX - 1)
};
enum {
  NETDEV_A_QUEUE_ID = 1,
  NETDEV_A_QUEUE_IFINDEX,
  NETDEV_A_QUEUE_TYPE,
  NETDEV_A_QUEUE_NAPI_ID,
  NETDEV_A_QUEUE_DMABUF,
  NETDEV_A_QUEUE_IO_URING,
  NETDEV_A_QUEUE_XSK,
  __NETDEV_A_QUEUE_MAX,
  NETDEV_A_QUEUE_MAX = (__NETDEV_A_QUEUE_MAX - 1)
};
enum {
  NETDEV_A_QSTATS_IFINDEX = 1,
  NETDEV_A_QSTATS_QUEUE_TYPE,
  NETDEV_A_QSTATS_QUEUE_ID,
  NETDEV_A_QSTATS_SCOPE,
  NETDEV_A_QSTATS_RX_PACKETS = 8,
  NETDEV_A_QSTATS_RX_BYTES,
  NETDEV_A_QSTATS_TX_PACKETS,
  NETDEV_A_QSTATS_TX_BYTES,
  NETDEV_A_QSTATS_RX_ALLOC_FAIL,
  NETDEV_A_QSTATS_RX_HW_DROPS,
  NETDEV_A_QSTATS_RX_HW_DROP_OVERRUNS,
  NETDEV_A_QSTATS_RX_CSUM_COMPLETE,
  NETDEV_A_QSTATS_RX_CSUM_UNNECESSARY,
  NETDEV_A_QSTATS_RX_CSUM_NONE,
  NETDEV_A_QSTATS_RX_CSUM_BAD,
  NETDEV_A_QSTATS_RX_HW_GRO_PACKETS,
  NETDEV_A_QSTATS_RX_HW_GRO_BYTES,
  NETDEV_A_QSTATS_RX_HW_GRO_WIRE_PACKETS,
  NETDEV_A_QSTATS_RX_HW_GRO_WIRE_BYTES,
  NETDEV_A_QSTATS_RX_HW_DROP_RATELIMITS,
  NETDEV_A_QSTATS_TX_HW_DROPS,
  NETDEV_A_QSTATS_TX_HW_DROP_ERRORS,
  NETDEV_A_QSTATS_TX_CSUM_NONE,
  NETDEV_A_QSTATS_TX_NEEDS_CSUM,
  NETDEV_A_QSTATS_TX_HW_GSO_PACKETS,
  NETDEV_A_QSTATS_TX_HW_GSO_BYTES,
  NETDEV_A_QSTATS_TX_HW_GSO_WIRE_PACKETS,
  NETDEV_A_QSTATS_TX_HW_GSO_WIRE_BYTES,
  NETDEV_A_QSTATS_TX_HW_DROP_RATELIMITS,
  NETDEV_A_QSTATS_TX_STOP,
  NETDEV_A_QSTATS_TX_WAKE,
  __NETDEV_A_QSTATS_MAX,
  NETDEV_A_QSTATS_MAX = (__NETDEV_A_QSTATS_MAX - 1)
};
enum {
  NETDEV_A_DMABUF_IFINDEX = 1,
  NETDEV_A_DMABUF_QUEUES,
  NETDEV_A_DMABUF_FD,
  NETDEV_A_DMABUF_ID,
  __NETDEV_A_DMABUF_MAX,
  NETDEV_A_DMABUF_MAX = (__NETDEV_A_DMABUF_MAX - 1)
};
enum {
  NETDEV_CMD_DEV_GET = 1,
  NETDEV_CMD_DEV_ADD_NTF,
  NETDEV_CMD_DEV_DEL_NTF,
  NETDEV_CMD_DEV_CHANGE_NTF,
  NETDEV_CMD_PAGE_POOL_GET,
  NETDEV_CMD_PAGE_POOL_ADD_NTF,
  NETDEV_CMD_PAGE_POOL_DEL_NTF,
  NETDEV_CMD_PAGE_POOL_CHANGE_NTF,
  NETDEV_CMD_PAGE_POOL_STATS_GET,
  NETDEV_CMD_QUEUE_GET,
  NETDEV_CMD_NAPI_GET,
  NETDEV_CMD_QSTATS_GET,
  NETDEV_CMD_BIND_RX,
  NETDEV_CMD_NAPI_SET,
  NETDEV_CMD_BIND_TX,
  __NETDEV_CMD_MAX,
  NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1)
};
#define NETDEV_MCGRP_MGMT "mgmt"
#define NETDEV_MCGRP_PAGE_POOL "page-pool"
#endif
