From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 2F94B2C49 for ; Thu, 9 Mar 2017 15:18:16 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP; 09 Mar 2017 06:18:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,268,1486454400"; d="scan'208";a="1120467094" Received: from mbrown1-mobl1.amr.corp.intel.com (HELO [10.254.191.168]) ([10.254.191.168]) by fmsmga001.fm.intel.com with ESMTP; 09 Mar 2017 06:18:14 -0800 To: Pascal Mazon , keith.wiles@intel.com References: <1488904298-31395-3-git-send-email-pascal.mazon@6wind.com> Cc: dev@dpdk.org From: Ferruh Yigit Message-ID: <1c44b4be-943a-2911-f91b-f61ebf0eb258@intel.com> Date: Thu, 9 Mar 2017 14:18:13 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <1488904298-31395-3-git-send-email-pascal.mazon@6wind.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v3 2/6] net/tap: add speed capabilities 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: Thu, 09 Mar 2017 14:18:17 -0000 On 3/7/2017 4:31 PM, Pascal Mazon wrote: > Tap PMD is flexible, it supports any speed. > > Signed-off-by: Pascal Mazon > --- > doc/guides/nics/features/tap.ini | 1 + > drivers/net/tap/rte_eth_tap.c | 35 +++++++++++++++++++++++++++++++++++ > 2 files changed, 36 insertions(+) > > diff --git a/doc/guides/nics/features/tap.ini b/doc/guides/nics/features/tap.ini > index d9b47a003654..dad5a0561087 100644 > --- a/doc/guides/nics/features/tap.ini > +++ b/doc/guides/nics/features/tap.ini > @@ -9,6 +9,7 @@ Jumbo frame = Y > Promiscuous mode = Y > Allmulticast mode = Y > Basic stats = Y > +Speed capabilities = Y > Unicast MAC filter = Y > Other kdrv = Y > ARMv7 = Y > diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c > index 1e46ee36efa2..ef525a3f0826 100644 > --- a/drivers/net/tap/rte_eth_tap.c > +++ b/drivers/net/tap/rte_eth_tap.c > @@ -351,6 +351,40 @@ tap_dev_configure(struct rte_eth_dev *dev __rte_unused) > return 0; > } > > +static uint32_t > +tap_dev_speed_capa(void) > +{ > + uint32_t speed = pmd_link.link_speed; link_speed is already hardcoded into PMD, so there is nothing to detect here. Would it be different if PMD directly return pmd_link.link_speed? > + uint32_t capa = 0; > + > + if (speed >= ETH_SPEED_NUM_10M) > + capa |= ETH_LINK_SPEED_10M; > + if (speed >= ETH_SPEED_NUM_100M) > + capa |= ETH_LINK_SPEED_100M; > + if (speed >= ETH_SPEED_NUM_1G) > + capa |= ETH_LINK_SPEED_1G; > + if (speed >= ETH_SPEED_NUM_5G) > + capa |= ETH_LINK_SPEED_2_5G; > + if (speed >= ETH_SPEED_NUM_5G) > + capa |= ETH_LINK_SPEED_5G; > + if (speed >= ETH_SPEED_NUM_10G) > + capa |= ETH_LINK_SPEED_10G; > + if (speed >= ETH_SPEED_NUM_20G) > + capa |= ETH_LINK_SPEED_20G; > + if (speed >= ETH_SPEED_NUM_25G) > + capa |= ETH_LINK_SPEED_25G; > + if (speed >= ETH_SPEED_NUM_40G) > + capa |= ETH_LINK_SPEED_40G; > + if (speed >= ETH_SPEED_NUM_50G) > + capa |= ETH_LINK_SPEED_50G; > + if (speed >= ETH_SPEED_NUM_56G) > + capa |= ETH_LINK_SPEED_56G; > + if (speed >= ETH_SPEED_NUM_100G) > + capa |= ETH_LINK_SPEED_100G; I would prefer switch here [1], but functionally both are same, it is your call. [1] switch (speed) { case ETH_SPEED_NUM_100G: capa |= ETH_LINK_SPEED_100G /* fallthrough */ case ETH_SPEED_NUM_56G: capa |= ETH_LINK_SPEED_56G /* fallthrough */ ... }; > + > + return capa; > +} > + > static void > tap_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) > { > @@ -363,6 +397,7 @@ tap_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) > dev_info->max_tx_queues = internals->nb_queues; > dev_info->min_rx_bufsize = 0; > dev_info->pci_dev = NULL; > + dev_info->speed_capa = tap_dev_speed_capa(); > } > > static void >