VNET_LINK_MPLS,
VNET_LINK_ETHERNET,
VNET_LINK_ARP,
+ VNET_LINK_NSH,
} __attribute__ ((packed)) vnet_link_t;
#define VNET_LINKS { \
[VNET_LINK_IP6] = "ipv6", \
[VNET_LINK_MPLS] = "mpls", \
[VNET_LINK_ARP] = "arp", \
+ [VNET_LINK_NSH] = "nsh", \
}
/**
* @brief Number of link types. Not part of the enum so it does not have to be included in
* switch statements
*/
-#define VNET_LINK_NUM (VNET_LINK_ARP+1)
+#define VNET_LINK_NUM (VNET_LINK_NSH+1)
/**
* @brief Convert a link to to an Ethertype
#define VNET_HW_INTERFACE_FLAG_L2OUTPUT_SHIFT 9
#define VNET_HW_INTERFACE_FLAG_L2OUTPUT_MAPPED (1 << 9)
+ /* rx mode flags */
+#define VNET_HW_INTERFACE_FLAG_SUPPORTS_INT_MODE (1 << 10)
+
/* Hardware address as vector. Zero (e.g. zero-length vector) if no
address for this class (e.g. PPP). */
u8 *hw_address;
#define VNET_HW_INTERFACE_BOND_INFO_NONE ((uword *) 0)
#define VNET_HW_INTERFACE_BOND_INFO_SLAVE ((uword *) ~0)
+ /* Input node */
+ u32 input_node_index;
+
+ /* input node cpu index by queue */
+ u32 *input_node_thread_index_by_queue;
+
+ /* vnet_hw_interface_rx_mode by queue */
+ u8 *rx_mode_by_queue;
+
+ /* device input device_and_queue runtime index */
+ uword *dq_runtime_index_by_queue;
+
} vnet_hw_interface_t;
extern vnet_device_class_t vnet_local_interface_device_class;
VNET_SW_INTERFACE_TYPE_SUB,
} vnet_sw_interface_type_t;
+typedef enum
+{
+ VNET_HW_INTERFACE_RX_MODE_UNKNOWN,
+ VNET_HW_INTERFACE_RX_MODE_POLLING,
+ VNET_HW_INTERFACE_RX_MODE_INTERRUPT,
+ VNET_HW_INTERFACE_RX_MODE_ADAPTIVE,
+ VNET_HW_INTERFACE_NUM_RX_MODES,
+} vnet_hw_interface_rx_mode;
+
typedef struct
{
/*
#define VNET_SW_INTERFACE_FLAG_BOND_SLAVE (1 << 4)
+/* Interface does not appear in CLI/API */
+#define VNET_SW_INTERFACE_FLAG_HIDDEN (1 << 5)
+
/* Index for this interface. */
u32 sw_if_index;