From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f44.google.com (mail-oi0-f44.google.com [209.85.218.44]) by dpdk.org (Postfix) with ESMTP id B6459374F for ; Tue, 29 Mar 2016 15:31:38 +0200 (CEST) Received: by mail-oi0-f44.google.com with SMTP id h6so21576763oia.2 for ; Tue, 29 Mar 2016 06:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=Ujb+YoDF5a8GsO5aCZCX0FLHX3zz24OV1I1FQxWmaiM=; b=qdAUlF4mU271BPC3G3bv08t9mvhii6a3/qljn4zrJWFXQsZki7IYxhqlJIOvyLd3JA 6WC/wkXiTcNKkzlFUcLgq8eCHBzashBzCuPieErjIGfJAPAs3W5AtpPrpBs/XI2+bx6q gXVOUe6emTBQBEFYpMjUSCbnhjhwtTm5Hj2jr9rcS+YDp7W+FMPgY4ITakaNvO8aEVau kELapINn7kqoYGwl8dp8EZ9l6XxmslzImFNUoLHBLOo3eJtm/xnFgjITtlZ0s1ZEliYo fzLHvQbBBwxVfYfhM2daFWU5UVFXZkRjVb4Ag8yDZo0SCii72FuNefu0QHxdIl/AhQHy wixA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=Ujb+YoDF5a8GsO5aCZCX0FLHX3zz24OV1I1FQxWmaiM=; b=AVAHAiCwSopjsohqOTval0L5sd/d93sLGZ1EI75HKo7s5CvB2uVTyah12QZ2EZyrHM 1shmjKSa/mUZKQSPR9gJv1hHZ3msp8LfvkU96Nx/+pqUDDUdHCmQo5hs5VNNCAeUBMQm LYeGxeHIruCfPesHa86QX6fAiHQIR01Kp4/2p9hyrdHUN9sztojO7zN+kE/3JpA0lsfZ qXYZN/hj3zSn1diDTWA7qxNN1Nn/m2V1/L/qUmis8KpI6POqz8xX7+XrWBJLv9OtUhAF ZyE6oBT/AyCUWn+3Z1b2AlWiXEOoqwF9GxcNmali+Lcnmx0vkgtpl9uVeWVqDHHGkjUH 2Dhw== X-Gm-Message-State: AD7BkJIiWF66zdQLy+wa2cPNokdz+SdPIOQPyZ8MVD6rpbfncZIZy+h1n/JR2fhVc+62/bvb1RusdwfMPw5BYeBU MIME-Version: 1.0 X-Received: by 10.157.52.166 with SMTP id g35mr1060938otc.128.1459258297156; Tue, 29 Mar 2016 06:31:37 -0700 (PDT) Received: by 10.76.28.6 with HTTP; Tue, 29 Mar 2016 06:31:37 -0700 (PDT) In-Reply-To: <1458955640-22951-6-git-send-email-marcdevel@gmail.com> References: <1458934950-23333-1-git-send-email-thomas.monjalon@6wind.com> <1458955640-22951-1-git-send-email-marcdevel@gmail.com> <1458955640-22951-6-git-send-email-marcdevel@gmail.com> Date: Tue, 29 Mar 2016 14:31:37 +0100 Message-ID: From: Alejandro Lucero To: Marc Sune Cc: Thomas Monjalon , "Xu, Qian Q" , "Xing, Beilei" , "dev@dpdk.org" , "Ananyev, Konstantin" , "Lu, Wenzhuo" , "Richardson, Bruce" , "Glynn, Michael J" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v13 5/8] ethdev: add speed capabilities X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Mar 2016 13:31:39 -0000 For nfp.c, speed_capa should be ETH_LINK_SPEED_40G instead of ETH_LINK_SPEED_50G. By the way, the change in patch 4 sets the right link speed using the new constants. Regards On Sat, Mar 26, 2016 at 1:27 AM, Marc Sune wrote: > The speed capabilities of a device can be retrieved with > rte_eth_dev_info_get(). > > The new field speed_capa is initialized in the drivers without > taking care of device characteristics in this patch. > When the capabilities of a driver are accurate, the table in > overview.rst must be filled. > > Signed-off-by: Marc Sune > --- > doc/guides/nics/overview.rst | 1 + > doc/guides/rel_notes/release_16_04.rst | 8 ++++++++ > drivers/net/bnx2x/bnx2x_ethdev.c | 1 + > drivers/net/cxgbe/cxgbe_ethdev.c | 1 + > drivers/net/e1000/em_ethdev.c | 4 ++++ > drivers/net/e1000/igb_ethdev.c | 4 ++++ > drivers/net/ena/ena_ethdev.c | 9 +++++++++ > drivers/net/fm10k/fm10k_ethdev.c | 4 ++++ > drivers/net/i40e/i40e_ethdev.c | 8 ++++++++ > drivers/net/ixgbe/ixgbe_ethdev.c | 8 ++++++++ > drivers/net/mlx4/mlx4.c | 6 ++++++ > drivers/net/mlx5/mlx5_ethdev.c | 8 ++++++++ > drivers/net/nfp/nfp_net.c | 2 ++ > lib/librte_ether/rte_ethdev.h | 21 +++++++++++++++++++++ > 14 files changed, 85 insertions(+) > > diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst > index 542479a..62f1868 100644 > --- a/doc/guides/nics/overview.rst > +++ b/doc/guides/nics/overview.rst > @@ -86,6 +86,7 @@ Most of these differences are summarized below. > e e e e e > e > c c c c c > c > ==================== = = = = = = = = = = = = = = = = = = = = = = = = = > = = = = = = = = > + speed capabilities > link status X X X > X X > link status event X X > X > queue status event > X > diff --git a/doc/guides/rel_notes/release_16_04.rst > b/doc/guides/rel_notes/release_16_04.rst > index 79d76e1..9e7b0b7 100644 > --- a/doc/guides/rel_notes/release_16_04.rst > +++ b/doc/guides/rel_notes/release_16_04.rst > @@ -47,6 +47,11 @@ This section should contain new features added in this > release. Sample format: > A new function ``rte_pktmbuf_alloc_bulk()`` has been added to allow the > user > to allocate a bulk of mbufs. > > +* **Added device link speed capabilities.** > + > + The structure ``rte_eth_dev_info`` has now a ``speed_capa`` bitmap, > which > + allows the application to know the supported speeds of each device. > + > * **Added new poll-mode driver for Amazon Elastic Network Adapters > (ENA).** > > The driver operates variety of ENA adapters through feature negotiation > @@ -456,6 +461,9 @@ This section should contain API changes. Sample format: > All drivers are now counting the missed packets only once, i.e. drivers > will > not increment ierrors anymore for missed packets. > > +* The ethdev structure ``rte_eth_dev_info`` was changed to support device > + speed capabilities. > + > * The functions ``rte_eth_dev_udp_tunnel_add`` and > ``rte_eth_dev_udp_tunnel_delete`` > have been renamed into ``rte_eth_dev_udp_tunnel_port_add`` and > ``rte_eth_dev_udp_tunnel_port_delete``. > diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c > b/drivers/net/bnx2x/bnx2x_ethdev.c > index a3c6c01..897081f 100644 > --- a/drivers/net/bnx2x/bnx2x_ethdev.c > +++ b/drivers/net/bnx2x/bnx2x_ethdev.c > @@ -327,6 +327,7 @@ bnx2x_dev_infos_get(struct rte_eth_dev *dev, > __rte_unused struct rte_eth_dev_inf > dev_info->min_rx_bufsize = BNX2X_MIN_RX_BUF_SIZE; > dev_info->max_rx_pktlen = BNX2X_MAX_RX_PKT_LEN; > dev_info->max_mac_addrs = BNX2X_MAX_MAC_ADDRS; > + dev_info->speed_capa = ETH_LINK_SPEED_10G | ETH_LINK_SPEED_20G; > } > > static void > diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c > b/drivers/net/cxgbe/cxgbe_ethdev.c > index 8845c76..bb134e5 100644 > --- a/drivers/net/cxgbe/cxgbe_ethdev.c > +++ b/drivers/net/cxgbe/cxgbe_ethdev.c > @@ -171,6 +171,7 @@ static void cxgbe_dev_info_get(struct rte_eth_dev > *eth_dev, > > device_info->rx_desc_lim = cxgbe_desc_lim; > device_info->tx_desc_lim = cxgbe_desc_lim; > + device_info->speed_capa = ETH_LINK_SPEED_10G | ETH_LINK_SPEED_40G; > } > > static void cxgbe_dev_promiscuous_enable(struct rte_eth_dev *eth_dev) > diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c > index 473d77f..d5f8c7f 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -1054,6 +1054,10 @@ eth_em_infos_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > .nb_min = E1000_MIN_RING_DESC, > .nb_align = EM_TXD_ALIGN, > }; > + > + dev_info->speed_capa = ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M | > + ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M | > + ETH_LINK_SPEED_1G; > } > > /* return 0 means link status changed, -1 means not changed */ > diff --git a/drivers/net/e1000/igb_ethdev.c > b/drivers/net/e1000/igb_ethdev.c > index 86f25f6..95d1711 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -1921,6 +1921,10 @@ eth_igb_infos_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > > dev_info->rx_desc_lim = rx_desc_lim; > dev_info->tx_desc_lim = tx_desc_lim; > + > + dev_info->speed_capa = ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M | > + ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M | > + ETH_LINK_SPEED_1G; > } > > static const uint32_t * > diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c > index 1046286..4e403af 100644 > --- a/drivers/net/ena/ena_ethdev.c > +++ b/drivers/net/ena/ena_ethdev.c > @@ -1170,6 +1170,15 @@ static void ena_infos_get(struct rte_eth_dev *dev, > ena_dev = &adapter->ena_dev; > ena_assert_msg(ena_dev != NULL, "Uninitialized device"); > > + dev_info->speed_capa = > + ETH_LINK_SPEED_1G | > + ETH_LINK_SPEED_2_5G | > + ETH_LINK_SPEED_5G | > + ETH_LINK_SPEED_10G | > + ETH_LINK_SPEED_25G | > + ETH_LINK_SPEED_40G | > + ETH_LINK_SPEED_50G; > + > /* Get supported features from HW */ > rc = ena_com_get_dev_attr_feat(ena_dev, &feat); > if (unlikely(rc)) { > diff --git a/drivers/net/fm10k/fm10k_ethdev.c > b/drivers/net/fm10k/fm10k_ethdev.c > index 53aa1bb..85ad0df 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -1410,6 +1410,10 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev, > .nb_min = FM10K_MIN_TX_DESC, > .nb_align = FM10K_MULT_TX_DESC, > }; > + > + dev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_2_5G | > + ETH_LINK_SPEED_10G | ETH_LINK_SPEED_25G | > + ETH_LINK_SPEED_40G; > } > > #ifdef RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE > diff --git a/drivers/net/i40e/i40e_ethdev.c > b/drivers/net/i40e/i40e_ethdev.c > index cce9e6f..dce31db 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -2287,6 +2287,7 @@ static void > i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info > *dev_info) > { > struct i40e_pf *pf = > I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); > + struct i40e_hw *hw = > I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); > struct i40e_vsi *vsi = pf->main_vsi; > > dev_info->max_rx_queues = vsi->nb_qps; > @@ -2358,6 +2359,13 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > dev_info->max_rx_queues += dev_info->vmdq_queue_num; > dev_info->max_tx_queues += dev_info->vmdq_queue_num; > } > + > + if (i40e_is_40G_device(hw->device_id)) > + /* For XL710 */ > + dev_info->speed_capa = ETH_LINK_SPEED_1G | > ETH_LINK_SPEED_10G; > + else > + /* For X710 */ > + dev_info->speed_capa = ETH_LINK_SPEED_10G | > ETH_LINK_SPEED_40G; > } > > static int > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index a0179d2..a98e8eb 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -2960,6 +2960,14 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > dev_info->hash_key_size = IXGBE_HKEY_MAX_INDEX * sizeof(uint32_t); > dev_info->reta_size = ixgbe_reta_size_get(hw->mac.type); > dev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL; > + > + dev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G; > + if (hw->mac.type == ixgbe_mac_X540 || > + hw->mac.type == ixgbe_mac_X540_vf || > + hw->mac.type == ixgbe_mac_X550 || > + hw->mac.type == ixgbe_mac_X550_vf) { > + dev_info->speed_capa |= ETH_LINK_SPEED_100M; > + } > } > > static const uint32_t * > diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c > index f946f08..59ac423 100644 > --- a/drivers/net/mlx4/mlx4.c > +++ b/drivers/net/mlx4/mlx4.c > @@ -4313,6 +4313,12 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *info) > 0); > if (priv_get_ifname(priv, &ifname) == 0) > info->if_index = if_nametoindex(ifname); > + info->speed_capa = > + ETH_LINK_SPEED_1G | > + ETH_LINK_SPEED_10G | > + ETH_LINK_SPEED_20G | > + ETH_LINK_SPEED_40G | > + ETH_LINK_SPEED_56G; > priv_unlock(priv); > } > > diff --git a/drivers/net/mlx5/mlx5_ethdev.c > b/drivers/net/mlx5/mlx5_ethdev.c > index 58bfa16..d7a0eea 100644 > --- a/drivers/net/mlx5/mlx5_ethdev.c > +++ b/drivers/net/mlx5/mlx5_ethdev.c > @@ -559,6 +559,14 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *info) > * size if it is not fixed. > * The API should be updated to solve this problem. */ > info->reta_size = priv->ind_table_max_size; > + info->speed_capa = > + ETH_LINK_SPEED_1G | > + ETH_LINK_SPEED_10G | > + ETH_LINK_SPEED_20G | > + ETH_LINK_SPEED_25G | > + ETH_LINK_SPEED_40G | > + ETH_LINK_SPEED_50G | > + ETH_LINK_SPEED_56G; > priv_unlock(priv); > } > > diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c > index 18ea0f4..bdeb21f 100644 > --- a/drivers/net/nfp/nfp_net.c > +++ b/drivers/net/nfp/nfp_net.c > @@ -1061,6 +1061,8 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct > rte_eth_dev_info *dev_info) > > dev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ; > dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ; > + > + dev_info->speed_capa = ETH_LINK_SPEED_50G; > } > > static const uint32_t * > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > index bc7d607..49fdcb7 100644 > --- a/lib/librte_ether/rte_ethdev.h > +++ b/lib/librte_ether/rte_ethdev.h > @@ -242,6 +242,23 @@ struct rte_eth_stats { > }; > > /** > + * Device supported speeds bitmap flags > + */ > +#define ETH_LINK_SPEED_10M_HD (1 << 1) /**< 10 Mbps half-duplex */ > +#define ETH_LINK_SPEED_10M (1 << 2) /**< 10 Mbps full-duplex */ > +#define ETH_LINK_SPEED_100M_HD (1 << 3) /**< 100 Mbps half-duplex */ > +#define ETH_LINK_SPEED_100M (1 << 4) /**< 100 Mbps full-duplex */ > +#define ETH_LINK_SPEED_1G (1 << 5) /**< 1 Gbps */ > +#define ETH_LINK_SPEED_2_5G (1 << 6) /**< 2.5 Gbps */ > +#define ETH_LINK_SPEED_5G (1 << 7) /**< 5 Gbps */ > +#define ETH_LINK_SPEED_10G (1 << 8) /**< 10 Gbps */ > +#define ETH_LINK_SPEED_20G (1 << 9) /**< 20 Gbps */ > +#define ETH_LINK_SPEED_25G (1 << 10) /**< 25 Gbps */ > +#define ETH_LINK_SPEED_40G (1 << 11) /**< 40 Gbps */ > +#define ETH_LINK_SPEED_50G (1 << 12) /**< 50 Gbps */ > +#define ETH_LINK_SPEED_56G (1 << 13) /**< 56 Gbps */ > + > +/** > * Ethernet numeric link speeds in Mbps > */ > #define ETH_LINK_SPEED_AUTONEG 0 /**< Auto-negotiate link speed. */ > @@ -850,6 +867,9 @@ struct rte_eth_conf { > #define DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM 0x00000080 /**< Used for > tunneling packet. */ > #define DEV_TX_OFFLOAD_QINQ_INSERT 0x00000100 > > +/** > + * Ethernet device information > + */ > struct rte_eth_dev_info { > struct rte_pci_device *pci_dev; /**< Device PCI information. */ > const char *driver_name; /**< Device Driver name. */ > @@ -878,6 +898,7 @@ struct rte_eth_dev_info { > uint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */ > struct rte_eth_desc_lim rx_desc_lim; /**< RX descriptors limits */ > struct rte_eth_desc_lim tx_desc_lim; /**< TX descriptors limits */ > + uint32_t speed_capa; /**< Supported speeds bitmap > (ETH_LINK_SPEED_). */ > }; > > /** > -- > 2.1.4 > >