get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/11737/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 11737,
    "url": "http://patches.dpdk.org/api/patches/11737/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1458934950-23333-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": "<1458934950-23333-6-git-send-email-thomas.monjalon@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1458934950-23333-6-git-send-email-thomas.monjalon@6wind.com",
    "date": "2016-03-25T19:42:27",
    "name": "[dpdk-dev,v12,5/8] ethdev: add speed capabilities",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "a4945574f87bccef4952b6646294f7d529c19f69",
    "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/1458934950-23333-6-git-send-email-thomas.monjalon@6wind.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/11737/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/11737/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 945295952;\n\tFri, 25 Mar 2016 20:44:50 +0100 (CET)",
            "from mail-wm0-f50.google.com (mail-wm0-f50.google.com\n\t[74.125.82.50]) by dpdk.org (Postfix) with ESMTP id 7A4D15908\n\tfor <dev@dpdk.org>; Fri, 25 Mar 2016 20:44:42 +0100 (CET)",
            "by mail-wm0-f50.google.com with SMTP id p65so35243224wmp.1\n\tfor <dev@dpdk.org>; Fri, 25 Mar 2016 12:44:42 -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\tu4sm13240660wjz.4.2016.03.25.12.44.40\n\t(version=TLSv1/SSLv3 cipher=OTHER);\n\tFri, 25 Mar 2016 12:44:41 -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=kVty0s3/s/l9VRJKMouQ5eMhVSm2giHRghYmjvdyhz4=;\n\tb=HcJwu5f4Jml9NvbukODDuB/CZ79Hes1XAqKTp/9PozL8c8YAtwaeJgSFFZ3p0fc9BC\n\tTyeKmhJTU/Pe/7hnF3nDg//Z6pMAdZpWLTzsKmWTJn1P/MwHxMuzaeDXr1hB8n1Mnpd1\n\tiP5iraJeDli4QHneMrW7/UXkv3HKlp1Ao6ktWQTyHZXlDvnnG/F5cGYq3nU2dhIy9ag+\n\tLy22X9Y4YzUq8mPwKsU2aqkNpQg9tE5S70I2Qg2I+UTtbH1+FmokkIdASqqurmKd96vb\n\tZA9adghC5Gj2wDZv64ghwURfIa6E6H8jWb0z7tvXVC39f1vJj2v9Un1MQxxbfcgvBa3X\n\tg/3g==",
        "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=kVty0s3/s/l9VRJKMouQ5eMhVSm2giHRghYmjvdyhz4=;\n\tb=P+NFHUsXmhFdxsZytwp0wHBs4BL03dILlER9NLXhblBDQ5lhYQ5JzZ+GQqfNYEPGbR\n\tPfK9vCm1xXFlK1Sil8bbFO8L4eXVyRYL/Ll3V8Dfx9mB15YDTEUhcahBFE3LuZmkGOPH\n\tt/WgBPFEQi+svT+kW6fTZs2Y/BntHMfqytV1OTffI07iOCUf5u0MAPlWYqgJpCmbt350\n\tmCYy25AUv+NsDvhwNMf+7LTiH1Ff8Yk7x4rcncx3xf8dJpAqgoohDoKpRYjIyBJl4GS2\n\tBBB+ZcIlNBeotdoZaWwprld2G/JXkmQVKw8skJ3KR4IvC2K3a1dRa+xi0EmmU2Y2dsgx\n\tECcQ==",
        "X-Gm-Message-State": "AD7BkJKNjQTivkHNtsLfEafv2dgyI3td+v5HyLk5Z8r+e5cJQnHCHFs3gFwtV/GYuPlaoqf1",
        "X-Received": "by 10.194.123.131 with SMTP id\n\tma3mr16649128wjb.107.1458935082336; \n\tFri, 25 Mar 2016 12:44:42 -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": "Fri, 25 Mar 2016 20:42:27 +0100",
        "Message-Id": "<1458934950-23333-6-git-send-email-thomas.monjalon@6wind.com>",
        "X-Mailer": "git-send-email 2.7.0",
        "In-Reply-To": "<1458934950-23333-1-git-send-email-thomas.monjalon@6wind.com>",
        "References": "<1458238145-7496-1-git-send-email-thomas.monjalon@6wind.com>\n\t<1458934950-23333-1-git-send-email-thomas.monjalon@6wind.com>",
        "Subject": "[dpdk-dev] [PATCH v12 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/ena/ena_ethdev.c           |  9 +++++++++\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                |  6 ++++++\n drivers/net/mlx5/mlx5_ethdev.c         |  8 ++++++++\n drivers/net/nfp/nfp_net.c              |  2 ++\n lib/librte_ether/rte_ethdev.h          | 21 +++++++++++++++++++++\n 14 files changed, 85 insertions(+)",
    "diff": "diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst\nindex 542479a..62f1868 100644\n--- a/doc/guides/nics/overview.rst\n+++ b/doc/guides/nics/overview.rst\n@@ -86,6 +86,7 @@ Most of these differences are summarized below.\n                                           e   e       e   e   e                     e\n                                           c   c       c   c   c                     c\n    ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\n+   speed capabilities\n    link status                  X       X X                                   X X\n    link status event                    X X                                     X\n    queue status event                                                           X\ndiff --git a/doc/guides/rel_notes/release_16_04.rst b/doc/guides/rel_notes/release_16_04.rst\nindex 79d76e1..9e7b0b7 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 * **Added new poll-mode driver for Amazon Elastic Network Adapters (ENA).**\n \n   The driver operates variety of ENA adapters through feature negotiation\n@@ -456,6 +461,9 @@ This section should contain API changes. Sample format:\n   All drivers are now counting the missed packets only once, i.e. drivers will\n   not increment ierrors anymore for missed packets.\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 a3c6c01..897081f 100644\n--- a/drivers/net/bnx2x/bnx2x_ethdev.c\n+++ b/drivers/net/bnx2x/bnx2x_ethdev.c\n@@ -327,6 +327,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 8845c76..bb134e5 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 473d77f..d5f8c7f 100644\n--- a/drivers/net/e1000/em_ethdev.c\n+++ b/drivers/net/e1000/em_ethdev.c\n@@ -1054,6 +1054,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 86f25f6..95d1711 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -1921,6 +1921,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 const uint32_t *\ndiff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex 1046286..4e403af 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -1170,6 +1170,15 @@ static void ena_infos_get(struct rte_eth_dev *dev,\n \tena_dev = &adapter->ena_dev;\n \tena_assert_msg(ena_dev != NULL, \"Uninitialized device\");\n \n+\tdev_info->speed_capa =\n+\t\t\tETH_LINK_SPEED_1G   |\n+\t\t\tETH_LINK_SPEED_2_5G |\n+\t\t\tETH_LINK_SPEED_5G   |\n+\t\t\tETH_LINK_SPEED_10G  |\n+\t\t\tETH_LINK_SPEED_25G  |\n+\t\t\tETH_LINK_SPEED_40G  |\n+\t\t\tETH_LINK_SPEED_50G;\n+\n \t/* Get supported features from HW */\n \trc = ena_com_get_dev_attr_feat(ena_dev, &feat);\n \tif (unlikely(rc)) {\ndiff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c\nindex 53aa1bb..85ad0df 100644\n--- a/drivers/net/fm10k/fm10k_ethdev.c\n+++ b/drivers/net/fm10k/fm10k_ethdev.c\n@@ -1410,6 +1410,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 #ifdef RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE\ndiff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex cce9e6f..dce31db 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -2287,6 +2287,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@@ -2358,6 +2359,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 a0179d2..a98e8eb 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -2960,6 +2960,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 const uint32_t *\ndiff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c\nindex f946f08..59ac423 100644\n--- a/drivers/net/mlx4/mlx4.c\n+++ b/drivers/net/mlx4/mlx4.c\n@@ -4313,6 +4313,12 @@ 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 =\n+\t\t\tETH_LINK_SPEED_1G |\n+\t\t\tETH_LINK_SPEED_10G |\n+\t\t\tETH_LINK_SPEED_20G |\n+\t\t\tETH_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 58bfa16..d7a0eea 100644\n--- a/drivers/net/mlx5/mlx5_ethdev.c\n+++ b/drivers/net/mlx5/mlx5_ethdev.c\n@@ -559,6 +559,14 @@ 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 =\n+\t\t\tETH_LINK_SPEED_1G |\n+\t\t\tETH_LINK_SPEED_10G |\n+\t\t\tETH_LINK_SPEED_20G |\n+\t\t\tETH_LINK_SPEED_25G |\n+\t\t\tETH_LINK_SPEED_40G |\n+\t\t\tETH_LINK_SPEED_50G |\n+\t\t\tETH_LINK_SPEED_56G;\n \tpriv_unlock(priv);\n }\n \ndiff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c\nindex 18ea0f4..bdeb21f 100644\n--- a/drivers/net/nfp/nfp_net.c\n+++ b/drivers/net/nfp/nfp_net.c\n@@ -1061,6 +1061,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 const uint32_t *\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex bc7d607..49fdcb7 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",
        "v12",
        "5/8"
    ]
}