From patchwork Mon Apr 2 21:37:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Varghese, Vipin" X-Patchwork-Id: 36879 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 033957CDA; Mon, 2 Apr 2018 17:56:06 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 178CA7FC9 for ; Mon, 2 Apr 2018 17:56:03 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Apr 2018 08:56:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,396,1517904000"; d="scan'208";a="38782547" Received: from unknown (HELO localhost.localdomain) ([10.224.122.203]) by FMSMGA003.fm.intel.com with ESMTP; 02 Apr 2018 08:56:02 -0700 From: Vipin Varghese To: dev@dpdk.org, pascal.mazon@6wind.com, ferruh.yigit@intel.com Cc: Vipin Varghese Date: Tue, 3 Apr 2018 03:07:48 +0530 Message-Id: <1522705068-18198-2-git-send-email-vipin.varghese@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1522705068-18198-1-git-send-email-vipin.varghese@intel.com> References: <1519625719-10443-1-git-send-email-vipin.varghese@intel.com> <1522705068-18198-1-git-send-email-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH 2/2] net/tap: add tun log and documnetation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The changes add TUN|TAP specific logs and documentation support. Signed-off-by: Vipin Varghese Acked-by: Pascal Mazon --- 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;