/*
 * 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,
};
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_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_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_MAX,
  NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
};
enum {
  NETDEV_A_QUEUE_ID = 1,
  NETDEV_A_QUEUE_IFINDEX,
  NETDEV_A_QUEUE_TYPE,
  NETDEV_A_QUEUE_NAPI_ID,
  __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_MAX,
  NETDEV_A_QSTATS_MAX = (__NETDEV_A_QSTATS_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_MAX,
  NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1)
};
#define NETDEV_MCGRP_MGMT "mgmt"
#define NETDEV_MCGRP_PAGE_POOL "page-pool"
#endif
