From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id D2B601CC0F for ; Sat, 12 May 2018 08:37:32 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 May 2018 23:37:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,391,1520924400"; d="scan'208";a="223634990" Received: from unknown (HELO saesrv02-S2600CWR.intel.com) ([10.224.122.203]) by orsmga005.jf.intel.com with ESMTP; 11 May 2018 23:37:29 -0700 From: Vipin Varghese To: ferruh.yigit@intel.com, pascal.mazon@6wind.com, zhihong.wang@intel.com, dev@dpdk.org Cc: Vipin Varghese Date: Sat, 12 May 2018 12:07:35 +0530 Message-Id: <1526107055-26637-1-git-send-email-vipin.varghese@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH] net/tap: fix the vdev data sharing for tun 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: , X-List-Received-Date: Sat, 12 May 2018 06:37:33 -0000 Fixes: ee27edbe0c10 ("drivers/net: share vdev data to secondary process") Enables TUN PMD sharing by attaching the port from the shared data. Cc: zhihong.wang@intel.com Cc: ferruh.yigit@intel.com Signed-off-by: Vipin Varghese --- --- drivers/net/tap/rte_eth_tap.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index db397d6..ea6d899 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1657,6 +1657,7 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) struct rte_kvargs *kvlist = NULL; char tun_name[RTE_ETH_NAME_MAX_LEN]; char remote_iface[RTE_ETH_NAME_MAX_LEN]; + struct rte_eth_dev *eth_dev; tap_type = 0; strcpy(tuntap_name, "TUN"); @@ -1665,6 +1666,18 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) params = rte_vdev_device_args(dev); memset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN); + if (rte_eal_process_type() == RTE_PROC_SECONDARY && + strlen(params) == 0) { + eth_dev = rte_eth_dev_attach_secondary(name); + if (!eth_dev) { + TAP_LOG(ERR, "Failed to probe %s", name); + return -1; + } + /* TODO: request info from primary to set up Rx and Tx */ + eth_dev->dev_ops = &ops; + return 0; + } + snprintf(tun_name, sizeof(tun_name), "%s%u", DEFAULT_TUN_NAME, tun_unit++); -- 2.7.4