[dpdk-dev] [PATCH 2/2] net/tap: add tun log and documnetation
Vipin Varghese
vipin.varghese at intel.com
Mon Apr 2 23:37:48 CEST 2018
The changes add TUN|TAP specific logs and documentation support.
Signed-off-by: Vipin Varghese <vipin.varghese at intel.com>
---
doc/guides/nics/tap.rst | 15 +++++++++++++--
drivers/net/tap/rte_eth_tap.c | 28 ++++++++++++++++------------
2 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst
index 76eb0bd..c97786a 100644
--- a/doc/guides/nics/tap.rst
+++ b/doc/guides/nics/tap.rst
@@ -1,8 +1,8 @@
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2016 Intel Corporation.
-Tap Poll Mode Driver
-====================
+Tun|Tap Poll Mode Driver
+========================
The ``rte_eth_tap.c`` PMD creates a device using TAP interfaces on the
local host. The PMD allows for DPDK and the host to communicate using a raw
@@ -83,6 +83,17 @@ can utilize that stack to handle the network protocols. Plus you would be able
to address the interface using an IP address assigned to the internal
interface.
+The TUN PMD allows user to create a TUN device on host. The PMD allows user
+to transmit and receive packets via DPDK API calls with L3 header and payload.
+The devices in host can be accessed via ``ifconfig`` or ``ip`` command. TUN
+interfaces are passed to DPDK ``rte_eal_init`` arguments as ``--vdev=net_tunX``,
+where X stands for unique id, example::
+
+ --vdev=net_tun0 --vdev=net_tun1,iface=foo1, ...
+
+Unlike TAP PMD, TUN PMD does not support user arguments as ``MAC`` or ``remote`` user
+options. Default interface name is ``dtunX``, where X stands for unique id.
+
Flow API support
----------------
diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 295db3c..7c6704b 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -121,17 +121,19 @@ enum ioctl_mode {
fd = open(TUN_TAP_DEV_PATH, O_RDWR);
if (fd < 0) {
- RTE_LOG(ERR, PMD, "Unable to create TAP interface\n");
+ RTE_LOG(ERR, PMD, "Unable to create %s interface\n",
+ tuntap_name);
goto error;
}
#ifdef IFF_MULTI_QUEUE
/* Grab the TUN features to verify we can work multi-queue */
if (ioctl(fd, TUNGETFEATURES, &features) < 0) {
- RTE_LOG(ERR, PMD, "TAP unable to get TUN/TAP features\n");
+ RTE_LOG(ERR, PMD, "%s unable to get TUN/TAP features\n",
+ tuntap_name);
goto error;
}
- RTE_LOG(DEBUG, PMD, " TAP Features %08x\n", features);
+ RTE_LOG(DEBUG, PMD, "%s Features %08x\n", tuntap_name, features);
if (features & IFF_MULTI_QUEUE) {
RTE_LOG(DEBUG, PMD, " Multi-queue support for %d queues\n",
@@ -1133,7 +1135,7 @@ enum ioctl_mode {
tmp = &(*tmp)->next;
}
- RTE_LOG(DEBUG, PMD, " RX TAP device name %s, qid %d on fd %d\n",
+ RTE_LOG(DEBUG, PMD, " RX TUNTAP device name %s, qid %d on fd %d\n",
internals->name, rx_queue_id, internals->rxq[rx_queue_id].fd);
return 0;
@@ -1188,7 +1190,7 @@ enum ioctl_mode {
if (ret == -1)
return -1;
RTE_LOG(DEBUG, PMD,
- " TX TAP device name %s, qid %d on fd %d csum %s\n",
+ " TX TUNTAP device name %s, qid %d on fd %d csum %s\n",
internals->name, tx_queue_id, internals->txq[tx_queue_id].fd,
txq->csum ? "on" : "off");
@@ -1371,17 +1373,19 @@ enum ioctl_mode {
struct ifreq ifr;
int i;
- RTE_LOG(DEBUG, PMD, " TAP device on numa %u\n", rte_socket_id());
+ RTE_LOG(DEBUG, PMD, "%s device on numa %u\n",
+ tuntap_name, rte_socket_id());
data = rte_zmalloc_socket(tap_name, sizeof(*data), 0, numa_node);
if (!data) {
- RTE_LOG(ERR, PMD, "TAP Failed to allocate data\n");
+ RTE_LOG(ERR, PMD, "%s Failed to allocate data\n", tuntap_name);
goto error_exit_nodev;
}
dev = rte_eth_vdev_allocate(vdev, sizeof(*pmd));
if (!dev) {
- RTE_LOG(ERR, PMD, "TAP Unable to allocate device struct\n");
+ RTE_LOG(ERR, PMD, "%s Unable to allocate device struct\n",
+ tuntap_name);
goto error_exit_nodev;
}
@@ -1392,8 +1396,8 @@ enum ioctl_mode {
pmd->ioctl_sock = socket(AF_INET, SOCK_DGRAM, 0);
if (pmd->ioctl_sock == -1) {
RTE_LOG(ERR, PMD,
- "TAP Unable to get a socket for management: %s\n",
- strerror(errno));
+ "%s Unable to get a socket for management: %s\n",
+ tuntap_name, strerror(errno));
goto error_exit;
}
@@ -1557,8 +1561,8 @@ enum ioctl_mode {
rte_eth_dev_release_port(dev);
error_exit_nodev:
- RTE_LOG(ERR, PMD, "TAP Unable to initialize %s\n",
- rte_vdev_device_name(vdev));
+ RTE_LOG(ERR, PMD, "%s Unable to initialize %s\n",
+ tuntap_name, rte_vdev_device_name(vdev));
rte_free(data);
return -EINVAL;
--
1.9.1
More information about the dev
mailing list