get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 87356,
    "url": "https://patches.dpdk.org/api/patches/87356/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210126183226.2420903-6-mk@semihalf.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": "<20210126183226.2420903-6-mk@semihalf.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210126183226.2420903-6-mk@semihalf.com",
    "date": "2021-01-26T18:32:26",
    "name": "[v2,5/5] net/ena: prevent double doorbell",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "84dd2ead226007253958828016e97ff111aa527b",
    "submitter": {
        "id": 786,
        "url": "https://patches.dpdk.org/api/people/786/?format=api",
        "name": "Michal Krawczyk",
        "email": "mk@semihalf.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210126183226.2420903-6-mk@semihalf.com/mbox/",
    "series": [
        {
            "id": 14960,
            "url": "https://patches.dpdk.org/api/series/14960/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=14960",
            "date": "2021-01-26T18:32:21",
            "name": "net/ena: minor bug fixes and improvements",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/14960/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/87356/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/87356/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 C4764A052A;\n\tTue, 26 Jan 2021 19:33:32 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 53E0E140F6F;\n\tTue, 26 Jan 2021 19:33:06 +0100 (CET)",
            "from mail-lj1-f178.google.com (mail-lj1-f178.google.com\n [209.85.208.178])\n by mails.dpdk.org (Postfix) with ESMTP id 01463140F5C\n for <dev@dpdk.org>; Tue, 26 Jan 2021 19:33:02 +0100 (CET)",
            "by mail-lj1-f178.google.com with SMTP id f2so15608499ljp.11\n for <dev@dpdk.org>; Tue, 26 Jan 2021 10:33:01 -0800 (PST)",
            "from mkPC.int.semihalf.com (193-106-246-138.noc.fibertech.net.pl.\n [193.106.246.138])\n by smtp.gmail.com with ESMTPSA id s3sm3351036ljo.41.2021.01.26.10.32.59\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 26 Jan 2021 10:33:00 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=semihalf-com.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=iAUKnSEG4wzEy9lEZEGtBaDUlAxNZ9xcGjnjAY5dzrw=;\n b=EXVkcpseNBC3e7YZSkttJjQDdSOYXUN9NyAXMOEv2Yl1AU4RxZUs4GnlwUgqLtKj5I\n IsXSKkBXMzXroG0XTPg6WFEO5Bcvbk9twDyrS7stQp40dl+izCZ1sxnewEBwhb0D+gXy\n 5ZkHKfFVwyFl6DBArDIBRvrfLNL89hGrL3LEKs4RyAcp1EqKdMBnt47XgDbfYgPu6baH\n 70Uo1IMRlxxz+R3YaKMWo/LCcLX/jzOkCczXK9GjLVwXHpJOLBmb7IdulW0S9VNk09TD\n Z1tHSzMJzT5NTsy4FCYycSni73cCUvVtOYzSa2S+fxVPhOjtG25lghDzgoqIeSM1jcvV\n XmWw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\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=iAUKnSEG4wzEy9lEZEGtBaDUlAxNZ9xcGjnjAY5dzrw=;\n b=USCR0oaIRyHyv424zIYzEVEd2Q1DpxeRfWDv/G3AMajAXASMw2OtQF2CPZt3ZvU6Gb\n 5Wd0I5j3PHkRngZsbCFTjJe2rKSr0e+EcG+llZrHsgNKNOWN6YFD0iAF13OlKBirt1WZ\n icJ46taDTqDgDXPhSvYfJyN2yqysoezISGEO5XapNiQQpqUj+FZKMXaJqfqEgjryO+yb\n ejw8MVHmwqbChgdfMgHaYrx+9MGsWZt+cIx08w27oFp4kOyRLxXtm9FSbYVWGarZ/Q38\n VXZhIXlkgNHWJwhWuunuJIUU264pwzHozVNPptMtpYwmDLWlY+J1u2bpIpytp+IJ0oxs\n HVPA==",
        "X-Gm-Message-State": "AOAM533g7LI2mXSTvjBdq5+7Y4xIVCg94iv1YVVEv7Z6SuBBh9axYk6w\n zG3O8IDhpnXs/DlMLC9ZsW8TROPkH1kw4wxS",
        "X-Google-Smtp-Source": "\n ABdhPJye4O+/d3D8GCwlhdccdwjrgsBn7O021rJ26MwdsQKoW32SBy//MFbYNDs7jFI8y9J1zgss8Q==",
        "X-Received": "by 2002:a2e:8608:: with SMTP id a8mr3543053lji.89.1611685981345;\n Tue, 26 Jan 2021 10:33:01 -0800 (PST)",
        "From": "Michal Krawczyk <mk@semihalf.com>",
        "To": "dev@dpdk.org",
        "Cc": "gtzalik@amazon.com, igorch@amazon.com, mw@semihalf.com,\n Michal Krawczyk <mk@semihalf.com>",
        "Date": "Tue, 26 Jan 2021 19:32:26 +0100",
        "Message-Id": "<20210126183226.2420903-6-mk@semihalf.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20210126183226.2420903-1-mk@semihalf.com>",
        "References": "<20210126183226.2420903-1-mk@semihalf.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v2 5/5] net/ena: prevent double doorbell",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Igor Chauskin <igorch@amazon.com>\n\nAdd per-tx-ring flag for packets that were pushed to HW but await\ndoorbell. That is to prevent a situation when a doorbell is sent due to\nreaching Tx burst threshold and next send fails (e.g., due to queue\nfull). In such case we shouldn't send another doorbell because there are\nno actual packets waiting for transmission.\n\nSigned-off-by: Igor Chauskin <igorch@amazon.com>\nReviewed-by: Michal Krawczyk <mk@semihalf.com>\n---\n drivers/net/ena/ena_ethdev.c | 7 +++++--\n drivers/net/ena/ena_ethdev.h | 4 ++++\n 2 files changed, 9 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex 4083568d5d..8baec80040 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -1282,6 +1282,7 @@ static int ena_tx_queue_setup(struct rte_eth_dev *dev,\n \ttxq->ring_size = nb_desc;\n \ttxq->size_mask = nb_desc - 1;\n \ttxq->numa_socket_id = socket_id;\n+\ttxq->pkts_without_db = false;\n \n \ttxq->tx_buffer_info = rte_zmalloc(\"txq->tx_buffer_info\",\n \t\t\t\t\t  sizeof(struct ena_tx_buffer) *\n@@ -2522,6 +2523,7 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf)\n \t\t\ttx_ring->id);\n \t\tena_com_write_sq_doorbell(tx_ring->ena_com_io_sq);\n \t\ttx_ring->tx_stats.doorbells++;\n+\t\ttx_ring->pkts_without_db = false;\n \t}\n \n \t/* prepare the packet's descriptors to dma engine */\n@@ -2603,7 +2605,7 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n \tfor (sent_idx = 0; sent_idx < nb_pkts; sent_idx++) {\n \t\tif (ena_xmit_mbuf(tx_ring, tx_pkts[sent_idx]))\n \t\t\tbreak;\n-\n+\t\ttx_ring->pkts_without_db = true;\n \t\trte_prefetch0(tx_pkts[ENA_IDX_ADD_MASKED(sent_idx, 4,\n \t\t\ttx_ring->size_mask)]);\n \t}\n@@ -2612,10 +2614,11 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n \t\tena_com_free_q_entries(tx_ring->ena_com_io_sq);\n \n \t/* If there are ready packets to be xmitted... */\n-\tif (sent_idx > 0) {\n+\tif (likely(tx_ring->pkts_without_db)) {\n \t\t/* ...let HW do its best :-) */\n \t\tena_com_write_sq_doorbell(tx_ring->ena_com_io_sq);\n \t\ttx_ring->tx_stats.doorbells++;\n+\t\ttx_ring->pkts_without_db = false;\n \t}\n \n \tena_tx_cleanup(tx_ring);\ndiff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h\nindex 7bb74a1d06..ae235897ee 100644\n--- a/drivers/net/ena/ena_ethdev.h\n+++ b/drivers/net/ena/ena_ethdev.h\n@@ -100,6 +100,10 @@ struct ena_ring {\n \n \tenum ena_ring_type type;\n \tenum ena_admin_placement_policy_type tx_mem_queue_type;\n+\n+\t/* Indicate there are Tx packets pushed to the device and wait for db */\n+\tbool pkts_without_db;\n+\n \t/* Holds the empty requests for TX/RX OOO completions */\n \tunion {\n \t\tuint16_t *empty_tx_reqs;\n",
    "prefixes": [
        "v2",
        "5/5"
    ]
}