VNET Device Drivers
I: devices
+Y: src/vnet/devices/af_packet/FEATURE.yaml
+Y: src/vnet/devices/netmap/FEATURE.yaml
+Y: src/vnet/devices/pipe/FEATURE.yaml
M: Damjan Marion <damarion@cisco.com>
F: src/vnet/devices/
VNET TAP Drivers
I: tap
+Y: src/vnet/devices/tap/FEATURE.yaml
M: Damjan Marion <damarion@cisco.com>
M: Steven Luong <sluong@cisco.com>
M: Mohsin Kazmi <sykazmi@cisco.com>
F: src/vnet/devices/tap/
VNET Native Virtio Drivers
-I: virtio
-M: Mohsin Kazmi <sykazmi@cisco.com>
-F: src/vnet/devices/virtio/
+I: virtio
+Y: src/vnet/devices/virtio/FEATURE.yaml
+M: Mohsin Kazmi <sykazmi@cisco.com>
+F: src/vnet/devices/virtio/
VNET Etherent
I: ethernet
--- /dev/null
+name: host-interface Device (AF_PACKET)
+maintainer: Damjan Marion <damarion@cisco.com>
+features:
+ - L4 checksum offload
+description: "Create a host interface that will attach to a linux AF_PACKET interface, one side of a veth pair. The veth pair must already exist. Once created, a new host interface will exist in VPP with the name 'host-<ifname>', where '<ifname>' is the name of the specified veth pair. Use the 'show interface' command to display host interface details."
+missing:
+ - API dump details beyond sw_if_index and name
+state: production
+properties: [API, CLI, STATS, MULTITHREAD]
string host_if_name[64];
};
-/** \brief Set l4 offload ckecksum calculation
+/** \brief Set l4 offload checksum calculation
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
--- /dev/null
+name: Netmap Device
+maintainer: Damjan Marion <damarion@cisco.com>
+features:
+ - L4 checksum offload
+description: "Create a netmap interface, which is a high speed user-space interface that allows VPP to patch into a linux namespace, a linux container, or a physical NIC without the use of DPDK."
+missing:
+ - API dump
+state: production
+properties: [API, CLI, STATS, MULTITHREAD]
--- /dev/null
+name: Pipe Device
+maintainer: Damjan Marion <damarion@cisco.com>
+features:
+ - L4 checksum offload
+description: "Create a pipe device interface, which can pass packets bidirectionally in one side of the pipe to the other side of the pipe. While similar in behavior to a unix pipe, it is not a host-based pipe."
+missing:
+ - does not use hw-address
+ - does not support tagged traffic
+ - API dump filtering by sw_if_index
+state: production
+properties: [API, CLI, STATS, MULTITHREAD]
import "vnet/interface_types.api";
-/** \brief Initialize a new pipe interface with the given paramters
+/** \brief Initialize a new pipe interface with the given parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_specified - if non-0, a specific user_instance is being requested
/** \brief Delete pipe interface
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param sw_if_index - interface index of existing pipe interface
+ @param sw_if_index - interface index of existing parent pipe interface
*/
autoreply define pipe_delete
{
* @file
* @brief Pipe Interfaces.
*
- * A pipe interface, like the UNIX pipe, is a pair of interfaces
+ * A pipe interface, like the UNIX pipe, is a pair of vpp interfaces
* that are joined.
*/
const static pipe_t PIPE_INVALID = {
};
/**
- * Various 'module' lavel variables
+ * Various 'module' level variables
*/
typedef struct pipe_main_t_
{
uword *instances;
/**
- * the per-swif-index array of pipes. Each end of the pipe is stored againt
+ * the per-swif-index array of pipes. Each end of the pipe is stored against
* its respective sw_if_index
*/
pipe_t *pipes;
/*
* The pipe rewrite is the same size as an ethernet header (since it
* is an ethernet interface and the DP is optimised for writing
- * sizeof(ethernet_header_t) rewrites. Hwoever, there are no MAC addresses
+ * sizeof(ethernet_header_t) rewrites. However, there are no MAC addresses
* since pipes don't have them.
*/
static u8 *
--- /dev/null
+name: Tap Device
+maintainer: damarion@cisco.com sluong@cisco.com sykazmi@cisco.com
+features:
+ - Virtio
+description: "Create a tap v2 device interface, which connects to a tap interface on the host system."
+missing:
+
+ - API dump filtering by sw_if_index
+state: production
+properties: [API, CLI, STATS, MULTITHREAD]
_IOCTL (vif->tap_fd, TUNSETVNETHDRSZ, &hdrsz);
_IOCTL (vif->fd, VHOST_SET_OWNER, 0);
- /* if namespace is specified, all further netlink messages should be excuted
+ /* if namespace is specified, all further netlink messages should be executed
after we change our net namespace */
if (args->host_namespace)
{
option version = "2.1.0";
-/** \brief Initialize a new tap interface with the given paramters
+/** \brief Initialize a new tap interface with the given parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param id - interface id, 0xffffffff means auto
@param use_random_mac - let the system generate a unique mac address
- @param mac_address - mac addr to assign to the interface if use_radom not set
+ @param mac_address - mac addr to assign to the interface if use_random not set
@param tx_ring_sz - the number of entries of TX ring
@param rx_ring_sz - the number of entries of RX ring
@param host_mac_addr_set - host side interface mac address should be set
@param host_mac_addr - host side interface mac address
@param host_if_name_set - host side interface name should be set
@param host_if_name - host side interface name
- @param host_namespace_set - host namespece should be set
+ @param host_namespace_set - host namespace should be set
@param host_namespace - host namespace to attach interface to
@param host_bridge_set - host bridge should be set
@param host_bridge - host bridge to attach interface to
--- /dev/null
+name: Virtio PCI Device
+maintainer: Mohsin Kazmi <sykazmi@cisco.com>
+features:
+ - connection to the emulated pci interface presented to vpp from the host interface.
+description: "Create a virtio-backed PCI device interface"
+missing:
+ - API dump filtering by sw_if_index
+state: production
+properties: [API, CLI, STATS, MULTITHREAD]
#define VHOST_USER_PROTOCOL_FEATURES ((1ULL << VHOST_USER_PROTOCOL_F_MQ) | \
(1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD))
-/* If multiqueue is provided by host, then we suppport it. */
+/* If multiqueue is provided by host, then we support it. */
#define VIRTIO_NET_CTRL_MQ 4
#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0
#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1
/*
* For small packets (<2kB), we will not need more than one vlib buffer
- * per packet. In case packets are bigger, we will just yeld at some point
+ * per packet. In case packets are bigger, we will just yield at some point
* in the loop and come back later. This is not an issue as for big packet,
* processing cost really comes from the memory copy.
* The assumption is that big packets will fit in 40 buffers.
* retry.
* The idea is that it is better to waste some time on packets
* that have been processed already than dropping them and get
- * more fresh packets with a good likelyhood that they will be dropped too.
+ * more fresh packets with a good likelihood that they will be dropped too.
* This technique also gives more time to VM driver to pick-up packets.
* In case the traffic flows from physical to virtual interfaces, this
* technique will end-up leveraging the physical NIC buffer in order to
option version = "1.0.0";
-/** \brief Initialize a new virtio pci interface with the given paramters
+/** \brief Initialize a new virtio pci interface with the given parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param pci_addr - pci address as unsigned 32bit integer:
0-15 domain, 16-23 bus, 24-28 slot, 29-31 function
@param use_random_mac - let the system generate a unique mac address
- @param mac_address - mac addr to assign to the interface if use_radom not set
+ @param mac_address - mac addr to assign to the interface if use_random not set
@param gso_enabled - enable gso feature if available, 1 to enable
@param features - the virtio features which driver should negotiate with device
*/
_ (VIRTIO_NET_F_CTRL_MAC_ADDR, 23) /* Set MAC address */ \
_ (VIRTIO_F_NOTIFY_ON_EMPTY, 24) \
_ (VHOST_F_LOG_ALL, 26) /* Log all write descriptors */ \
- _ (VIRTIO_F_ANY_LAYOUT, 27) /* Can the device handle any descripor layout */ \
+ _ (VIRTIO_F_ANY_LAYOUT, 27) /* Can the device handle any descriptor layout */ \
_ (VIRTIO_RING_F_INDIRECT_DESC, 28) /* Support indirect buffer descriptors */ \
_ (VIRTIO_RING_F_EVENT_IDX, 29) /* The Guest publishes the used index for which it expects an interrupt \
* at the end of the avail ring. Host should ignore the avail->flags field. */ \