From patchwork Mon Sep 18 18:47:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 28872 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 5DE0C199AE; Mon, 18 Sep 2017 20:47:43 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 43D75397D; Mon, 18 Sep 2017 20:47:40 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP; 18 Sep 2017 11:47:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.42,414,1500966000"; d="scan'208"; a="1173391252" Received: from silpixa00372839.ir.intel.com (HELO silpixa00372839.ger.corp.intel.com) ([10.237.222.154]) by orsmga001.jf.intel.com with ESMTP; 18 Sep 2017 11:47:38 -0700 From: Ferruh Yigit To: Pascal Mazon Cc: dev@dpdk.org, Keith Wiles , Ferruh Yigit , Vipin Varghese , stable@dpdk.org Date: Mon, 18 Sep 2017 19:47:34 +0100 Message-Id: <20170918184735.43968-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.13.5 Subject: [dpdk-dev] [PATCH 1/2] net/tap: fix setting speed by argument 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" From: Vipin Varghese tap speed argument is not working without generating any error. This patch sets the configured speed during device start. Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD") Cc: stable@dpdk.org Signed-off-by: Vipin Varghese --- drivers/net/tap/rte_eth_tap.c | 27 +++++++++++++++++++++++++++ drivers/net/tap/rte_eth_tap.h | 2 ++ 2 files changed, 29 insertions(+) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 01cba0fa1..00dad167f 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -545,6 +545,7 @@ tap_ioctl(struct pmd_internals *pmd, unsigned long request, case SIOCGIFHWADDR: case SIOCSIFHWADDR: case SIOCSIFMTU: + case SIOCETHTOOL: break; default: RTE_ASSERT(!"unsupported request type: must not happen"); @@ -585,6 +586,32 @@ static int tap_dev_start(struct rte_eth_dev *dev) { int err; + struct ifreq ifr; + struct ethtool_cmd edata = {0}; + struct pmd_internals *pmd = dev->data->dev_private; + + /*set & get speed to device*/ + edata.speed = pmd_link.link_speed; + edata.cmd = ETHTOOL_SSET; + ifr.ifr_data = (caddr_t)&edata; + if (tap_ioctl(pmd, SIOCETHTOOL, &ifr, 0, LOCAL_ONLY) < 0) { + RTE_LOG(WARNING, PMD, + "Could not set param speed %d for ifindex for %s.\n", + pmd_link.link_speed, + pmd->name); + + /* fetch current speed of created device */ + edata.cmd = ETHTOOL_GSET; + ifr.ifr_data = (caddr_t)&edata; + if (tap_ioctl(pmd, SIOCETHTOOL, &ifr, 0, LOCAL_ONLY) < 0) + return 0; + + pmd_link.link_speed = edata.speed; + RTE_LOG(INFO, PMD, "get speed %d for ifindex for %s.\n", + pmd_link.link_speed, + pmd->name); + } + dev->data->dev_link = pmd_link; err = tap_intr_handle_set(dev, 1); if (err) diff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h index 928a0454e..3e91db4ae 100644 --- a/drivers/net/tap/rte_eth_tap.h +++ b/drivers/net/tap/rte_eth_tap.h @@ -40,6 +40,8 @@ #include #include +#include +#include #include #include