get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 62849,
    "url": "http://patches.dpdk.org/api/patches/62849/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/d914f3fe6d6b12cabc8efc035417ea6f9fa9058a.1573494112.git.dekelp@mellanox.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": "<d914f3fe6d6b12cabc8efc035417ea6f9fa9058a.1573494112.git.dekelp@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/d914f3fe6d6b12cabc8efc035417ea6f9fa9058a.1573494112.git.dekelp@mellanox.com",
    "date": "2019-11-11T17:47:33",
    "name": "[v7,1/3] ethdev: support API to set max LRO packet size",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "7c8f4af895ff97787805e402c480a3097be410fb",
    "submitter": {
        "id": 1082,
        "url": "http://patches.dpdk.org/api/people/1082/?format=api",
        "name": "Dekel Peled",
        "email": "dekelp@mellanox.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/d914f3fe6d6b12cabc8efc035417ea6f9fa9058a.1573494112.git.dekelp@mellanox.com/mbox/",
    "series": [
        {
            "id": 7392,
            "url": "http://patches.dpdk.org/api/series/7392/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=7392",
            "date": "2019-11-11T17:47:33",
            "name": "support API to set max LRO packet size",
            "version": 7,
            "mbox": "http://patches.dpdk.org/series/7392/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/62849/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/62849/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7F7F8A04AB;\n\tMon, 11 Nov 2019 18:47:55 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 40F20DE3;\n\tMon, 11 Nov 2019 18:47:54 +0100 (CET)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by dpdk.org (Postfix) with ESMTP id CA08BDE3\n for <dev@dpdk.org>; Mon, 11 Nov 2019 18:47:51 +0100 (CET)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n dekelp@mellanox.com)\n with ESMTPS (AES256-SHA encrypted); 11 Nov 2019 19:47:49 +0200",
            "from mtl-vdi-280.wap.labs.mlnx. (mtl-vdi-280.wap.labs.mlnx\n [10.128.130.87])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id xABHlm0W024859;\n Mon, 11 Nov 2019 19:47:49 +0200"
        ],
        "From": "Dekel Peled <dekelp@mellanox.com>",
        "To": "john.mcnamara@intel.com, marko.kovacevic@intel.com, nhorman@tuxdriver.com,\n ajit.khaparde@broadcom.com, somnath.kotur@broadcom.com,\n anatoly.burakov@intel.com, xuanziyang2@huawei.com,\n cloud.wangxiaoyun@huawei.com, zhouguoyang@huawei.com,\n wenzhuo.lu@intel.com, konstantin.ananyev@intel.com, matan@mellanox.com,\n shahafs@mellanox.com, viacheslavo@mellanox.com, rmody@marvell.com,\n shshaikh@marvell.com, maxime.coquelin@redhat.com, tiwei.bie@intel.com,\n zhihong.wang@intel.com, yongwang@vmware.com, thomas@monjalon.net,\n ferruh.yigit@intel.com, arybchenko@solarflare.com,\n jingjing.wu@intel.com, bernard.iremonger@intel.com",
        "Cc": "dev@dpdk.org",
        "Date": "Mon, 11 Nov 2019 19:47:33 +0200",
        "Message-Id": "\n <d914f3fe6d6b12cabc8efc035417ea6f9fa9058a.1573494112.git.dekelp@mellanox.com>",
        "X-Mailer": "git-send-email 1.7.1",
        "In-Reply-To": "<cover.1573494112.git.dekelp@mellanox.com>",
        "References": "<20191108230753.32221-1-thomas@monjalon.net>\n <cover.1573494112.git.dekelp@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH v7 1/3] ethdev: support API to set max LRO packet\n\tsize",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch implements [1], to support API for configuration and\nvalidation of max size for LRO aggregated packet.\nAPI change notice [2] is removed, and release notes for 19.11\nare updated accordingly.\n\n[1] http://patches.dpdk.org/patch/58217/\n[2] http://patches.dpdk.org/patch/57492/\n\nSigned-off-by: Dekel Peled <dekelp@mellanox.com>\nReviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>\nAcked-by: Thomas Monjalon <thomas@monjalon.net>\nAcked-by: Matan Azrad <matan@mellanox.com>\n---\n doc/guides/nics/features.rst           |  2 ++\n doc/guides/rel_notes/deprecation.rst   |  4 ---\n doc/guides/rel_notes/release_19_11.rst |  8 +++++\n lib/librte_ethdev/rte_ethdev.c         | 59 ++++++++++++++++++++++++++++++++++\n lib/librte_ethdev/rte_ethdev.h         |  4 +++\n 5 files changed, 73 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst\nindex 7a31cf7..2138ce3 100644\n--- a/doc/guides/nics/features.rst\n+++ b/doc/guides/nics/features.rst\n@@ -193,10 +193,12 @@ LRO\n Supports Large Receive Offload.\n \n * **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_TCP_LRO``.\n+  ``dev_conf.rxmode.max_lro_pkt_size``.\n * **[implements] datapath**: ``LRO functionality``.\n * **[implements] rte_eth_dev_data**: ``lro``.\n * **[provides]   mbuf**: ``mbuf.ol_flags:PKT_RX_LRO``, ``mbuf.tso_segsz``.\n * **[provides]   rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_TCP_LRO``.\n+* **[provides]   rte_eth_dev_info**: ``max_lro_pkt_size``.\n \n \n .. _nic_features_tso:\ndiff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst\nindex fad208b..dbfb059 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -83,10 +83,6 @@ Deprecation Notices\n   This scheme will allow PMDs to avoid lookup to internal ptype table on Rx and\n   thereby improve Rx performance if application wishes do so.\n \n-* ethdev: New 32-bit fields may be added for maximum LRO session size, in\n-  struct ``rte_eth_dev_info`` for the port capability and in struct\n-  ``rte_eth_rxmode`` for the port configuration.\n-\n * cryptodev: support for using IV with all sizes is added, J0 still can\n   be used but only when IV length in following structs ``rte_crypto_auth_xform``,\n   ``rte_crypto_aead_xform`` is set to zero. When IV length is greater or equal\ndiff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst\nindex da48051..d29acbe 100644\n--- a/doc/guides/rel_notes/release_19_11.rst\n+++ b/doc/guides/rel_notes/release_19_11.rst\n@@ -444,6 +444,14 @@ ABI Changes\n * ipsec: The field ``replay_win_sz`` has been removed from the structure\n   ``rte_ipsec_sa_prm`` as it has been added to the security library.\n \n+* ethdev: Added 32-bit fields for maximum LRO aggregated packet size, in\n+  struct ``rte_eth_dev_info`` for the port capability and in struct\n+  ``rte_eth_rxmode`` for the port configuration.\n+  Application should use the new field in struct ``rte_eth_rxmode`` to configure\n+  the requested size.\n+  PMD should use the new field in struct ``rte_eth_dev_info`` to report the\n+  supported port capability.\n+\n \n Shared Library Versions\n -----------------------\ndiff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c\nindex 652c369..55e0e0d 100644\n--- a/lib/librte_ethdev/rte_ethdev.c\n+++ b/lib/librte_ethdev/rte_ethdev.c\n@@ -1136,6 +1136,33 @@ struct rte_eth_dev *\n \treturn name;\n }\n \n+static inline int\n+check_lro_pkt_size(uint16_t port_id, uint32_t config_size,\n+\t\t   uint32_t max_rx_pkt_len, uint32_t dev_info_size)\n+{\n+\tint ret = 0;\n+\n+\tif (dev_info_size == 0) {\n+\t\tif (config_size != max_rx_pkt_len) {\n+\t\t\tRTE_ETHDEV_LOG(ERR, \"Ethdev port_id=%d max_lro_pkt_size\"\n+\t\t\t\t       \" %u != %u is not allowed\\n\",\n+\t\t\t\t       port_id, config_size, max_rx_pkt_len);\n+\t\t\tret = -EINVAL;\n+\t\t}\n+\t} else if (config_size > dev_info_size) {\n+\t\tRTE_ETHDEV_LOG(ERR, \"Ethdev port_id=%d max_lro_pkt_size %u \"\n+\t\t\t       \"> max allowed value %u\\n\", port_id, config_size,\n+\t\t\t       dev_info_size);\n+\t\tret = -EINVAL;\n+\t} else if (config_size < RTE_ETHER_MIN_LEN) {\n+\t\tRTE_ETHDEV_LOG(ERR, \"Ethdev port_id=%d max_lro_pkt_size %u \"\n+\t\t\t       \"< min allowed value %u\\n\", port_id, config_size,\n+\t\t\t       (unsigned int)RTE_ETHER_MIN_LEN);\n+\t\tret = -EINVAL;\n+\t}\n+\treturn ret;\n+}\n+\n int\n rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,\n \t\t      const struct rte_eth_conf *dev_conf)\n@@ -1266,6 +1293,22 @@ struct rte_eth_dev *\n \t\t\t\t\t\t\tRTE_ETHER_MAX_LEN;\n \t}\n \n+\t/*\n+\t * If LRO is enabled, check that the maximum aggregated packet\n+\t * size is supported by the configured device.\n+\t */\n+\tif (dev_conf->rxmode.offloads & DEV_RX_OFFLOAD_TCP_LRO) {\n+\t\tif (dev_conf->rxmode.max_lro_pkt_size == 0)\n+\t\t\tdev->data->dev_conf.rxmode.max_lro_pkt_size =\n+\t\t\t\tdev->data->dev_conf.rxmode.max_rx_pkt_len;\n+\t\tret = check_lro_pkt_size(port_id,\n+\t\t\t\tdev->data->dev_conf.rxmode.max_lro_pkt_size,\n+\t\t\t\tdev->data->dev_conf.rxmode.max_rx_pkt_len,\n+\t\t\t\tdev_info.max_lro_pkt_size);\n+\t\tif (ret != 0)\n+\t\t\tgoto rollback;\n+\t}\n+\n \t/* Any requested offloading must be within its device capabilities */\n \tif ((dev_conf->rxmode.offloads & dev_info.rx_offload_capa) !=\n \t     dev_conf->rxmode.offloads) {\n@@ -1770,6 +1813,22 @@ struct rte_eth_dev *\n \t\treturn -EINVAL;\n \t}\n \n+\t/*\n+\t * If LRO is enabled, check that the maximum aggregated packet\n+\t * size is supported by the configured device.\n+\t */\n+\tif (local_conf.offloads & DEV_RX_OFFLOAD_TCP_LRO) {\n+\t\tif (dev->data->dev_conf.rxmode.max_lro_pkt_size == 0)\n+\t\t\tdev->data->dev_conf.rxmode.max_lro_pkt_size =\n+\t\t\t\tdev->data->dev_conf.rxmode.max_rx_pkt_len;\n+\t\tint ret = check_lro_pkt_size(port_id,\n+\t\t\t\tdev->data->dev_conf.rxmode.max_lro_pkt_size,\n+\t\t\t\tdev->data->dev_conf.rxmode.max_rx_pkt_len,\n+\t\t\t\tdev_info.max_lro_pkt_size);\n+\t\tif (ret != 0)\n+\t\t\treturn ret;\n+\t}\n+\n \tret = (*dev->dev_ops->rx_queue_setup)(dev, rx_queue_id, nb_rx_desc,\n \t\t\t\t\t      socket_id, &local_conf, mp);\n \tif (!ret) {\ndiff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h\nindex 44d77b3..1b76df5 100644\n--- a/lib/librte_ethdev/rte_ethdev.h\n+++ b/lib/librte_ethdev/rte_ethdev.h\n@@ -395,6 +395,8 @@ struct rte_eth_rxmode {\n \t/** The multi-queue packet distribution mode to be used, e.g. RSS. */\n \tenum rte_eth_rx_mq_mode mq_mode;\n \tuint32_t max_rx_pkt_len;  /**< Only used if JUMBO_FRAME enabled. */\n+\t/** Maximum allowed size of LRO aggregated packet. */\n+\tuint32_t max_lro_pkt_size;\n \tuint16_t split_hdr_size;  /**< hdr buf size (header_split enabled).*/\n \t/**\n \t * Per-port Rx offloads to be set using DEV_RX_OFFLOAD_* flags.\n@@ -1218,6 +1220,8 @@ struct rte_eth_dev_info {\n \tconst uint32_t *dev_flags; /**< Device flags */\n \tuint32_t min_rx_bufsize; /**< Minimum size of RX buffer. */\n \tuint32_t max_rx_pktlen; /**< Maximum configurable length of RX pkt. */\n+\t/** Maximum configurable size of LRO aggregated packet. */\n+\tuint32_t max_lro_pkt_size;\n \tuint16_t max_rx_queues; /**< Maximum number of RX queues. */\n \tuint16_t max_tx_queues; /**< Maximum number of TX queues. */\n \tuint32_t max_mac_addrs; /**< Maximum number of MAC addresses. */\n",
    "prefixes": [
        "v7",
        "1/3"
    ]
}