get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 107977,
    "url": "http://patches.dpdk.org/api/patches/107977/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220222160634.24489-2-mk@semihalf.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": "<20220222160634.24489-2-mk@semihalf.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220222160634.24489-2-mk@semihalf.com",
    "date": "2022-02-22T16:06:14",
    "name": "[01/21] net/ena: remove linearization function",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "08e65897315f98f8b9bf9c4a1650c1020119a176",
    "submitter": {
        "id": 786,
        "url": "http://patches.dpdk.org/api/people/786/?format=api",
        "name": "Michal Krawczyk",
        "email": "mk@semihalf.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/20220222160634.24489-2-mk@semihalf.com/mbox/",
    "series": [
        {
            "id": 21796,
            "url": "http://patches.dpdk.org/api/series/21796/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=21796",
            "date": "2022-02-22T16:06:13",
            "name": "net/ena: v2.6.0 driver update",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/21796/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/107977/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/107977/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id AADC3A0352;\n\tTue, 22 Feb 2022 17:06:57 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8B9CB41147;\n\tTue, 22 Feb 2022 17:06:53 +0100 (CET)",
            "from mail-ed1-f45.google.com (mail-ed1-f45.google.com\n [209.85.208.45]) by mails.dpdk.org (Postfix) with ESMTP id 595F940DF4\n for <dev@dpdk.org>; Tue, 22 Feb 2022 17:06:52 +0100 (CET)",
            "by mail-ed1-f45.google.com with SMTP id x5so37985946edd.11\n for <dev@dpdk.org>; Tue, 22 Feb 2022 08:06:52 -0800 (PST)",
            "from DESKTOP-U5LNN3J.localdomain (89-79-181-52.dynamic.chello.pl.\n [89.79.181.52])\n by smtp.gmail.com with ESMTPSA id x6sm10013477edv.109.2022.02.22.08.06.50\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 22 Feb 2022 08:06:51 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=semihalf-com.20210112.gappssmtp.com; s=20210112;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=uE0gGgbjGOCvTbimjYy8T+rOvfXFdNAgY9VNEyHZ80g=;\n b=wglDHkkikWvlWoNSse7uuOOlLQ391xu9vt5LvpKQmDqx+EYXB+mfN8kNi+A2yQkA35\n AVohMXCU9KmTWIX7E6KTUpYw0FM7AorpNXOP5uu7HNtIGeIJVp4emwDXjE9o5X6ky5Rp\n 4ku8PjiDo7MD1hAZNwbwWwZGtNjaYaFPoxMdU8bnIxQ6M2fIR8Qa9Wq4ocE/nxWfpIwi\n ZiilaX/EgLRMaF4A21TAwKL1vPD0Pxii+v8Rr7vmo+2xuTtx/oFKnlIzTB8qUR7jSz+W\n o9rAU7uKvmnBVKt76n+zdZPhA3Bu956lqmbY1WhvV/acyslwNbcyj8MeJBxXa/3rFoS+\n 9HCw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=uE0gGgbjGOCvTbimjYy8T+rOvfXFdNAgY9VNEyHZ80g=;\n b=Qt27PLRwuGqzEz5Hf3PSVnv0uc2IR5K19m0yI7fwoAmL3H+dHBQ/i6FkC0sXKaRAwN\n 1CKFUZO5CmdDketY8WcQg75vgOqPfCHqlYf7VqgEzZYHpawLw9p7p7+Tr1bjOSZtZN0V\n W8moxZCDE5nHgoMePkJHvkl02CKS7aa4eUE5hXNtQ25nl0ThVJNAVK+kdL/uFYPe8LxC\n IjZVZahR9rtt7c2/jyocz2cK3X3xHEiq67wNekQfUM8viN/EFx3EgtzPcnt87Jc4GHli\n 6IMSBEbJix7+YOirwRhw8g93HkKwyIdJ6KZ54ZTa+1x2tCextsoZTBVLotda53/gjLXX\n HrAw==",
        "X-Gm-Message-State": "AOAM531kxmTXyMnfP2rG3e9r0ibx5c+CWHxOQ402otqxifziDlGQ4jGw\n mVydeEw5PNWX0fD9oNOe9oCKSAE74W+BTA==",
        "X-Google-Smtp-Source": "\n ABdhPJzMyxc+TTvKsl/3MllvJdW2O8ldRpJUBXRSF75F0B+VrrzCXZMJjQVbMMhmXqHNvH/AR4sNrQ==",
        "X-Received": "by 2002:aa7:cf15:0:b0:410:d26b:c8d5 with SMTP id\n a21-20020aa7cf15000000b00410d26bc8d5mr27267833edy.134.1645546011781;\n Tue, 22 Feb 2022 08:06:51 -0800 (PST)",
        "From": "Michal Krawczyk <mk@semihalf.com>",
        "To": "dev@dpdk.org",
        "Cc": "shaibran@amazon.com, upstream@semihalf.com,\n Michal Krawczyk <mk@semihalf.com>, Artur Rojek <ar@semihalf.com>,\n Dawid Gorecki <dgr@semihalf.com>, Igor Chauskin <igorch@semihalf.com>",
        "Subject": "[PATCH 01/21] net/ena: remove linearization function",
        "Date": "Tue, 22 Feb 2022 17:06:14 +0100",
        "Message-Id": "<20220222160634.24489-2-mk@semihalf.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220222160634.24489-1-mk@semihalf.com>",
        "References": "<20220222160634.24489-1-mk@semihalf.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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"
    },
    "content": "The linearization of the mbuf isn't common practice for the PMD, as it\ncan expose it's capabilities to the upper layer using\nrte_eth_dev_info_get().\n\nMoreover, the rte_eth_tx_prepare() function should also verify if the\nnumber of segments inside the mbuf isn't too high.\n\nBecause of those 2 circumstances, it may be safer to avoid modifying\nmbuf on PMD's Tx side and remove linearization at all. Instead, add\nverification of the number of segments to the eth_ena_prep_pkts().\n\nSigned-off-by: Michal Krawczyk <mk@semihalf.com>\nReviewed-by: Artur Rojek <ar@semihalf.com>\nReviewed-by: Dawid Gorecki <dgr@semihalf.com>\nReviewed-by: Igor Chauskin <igorch@semihalf.com>\nReviewed-by: Shai Brandes <shaibran@amazon.com>\n\n---\n drivers/net/ena/ena_ethdev.c | 74 +++++++++---------------------------\n drivers/net/ena/ena_ethdev.h |  2 -\n 2 files changed, 19 insertions(+), 57 deletions(-)",
    "diff": "diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex db2b5ec8e7..deaee30664 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -93,8 +93,6 @@ static const struct ena_stats ena_stats_tx_strings[] = {\n \tENA_STAT_TX_ENTRY(cnt),\n \tENA_STAT_TX_ENTRY(bytes),\n \tENA_STAT_TX_ENTRY(prepare_ctx_err),\n-\tENA_STAT_TX_ENTRY(linearize),\n-\tENA_STAT_TX_ENTRY(linearize_failed),\n \tENA_STAT_TX_ENTRY(tx_poll),\n \tENA_STAT_TX_ENTRY(doorbells),\n \tENA_STAT_TX_ENTRY(bad_req_id),\n@@ -2408,6 +2406,17 @@ eth_ena_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n \t\t\treturn i;\n \t\t}\n \n+\t\tif (unlikely(m->nb_segs >= tx_ring->sgl_size &&\n+\t\t    !(tx_ring->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV &&\n+\t\t      m->nb_segs == tx_ring->sgl_size &&\n+\t\t      m->data_len < tx_ring->tx_max_header_size))) {\n+\t\t\tPMD_TX_LOG(DEBUG,\n+\t\t\t\t\"mbuf[%\" PRIu32 \"] has too many segments: %\" PRIu16 \"\\n\",\n+\t\t\t\ti, m->nb_segs);\n+\t\t\trte_errno = EINVAL;\n+\t\t\treturn i;\n+\t\t}\n+\n #ifdef RTE_LIBRTE_ETHDEV_DEBUG\n \t\t/* Check if requested offload is also enabled for the queue */\n \t\tif ((ol_flags & RTE_MBUF_F_TX_IP_CKSUM &&\n@@ -2554,56 +2563,6 @@ static void ena_update_hints(struct ena_adapter *adapter,\n \t}\n }\n \n-static int ena_check_space_and_linearize_mbuf(struct ena_ring *tx_ring,\n-\t\t\t\t\t      struct rte_mbuf *mbuf)\n-{\n-\tstruct ena_com_dev *ena_dev;\n-\tint num_segments, header_len, rc;\n-\n-\tena_dev = &tx_ring->adapter->ena_dev;\n-\tnum_segments = mbuf->nb_segs;\n-\theader_len = mbuf->data_len;\n-\n-\tif (likely(num_segments < tx_ring->sgl_size))\n-\t\tgoto checkspace;\n-\n-\tif (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV &&\n-\t    (num_segments == tx_ring->sgl_size) &&\n-\t    (header_len < tx_ring->tx_max_header_size))\n-\t\tgoto checkspace;\n-\n-\t/* Checking for space for 2 additional metadata descriptors due to\n-\t * possible header split and metadata descriptor. Linearization will\n-\t * be needed so we reduce the segments number from num_segments to 1\n-\t */\n-\tif (!ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq, 3)) {\n-\t\tPMD_TX_LOG(DEBUG, \"Not enough space in the Tx queue\\n\");\n-\t\treturn ENA_COM_NO_MEM;\n-\t}\n-\t++tx_ring->tx_stats.linearize;\n-\trc = rte_pktmbuf_linearize(mbuf);\n-\tif (unlikely(rc)) {\n-\t\tPMD_TX_LOG(WARNING, \"Mbuf linearize failed\\n\");\n-\t\trte_atomic64_inc(&tx_ring->adapter->drv_stats->ierrors);\n-\t\t++tx_ring->tx_stats.linearize_failed;\n-\t\treturn rc;\n-\t}\n-\n-\treturn 0;\n-\n-checkspace:\n-\t/* Checking for space for 2 additional metadata descriptors due to\n-\t * possible header split and metadata descriptor\n-\t */\n-\tif (!ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq,\n-\t\t\t\t\t  num_segments + 2)) {\n-\t\tPMD_TX_LOG(DEBUG, \"Not enough space in the Tx queue\\n\");\n-\t\treturn ENA_COM_NO_MEM;\n-\t}\n-\n-\treturn 0;\n-}\n-\n static void ena_tx_map_mbuf(struct ena_ring *tx_ring,\n \tstruct ena_tx_buffer *tx_info,\n \tstruct rte_mbuf *mbuf,\n@@ -2688,9 +2647,14 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf)\n \tint nb_hw_desc;\n \tint rc;\n \n-\trc = ena_check_space_and_linearize_mbuf(tx_ring, mbuf);\n-\tif (unlikely(rc))\n-\t\treturn rc;\n+\t/* Checking for space for 2 additional metadata descriptors due to\n+\t * possible header split and metadata descriptor\n+\t */\n+\tif (!ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq,\n+\t\t\t\t\t  mbuf->nb_segs + 2)) {\n+\t\tPMD_DRV_LOG(DEBUG, \"Not enough space in the tx queue\\n\");\n+\t\treturn ENA_COM_NO_MEM;\n+\t}\n \n \tnext_to_use = tx_ring->next_to_use;\n \ndiff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h\nindex f99e4f3984..f47ba3fb02 100644\n--- a/drivers/net/ena/ena_ethdev.h\n+++ b/drivers/net/ena/ena_ethdev.h\n@@ -103,8 +103,6 @@ struct ena_stats_tx {\n \tu64 cnt;\n \tu64 bytes;\n \tu64 prepare_ctx_err;\n-\tu64 linearize;\n-\tu64 linearize_failed;\n \tu64 tx_poll;\n \tu64 doorbells;\n \tu64 bad_req_id;\n",
    "prefixes": [
        "01/21"
    ]
}