Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/11510/?format=api
http://patches.dpdk.org/api/patches/11510/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1457992546-32230-6-git-send-email-thomas.monjalon@6wind.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1457992546-32230-6-git-send-email-thomas.monjalon@6wind.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1457992546-32230-6-git-send-email-thomas.monjalon@6wind.com", "date": "2016-03-14T21:55:43", "name": "[dpdk-dev,v10,5/8] ethdev: add speed capabilities", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "949686b8e05d1f14cace56c118abe04eda45e2e1", "submitter": { "id": 1, "url": "http://patches.dpdk.org/api/people/1/?format=api", "name": "Thomas Monjalon", "email": "thomas.monjalon@6wind.com" }, "delegate": { "id": 1, "url": "http://patches.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/1457992546-32230-6-git-send-email-thomas.monjalon@6wind.com/mbox/", "series": [], "comments": "http://patches.dpdk.org/api/patches/11510/comments/", "check": "pending", "checks": "http://patches.dpdk.org/api/patches/11510/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id F37935590;\n\tMon, 14 Mar 2016 22:57:35 +0100 (CET)", "from mail-wm0-f53.google.com (mail-wm0-f53.google.com\n\t[74.125.82.53]) by dpdk.org (Postfix) with ESMTP id 0F9A25590\n\tfor <dev@dpdk.org>; Mon, 14 Mar 2016 22:57:28 +0100 (CET)", "by mail-wm0-f53.google.com with SMTP id p65so1796778wmp.0\n\tfor <dev@dpdk.org>; Mon, 14 Mar 2016 14:57:28 -0700 (PDT)", "from XPS13.localdomain (91.111.75.86.rev.sfr.net. [86.75.111.91])\n\tby smtp.gmail.com with ESMTPSA id\n\tw133sm17918804wmd.3.2016.03.14.14.57.25\n\t(version=TLSv1/SSLv3 cipher=OTHER);\n\tMon, 14 Mar 2016 14:57:27 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=JlLHOnKSIFgEfFNgQ1bVzZrfjEY8D8TpRJtpdIshSmY=;\n\tb=d6o3pZ0U+gsfhcgbmJwuDvTmF0Gnh7BioQcrq0Sq860TjdA7ipBXfsgqZ9OgJfmSRF\n\tIjE/++qM6+lnI49M9TVG+J7izXg+oLZhGtMyX7O+IBp63Jpjl1RbTBQ44czvsCq7BeVu\n\taoKEtu24aMI07hqCFTDrwvLNTRVHtapU/H/+IfQx4TnX9DK0/UfxfQ5BBPHKJZLfugCx\n\tkmJgD9KYRAQSoy6eY2NMV6F1P/XGLSK35oNwavpof2gvT1Jk7yNhFH/WOe1vH9kyvwDI\n\tRvg+mHIP+kO/bIRSx2mMZ7HKUZ1l8VoFRwGZPyHlRTi4MgNQPyZIq7kEti+iMgeN+dPf\n\tmKcA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=JlLHOnKSIFgEfFNgQ1bVzZrfjEY8D8TpRJtpdIshSmY=;\n\tb=lgLuKHemkWieWKkCWfdVH//+FJf/t2VazR0kBzpzF6Zfm9Jm9+PUra7nKbNbfZPtYw\n\tVv/BsGvoXNF5bSSOnDVxRies7yvaCkwNmQGcamR7iquipZPRYUIjv+V+DokTX7/+eiZs\n\tR8Yjv5gWBNUtfemofCQUAhqCBZY9tbR9A7vLL29OEryJo9dI/+3DbVQpe5I5Y/zIRjro\n\trO1IWczhkhXL+j25iLLYNUfg5/aXgJCnI6R9evLkwF3KL53+eVAt1/jyzPd41OG+F3fb\n\tEU53tTE4MIWbGBM6NyaPqrTQBnSjEZFwsGYGY9U+EZfDHZEyG8uMuqNj7KTB+uamMcXI\n\tGIEg==", "X-Gm-Message-State": "AD7BkJK04lCypg54zVDGYa9MaMNpb7CeYIyiNedxovhwM/DHM0Y/OCDh1oNPSHHYeBugXmCp", "X-Received": "by 10.28.179.84 with SMTP id c81mr19866282wmf.13.1457992647923; \n\tMon, 14 Mar 2016 14:57:27 -0700 (PDT)", "From": "Thomas Monjalon <thomas.monjalon@6wind.com>", "To": "marcdevel@gmail.com, bruce.richardson@intel.com, declan.doherty@intel.com,\n\tkonstantin.ananyev@intel.com, wenzhuo.lu@intel.com,\n\thelin.zhang@intel.com, jing.d.chen@intel.com, harish.patil@qlogic.com,\n\trahul.lakkireddy@chelsio.com, johndale@cisco.com, vido@cesnet.cz,\n\tadrien.mazarguil@6wind.com, alejandro.lucero@netronome.com", "Cc": "dev@dpdk.org", "Date": "Mon, 14 Mar 2016 22:55:43 +0100", "Message-Id": "<1457992546-32230-6-git-send-email-thomas.monjalon@6wind.com>", "X-Mailer": "git-send-email 2.7.0", "In-Reply-To": "<1457992546-32230-1-git-send-email-thomas.monjalon@6wind.com>", "References": "<1456793151-1475-1-git-send-email-marcdevel@gmail.com>\n\t<1457992546-32230-1-git-send-email-thomas.monjalon@6wind.com>", "Subject": "[dpdk-dev] [PATCH v10 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 <dev.dpdk.org>", "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "From: Marc Sune <marcdevel@gmail.com>\n\nThe speed capabilities of a device can be retrieved with\nrte_eth_dev_info_get().\n\nThe new field speed_capa is initialized in the drivers without\ntaking care of device characteristics in this patch.\nWhen the capabilities of a driver are accurate, the table in\noverview.rst must be filled.\n\nSigned-off-by: Marc Sune <marcdevel@gmail.com>\n---\n doc/guides/nics/overview.rst | 1 +\n doc/guides/rel_notes/release_16_04.rst | 8 ++++++++\n drivers/net/bnx2x/bnx2x_ethdev.c | 1 +\n drivers/net/cxgbe/cxgbe_ethdev.c | 1 +\n drivers/net/e1000/em_ethdev.c | 4 ++++\n drivers/net/e1000/igb_ethdev.c | 4 ++++\n drivers/net/fm10k/fm10k_ethdev.c | 4 ++++\n drivers/net/i40e/i40e_ethdev.c | 8 ++++++++\n drivers/net/ixgbe/ixgbe_ethdev.c | 8 ++++++++\n drivers/net/mlx4/mlx4.c | 2 ++\n drivers/net/mlx5/mlx5_ethdev.c | 3 +++\n drivers/net/nfp/nfp_net.c | 2 ++\n lib/librte_ether/rte_ethdev.h | 21 +++++++++++++++++++++\n 13 files changed, 67 insertions(+)", "diff": "diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst\nindex 2d4f014..893da5f 100644\n--- a/doc/guides/nics/overview.rst\n+++ b/doc/guides/nics/overview.rst\n@@ -88,6 +88,7 @@ Most of these differences are summarized below.\n ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\n link status X X X X\n link status event X X\n+ speed capabilities\n Rx interrupt X X X X\n queue start/stop X X X X X X\n MTU update X\ndiff --git a/doc/guides/rel_notes/release_16_04.rst b/doc/guides/rel_notes/release_16_04.rst\nindex b729b67..fd24a6f 100644\n--- a/doc/guides/rel_notes/release_16_04.rst\n+++ b/doc/guides/rel_notes/release_16_04.rst\n@@ -47,6 +47,11 @@ This section should contain new features added in this release. Sample format:\n A new function ``rte_pktmbuf_alloc_bulk()`` has been added to allow the user\n to allocate a bulk of mbufs.\n \n+* **Added device link speed capabilities.**\n+\n+ The structure ``rte_eth_dev_info`` has now a ``speed_capa`` bitmap, which\n+ allows the application to know the supported speeds of each device.\n+\n * **Virtio 1.0.**\n \n Enabled virtio 1.0 support for virtio pmd driver.\n@@ -208,6 +213,9 @@ This section should contain API changes. Sample format:\n * Add a short 1-2 sentence description of the API change. Use fixed width\n quotes for ``rte_function_names`` or ``rte_struct_names``. Use the past tense.\n \n+* The ethdev structure ``rte_eth_dev_info`` was changed to support device\n+ speed capabilities.\n+\n * The functions ``rte_eth_dev_udp_tunnel_add`` and ``rte_eth_dev_udp_tunnel_delete``\n have been renamed into ``rte_eth_dev_udp_tunnel_port_add`` and\n ``rte_eth_dev_udp_tunnel_port_delete``.\ndiff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c\nindex f109900..b86784e 100644\n--- a/drivers/net/bnx2x/bnx2x_ethdev.c\n+++ b/drivers/net/bnx2x/bnx2x_ethdev.c\n@@ -347,6 +347,7 @@ bnx2x_dev_infos_get(struct rte_eth_dev *dev, __rte_unused struct rte_eth_dev_inf\n \tdev_info->min_rx_bufsize = BNX2X_MIN_RX_BUF_SIZE;\n \tdev_info->max_rx_pktlen = BNX2X_MAX_RX_PKT_LEN;\n \tdev_info->max_mac_addrs = BNX2X_MAX_MAC_ADDRS;\n+\tdev_info->speed_capa = ETH_LINK_SPEED_10G | ETH_LINK_SPEED_20G;\n }\n \n static void\ndiff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c\nindex 97ef152..05b954d 100644\n--- a/drivers/net/cxgbe/cxgbe_ethdev.c\n+++ b/drivers/net/cxgbe/cxgbe_ethdev.c\n@@ -171,6 +171,7 @@ static void cxgbe_dev_info_get(struct rte_eth_dev *eth_dev,\n \n \tdevice_info->rx_desc_lim = cxgbe_desc_lim;\n \tdevice_info->tx_desc_lim = cxgbe_desc_lim;\n+\tdevice_info->speed_capa = ETH_LINK_SPEED_10G | ETH_LINK_SPEED_40G;\n }\n \n static void cxgbe_dev_promiscuous_enable(struct rte_eth_dev *eth_dev)\ndiff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c\nindex 84845e7..dddffff 100644\n--- a/drivers/net/e1000/em_ethdev.c\n+++ b/drivers/net/e1000/em_ethdev.c\n@@ -1023,6 +1023,10 @@ eth_em_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \t\t.nb_min = E1000_MIN_RING_DESC,\n \t\t.nb_align = EM_TXD_ALIGN,\n \t};\n+\n+\tdev_info->speed_capa = ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M |\n+\t\t\tETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M |\n+\t\t\tETH_LINK_SPEED_1G;\n }\n \n /* return 0 means link status changed, -1 means not changed */\ndiff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex b4c8982..743fe1b 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -1910,6 +1910,10 @@ eth_igb_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \n \tdev_info->rx_desc_lim = rx_desc_lim;\n \tdev_info->tx_desc_lim = tx_desc_lim;\n+\n+\tdev_info->speed_capa = ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M |\n+\t\t\tETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M |\n+\t\t\tETH_LINK_SPEED_1G;\n }\n \n static void\ndiff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c\nindex 378faf2..4d8c6bf 100644\n--- a/drivers/net/fm10k/fm10k_ethdev.c\n+++ b/drivers/net/fm10k/fm10k_ethdev.c\n@@ -1333,6 +1333,10 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev,\n \t\t.nb_min = FM10K_MIN_TX_DESC,\n \t\t.nb_align = FM10K_MULT_TX_DESC,\n \t};\n+\n+\tdev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_2_5G |\n+\t\t\tETH_LINK_SPEED_10G | ETH_LINK_SPEED_25G |\n+\t\t\tETH_LINK_SPEED_40G;\n }\n \n static int\ndiff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 17b58a8..3b2a4ae 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -2265,6 +2265,7 @@ static void\n i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n {\n \tstruct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);\n+\tstruct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n \tstruct i40e_vsi *vsi = pf->main_vsi;\n \n \tdev_info->max_rx_queues = vsi->nb_qps;\n@@ -2336,6 +2337,13 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \t\tdev_info->max_rx_queues += dev_info->vmdq_queue_num;\n \t\tdev_info->max_tx_queues += dev_info->vmdq_queue_num;\n \t}\n+\n+\tif (i40e_is_40G_device(hw->device_id))\n+\t\t/* For XL710 */\n+\t\tdev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G;\n+\telse\n+\t\t/* For X710 */\n+\t\tdev_info->speed_capa = ETH_LINK_SPEED_10G | ETH_LINK_SPEED_40G;\n }\n \n static int\ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex 1fa17b5..1c108a0 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -2891,6 +2891,14 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \tdev_info->hash_key_size = IXGBE_HKEY_MAX_INDEX * sizeof(uint32_t);\n \tdev_info->reta_size = ixgbe_reta_size_get(hw->mac.type);\n \tdev_info->flow_type_rss_offloads = IXGBE_RSS_OFFLOAD_ALL;\n+\n+\tdev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G;\n+\tif (hw->mac.type == ixgbe_mac_X540 ||\n+\t hw->mac.type == ixgbe_mac_X540_vf ||\n+\t hw->mac.type == ixgbe_mac_X550 ||\n+\t hw->mac.type == ixgbe_mac_X550_vf) {\n+\t\tdev_info->speed_capa |= ETH_LINK_SPEED_100M;\n+\t}\n }\n \n static void\ndiff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c\nindex f41817b..7397cbf 100644\n--- a/drivers/net/mlx4/mlx4.c\n+++ b/drivers/net/mlx4/mlx4.c\n@@ -4264,6 +4264,8 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)\n \t\t 0);\n \tif (priv_get_ifname(priv, &ifname) == 0)\n \t\tinfo->if_index = if_nametoindex(ifname);\n+\tinfo->speed_capa = ETH_LINK_SPEED_10G | ETH_LINK_SPEED_40G |\n+\t\t\tETH_LINK_SPEED_56G;\n \tpriv_unlock(priv);\n }\n \ndiff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c\nindex 1159fa3..7494f69 100644\n--- a/drivers/net/mlx5/mlx5_ethdev.c\n+++ b/drivers/net/mlx5/mlx5_ethdev.c\n@@ -523,6 +523,9 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)\n \t * size if it is not fixed.\n \t * The API should be updated to solve this problem. */\n \tinfo->reta_size = priv->ind_table_max_size;\n+\tinfo->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G |\n+\t\t\tETH_LINK_SPEED_25G | ETH_LINK_SPEED_40G |\n+\t\t\tETH_LINK_SPEED_50G;\n \tpriv_unlock(priv);\n }\n \ndiff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c\nindex 059b554..be1a364 100644\n--- a/drivers/net/nfp/nfp_net.c\n+++ b/drivers/net/nfp/nfp_net.c\n@@ -1071,6 +1071,8 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \n \tdev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ;\n \tdev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ;\n+\n+\tdev_info->speed_capa = ETH_LINK_SPEED_50G;\n }\n \n static uint32_t\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex b68e017..017e24b 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -242,6 +242,23 @@ struct rte_eth_stats {\n };\n \n /**\n+ * Device supported speeds bitmap flags\n+ */\n+#define ETH_LINK_SPEED_10M_HD (1 << 1) /**< 10 Mbps half-duplex */\n+#define ETH_LINK_SPEED_10M (1 << 2) /**< 10 Mbps full-duplex */\n+#define ETH_LINK_SPEED_100M_HD (1 << 3) /**< 100 Mbps half-duplex */\n+#define ETH_LINK_SPEED_100M (1 << 4) /**< 100 Mbps full-duplex */\n+#define ETH_LINK_SPEED_1G (1 << 5) /**< 1 Gbps */\n+#define ETH_LINK_SPEED_2_5G (1 << 6) /**< 2.5 Gbps */\n+#define ETH_LINK_SPEED_5G (1 << 7) /**< 5 Gbps */\n+#define ETH_LINK_SPEED_10G (1 << 8) /**< 10 Gbps */\n+#define ETH_LINK_SPEED_20G (1 << 9) /**< 20 Gbps */\n+#define ETH_LINK_SPEED_25G (1 << 10) /**< 25 Gbps */\n+#define ETH_LINK_SPEED_40G (1 << 11) /**< 40 Gbps */\n+#define ETH_LINK_SPEED_50G (1 << 12) /**< 50 Gbps */\n+#define ETH_LINK_SPEED_56G (1 << 13) /**< 56 Gbps */\n+\n+/**\n * Ethernet numeric link speeds in Mbps\n */\n #define ETH_LINK_SPEED_AUTONEG 0 /**< Auto-negotiate link speed. */\n@@ -850,6 +867,9 @@ struct rte_eth_conf {\n #define DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM 0x00000080 /**< Used for tunneling packet. */\n #define DEV_TX_OFFLOAD_QINQ_INSERT 0x00000100\n \n+/**\n+ * Ethernet device information\n+ */\n struct rte_eth_dev_info {\n \tstruct rte_pci_device *pci_dev; /**< Device PCI information. */\n \tconst char *driver_name; /**< Device Driver name. */\n@@ -878,6 +898,7 @@ struct rte_eth_dev_info {\n \tuint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */\n \tstruct rte_eth_desc_lim rx_desc_lim; /**< RX descriptors limits */\n \tstruct rte_eth_desc_lim tx_desc_lim; /**< TX descriptors limits */\n+\tuint32_t speed_capa; /**< Supported speeds bitmap (ETH_LINK_SPEED_). */\n };\n \n /**\n", "prefixes": [ "dpdk-dev", "v10", "5/8" ] }{ "id": 11510, "url": "