get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 56853,
    "url": "https://patches.dpdk.org/api/patches/56853/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1563786795-14027-27-git-send-email-matan@mellanox.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1563786795-14027-27-git-send-email-matan@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1563786795-14027-27-git-send-email-matan@mellanox.com",
    "date": "2019-07-22T09:13:13",
    "name": "[26/28] net/mlx5: zero the LRO mbuf headroom",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "39e4677f4d6baa1aa1645bdb91dd15c27fcbc19f",
    "submitter": {
        "id": 796,
        "url": "https://patches.dpdk.org/api/people/796/?format=api",
        "name": "Matan Azrad",
        "email": "matan@mellanox.com"
    },
    "delegate": {
        "id": 3268,
        "url": "https://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1563786795-14027-27-git-send-email-matan@mellanox.com/mbox/",
    "series": [
        {
            "id": 5639,
            "url": "https://patches.dpdk.org/api/series/5639/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=5639",
            "date": "2019-07-22T09:12:48",
            "name": "net/mlx5: support LRO",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/5639/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/56853/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/56853/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id B99F81BE9F;\n\tMon, 22 Jul 2019 11:14:32 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n\tby dpdk.org (Postfix) with ESMTP id 629821BDF0\n\tfor <dev@dpdk.org>; Mon, 22 Jul 2019 11:13:31 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE2 (envelope-from\n\tmatan@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 22 Jul 2019 12:13:24 +0300",
            "from pegasus07.mtr.labs.mlnx (pegasus07.mtr.labs.mlnx\n\t[10.210.16.112])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x6M9DMjp010084;\n\tMon, 22 Jul 2019 12:13:24 +0300"
        ],
        "From": "Matan Azrad <matan@mellanox.com>",
        "To": "Shahaf Shuler <shahafs@mellanox.com>, Yongseok Koh <yskoh@mellanox.com>, \n\tViacheslav Ovsiienko <viacheslavo@mellanox.com>",
        "Cc": "dev@dpdk.org, Dekel Peled <dekelp@mellanox.com>",
        "Date": "Mon, 22 Jul 2019 09:13:13 +0000",
        "Message-Id": "<1563786795-14027-27-git-send-email-matan@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1563786795-14027-1-git-send-email-matan@mellanox.com>",
        "References": "<1563786795-14027-1-git-send-email-matan@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH 26/28] net/mlx5: zero the LRO mbuf headroom",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "LRO packet may consume all the stride memory, hence the PMD cannot\nguaranty head-room for the LRO mbuf.\n\nThe issue is lack in HW support to write the packet in offset from the\nstride start.\n\nA new striding RQ feature may be added in CX6 DX to allow head-room and\ntail-room for the LRO strides.\n\nSigned-off-by: Matan Azrad <matan@mellanox.com>\n---\n drivers/net/mlx5/mlx5_rxq.c  | 16 +++++++++++-----\n drivers/net/mlx5/mlx5_rxtx.c |  6 ++++--\n drivers/net/mlx5/mlx5_rxtx.h |  3 ++-\n 3 files changed, 17 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c\nindex 344ff90..7c252e3 100644\n--- a/drivers/net/mlx5/mlx5_rxq.c\n+++ b/drivers/net/mlx5/mlx5_rxq.c\n@@ -1569,6 +1569,12 @@ struct mlx5_rxq_ctrl *\n \tunsigned int mprq_stride_size;\n \tstruct mlx5_dev_config *config = &priv->config;\n \t/*\n+\t * LRO packet may consume all the stride memory, hence we cannot\n+\t * guaranty head-room. A new striding RQ feature may be added in CX6 DX\n+\t * to allow head-room and tail-room for the LRO packets.\n+\t */\n+\tunsigned int strd_headroom_en = mlx5_lro_on(dev) ? 0 : 1;\n+\t/*\n \t * Always allocate extra slots, even if eventually\n \t * the vector Rx will not be used.\n \t */\n@@ -1603,9 +1609,9 @@ struct mlx5_rxq_ctrl *\n \t *    stride.\n \t *  Otherwise, enable Rx scatter if necessary.\n \t */\n-\tassert(mb_len >= RTE_PKTMBUF_HEADROOM);\n+\tassert(mb_len >= RTE_PKTMBUF_HEADROOM * strd_headroom_en);\n \tmprq_stride_size = dev->data->dev_conf.rxmode.max_rx_pkt_len +\n-\t\t\t\tRTE_PKTMBUF_HEADROOM;\n+\t\t\t\tRTE_PKTMBUF_HEADROOM * strd_headroom_en;\n \tif (mprq_en &&\n \t    desc > (1U << config->mprq.stride_num_n) &&\n \t    mprq_stride_size <= (1U << config->mprq.max_stride_size_n)) {\n@@ -1617,9 +1623,9 @@ struct mlx5_rxq_ctrl *\n \t\ttmpl->rxq.strd_sz_n = RTE_MAX(log2above(mprq_stride_size),\n \t\t\t\t\t      config->mprq.min_stride_size_n);\n \t\ttmpl->rxq.strd_shift_en = MLX5_MPRQ_TWO_BYTE_SHIFT;\n-\t\ttmpl->rxq.mprq_max_memcpy_len =\n-\t\t\tRTE_MIN(mb_len - RTE_PKTMBUF_HEADROOM,\n-\t\t\t\tconfig->mprq.max_memcpy_len);\n+\t\ttmpl->rxq.strd_headroom_en = strd_headroom_en;\n+\t\ttmpl->rxq.mprq_max_memcpy_len = RTE_MIN(mb_len -\n+\t\t\t    RTE_PKTMBUF_HEADROOM, config->mprq.max_memcpy_len);\n \t\tDRV_LOG(DEBUG,\n \t\t\t\"port %u Rx queue %u: Multi-Packet RQ is enabled\"\n \t\t\t\" strd_num_n = %u, strd_sz_n = %u\",\ndiff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c\nindex c7487ac..3872966 100644\n--- a/drivers/net/mlx5/mlx5_rxtx.c\n+++ b/drivers/net/mlx5/mlx5_rxtx.c\n@@ -1540,6 +1540,7 @@ enum mlx5_txcmp_code {\n \tunsigned int i = 0;\n \tuint32_t rq_ci = rxq->rq_ci;\n \tuint16_t consumed_strd = rxq->consumed_strd;\n+\tuint16_t headroom_sz = rxq->strd_headroom_en * RTE_PKTMBUF_HEADROOM;\n \tstruct mlx5_mprq_buf *buf = (*rxq->mprq_bufs)[rq_ci & wq_mask];\n \n \twhile (i < pkts_n) {\n@@ -1650,7 +1651,7 @@ enum mlx5_txcmp_code {\n \t\t\trte_atomic16_add_return(&buf->refcnt, 1);\n \t\t\tassert((uint16_t)rte_atomic16_read(&buf->refcnt) <=\n \t\t\t       strd_n + 1);\n-\t\t\tbuf_addr = RTE_PTR_SUB(addr, RTE_PKTMBUF_HEADROOM);\n+\t\t\tbuf_addr = RTE_PTR_SUB(addr, headroom_sz);\n \t\t\t/*\n \t\t\t * MLX5 device doesn't use iova but it is necessary in a\n \t\t\t * case where the Rx packet is transmitted via a\n@@ -1668,7 +1669,8 @@ enum mlx5_txcmp_code {\n \t\t\t */\n \t\t\trte_pktmbuf_attach_extbuf(pkt, buf_addr, buf_iova,\n \t\t\t\t\t\t  buf_len, shinfo);\n-\t\t\trte_pktmbuf_reset_headroom(pkt);\n+\t\t\t/* Set mbuf head-room. */\n+\t\t\tpkt->data_off = headroom_sz;\n \t\t\tassert(pkt->ol_flags == EXT_ATTACHED_MBUF);\n \t\t\t/*\n \t\t\t * Prevent potential overflow due to MTU change through\ndiff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h\nindex bbd9b31..4252832 100644\n--- a/drivers/net/mlx5/mlx5_rxtx.h\n+++ b/drivers/net/mlx5/mlx5_rxtx.h\n@@ -114,7 +114,8 @@ struct mlx5_rxq_data {\n \tunsigned int strd_sz_n:4; /* Log 2 of stride size. */\n \tunsigned int strd_shift_en:1; /* Enable 2bytes shift on a stride. */\n \tunsigned int err_state:2; /* enum mlx5_rxq_err_state. */\n-\tunsigned int :4; /* Remaining bits. */\n+\tunsigned int strd_headroom_en:1; /* Enable mbuf headroom in MPRQ. */\n+\tunsigned int :3; /* Remaining bits. */\n \tvolatile uint32_t *rq_db;\n \tvolatile uint32_t *cq_db;\n \tuint16_t port_id;\n",
    "prefixes": [
        "26/28"
    ]
}