get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 46503,
    "url": "http://patches.dpdk.org/api/patches/46503/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20181010141220.26907-3-i.maximets@samsung.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": "<20181010141220.26907-3-i.maximets@samsung.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20181010141220.26907-3-i.maximets@samsung.com",
    "date": "2018-10-10T14:12:20",
    "name": "[v4,2/2] drivers/net: use sleep delay by default for intel NICs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "61f27c168804b159c3b8c27de0bbdea0e792dbdc",
    "submitter": {
        "id": 323,
        "url": "http://patches.dpdk.org/api/people/323/?format=api",
        "name": "Ilya Maximets",
        "email": "i.maximets@samsung.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/20181010141220.26907-3-i.maximets@samsung.com/mbox/",
    "series": [
        {
            "id": 1812,
            "url": "http://patches.dpdk.org/api/series/1812/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1812",
            "date": "2018-10-10T14:12:18",
            "name": "CPU non-blocking delay",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/1812/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/46503/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/46503/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 24C971B6D1;\n\tWed, 10 Oct 2018 16:10:12 +0200 (CEST)",
            "from mailout1.w1.samsung.com (mailout1.w1.samsung.com\n\t[210.118.77.11]) by dpdk.org (Postfix) with ESMTP id E80DB1B682\n\tfor <dev@dpdk.org>; Wed, 10 Oct 2018 16:10:08 +0200 (CEST)",
            "from eucas1p2.samsung.com (unknown [182.198.249.207])\n\tby mailout1.w1.samsung.com (KnoxPortal) with ESMTP id\n\t20181010141008euoutp01725add316b66d2a3212689c13fb5abb3~cRJvQ28382662226622euoutp018;\n\tWed, 10 Oct 2018 14:10:08 +0000 (GMT)",
            "from eusmges2new.samsung.com (unknown [203.254.199.244]) by\n\teucas1p1.samsung.com (KnoxPortal) with ESMTP id\n\t20181010141007eucas1p1c8813fb14765def34d3859e856a994e7~cRJulKVj22271522715eucas1p1I;\n\tWed, 10 Oct 2018 14:10:07 +0000 (GMT)",
            "from eucas1p1.samsung.com ( [182.198.249.206]) by\n\teusmges2new.samsung.com (EUCPMTA) with SMTP id 60.28.04294.F380EBB5;\n\tWed, 10 Oct 2018 15:10:07 +0100 (BST)",
            "from eusmgms1.samsung.com (unknown [182.198.249.179]) by\n\teucas1p2.samsung.com (KnoxPortal) with ESMTP id\n\t20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220~cRJt2BCBt0322803228eucas1p2N;\n\tWed, 10 Oct 2018 14:10:07 +0000 (GMT)",
            "from eusync1.samsung.com ( [203.254.199.211]) by\n\teusmgms1.samsung.com (EUCPMTA) with SMTP id 3F.DC.04284.F380EBB5;\n\tWed, 10 Oct 2018 15:10:07 +0100 (BST)",
            "from imaximets.rnd.samsung.ru ([106.109.129.180]) by\n\teusync1.samsung.com (Oracle Communications Messaging Server\n\t7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id\n\t<0PGD006H4ZCG2A40@eusync1.samsung.com>; \n\tWed, 10 Oct 2018 15:10:07 +0100 (BST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com\n\t20181010141008euoutp01725add316b66d2a3212689c13fb5abb3~cRJvQ28382662226622euoutp018",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;\n\ts=mail20170921; t=1539180608;\n\tbh=2bguzgmwKj8nhRwGO5/OPA8FR2rWoDJUs/L9pjvVmJM=;\n\th=From:To:Cc:Subject:Date:In-reply-to:References:From;\n\tb=eBbycWztQGRF7FWMEmWZHfKye1XZbZJlrHCe+FDTX9LznRXZ3QBh2ENIoA3gCZSVG\n\tpg9tF7hIdDQxllb4D65Qantcwb8cKXQ8SggJdJOXAFJWLIBlnDGlzIR5FCKLq+vPYZ\n\txqUOgj30dkryRZEnsMshWokXlrBAFZGOQr6GYmdw=",
        "X-AuditID": "cbfec7f4-c77a99c0000010c6-78-5bbe083fee6a",
        "From": "Ilya Maximets <i.maximets@samsung.com>",
        "To": "dev@dpdk.org",
        "Cc": "Jingjing Wu <jingjing.wu@intel.com>, Konstantin Ananyev\n\t<konstantin.ananyev@intel.com>, Wenzhuo Lu <wenzhuo.lu@intel.com>, Beilei\n\tXing <beilei.xing@intel.com>, Qi Zhang <qi.z.zhang@intel.com>, Xiao Wang\n\t<xiao.w.wang@intel.com>, Bruce Richardson <bruce.richardson@intel.com>,\n\tStephen Hemminger <stephen@networkplumber.org>, Keith Wiles\n\t<keith.wiles@intel.com>, Wei Zhao1 <wei.zhao1@intel.com>, Ilya Maximets\n\t<i.maximets@samsung.com>",
        "Date": "Wed, 10 Oct 2018 17:12:20 +0300",
        "Message-id": "<20181010141220.26907-3-i.maximets@samsung.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-reply-to": "<20181010141220.26907-1-i.maximets@samsung.com>",
        "X-Brightmail-Tracker": [
            "H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djPc7r2HPuiDRYtV7Po/tDCZHFjlb3F\n\tu0/bmSyutP9kt5i54DOjxdXj35kt3v9ZxGIxfUM/m8XiO3IWa75eZLbYeuYvo8X+54fZHXg8\n\tfi1YyuqxeM9LJo+ek/OYPPq2rGIMYInisklJzcksSy3St0vgyvi79QpzwW29ivcv7rM0MN5X\n\t72Lk4JAQMJE49c6gi5GLQ0hgBaPE6wlL2bsYOYGcz4wSRxurQWyQmpX7jjJBFC1jlJj4bCcb\n\thNPMJLH30TZGkCo2AR2JU6uPgNkiAgISnzsXgxUxC+xnlji/8iITSEJYIECip+kuG8hqFgFV\n\tiVln40DCvALWElsm3WGH2CYvsXrDAWaQEk4BG4kpv7QgwkvYJDouOkHYLhLnm76zQNjCEq+O\n\tb4FqlZHo7DjIBGHXS9xveckIcoKEQAejxPRD/6AS9hJbXp8Da2AW4JOYtG06MyQkeCU62oQg\n\tSjwkznVsYof48SCjxKczjcwTGCUXMDKsYhRPLS3OTU8tNspLLdcrTswtLs1L10vOz93ECIzQ\n\t0/+Of9nBuOtP0iFGAQ5GJR7ehgt7ooVYE8uKK3MPMUpwMCuJ8N46vDdaiDclsbIqtSg/vqg0\n\tJ7X4EKM0B4uSOO+yeRujhQTSE0tSs1NTC1KLYLJMHJxSDYyGwgxt/0vfrsp/G30+lffAK5/6\n\t3wGLG1LVvWc11yrfW+z5NFJWQuJtntH2r/q3TGO/tBjLX2Xqt52gMMFa6Vj3htzwx4x/5gTf\n\t3Hb7psk6TpPL2YeW75n4RcH3lRXLd/PL1+tXKx5ePN+hiE1/UQ/3/7ypu7VufnfqDbLZ5l22\n\tb2f2GZWE3OVKLMUZiYZazEXFiQB7BMP9zAIAAA==",
            "H4sIAAAAAAAAA+NgFprBLMWRmVeSWpSXmKPExsVy+t/xy7r2HPuiDQ7fZrfo/tDCZHFjlb3F\n\tu0/bmSyutP9kt5i54DOjxdXj35kt3v9ZxGIxfUM/m8XiO3IWa75eZLbYeuYvo8X+54fZHXg8\n\tfi1YyuqxeM9LJo+ek/OYPPq2rGIMYInisklJzcksSy3St0vgyvi79QpzwW29ivcv7rM0MN5X\n\t72Lk5JAQMJFYue8oUxcjF4eQwBJGiRXXL7FCOK1MEqeXz2cEqWIT0JE4tfoImC0iICDxuXMx\n\tG0gRs8BBZom1T+YAJTg4hAX8JC58NQcxWQRUJWadjQMp5xWwltgy6Q47xDJ5idUbDjCDlHAK\n\t2EhM+aUFEhYSyJVYd20P4wRGngWMDKsYRVJLi3PTc4sN9YoTc4tL89L1kvNzNzECw2vbsZ+b\n\tdzBe2hh8iFGAg1GJh7fhwp5oIdbEsuLK3EOMEhzMSiK8tw7vjRbiTUmsrEotyo8vKs1JLT7E\n\tKM3BoiTOe96gMkpIID2xJDU7NbUgtQgmy8TBKdXAKL/6/sxWLdd2pnevCzSjRWvPvXR6G1FQ\n\tzH7o5Y1JCy/X8c5YUPeLl6lFmn9dTxzvKRftXxJ/VaTeNX9YxrJGq3nCj3dzpVo47dY75R/u\n\tm3VUeuaEzut7FqcEHEvYEv7/xGme594dB71ktkpvnbDhzF+z6FtLTA81eU5QdmYO6c05vCUk\n\tdf+1c0osxRmJhlrMRcWJAOfcSQ8rAgAA"
        ],
        "X-CMS-MailID": "20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220",
        "X-Msg-Generator": "CA",
        "CMS-TYPE": "201P",
        "X-CMS-RootMailID": "20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220",
        "References": "<20181004143550.23077-1-i.maximets@samsung.com>\n\t<20181010141220.26907-1-i.maximets@samsung.com>\n\t<CGME20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220@eucas1p2.samsung.com>",
        "Subject": "[dpdk-dev] [PATCH v4 2/2] drivers/net: use sleep delay by default\n\tfor intel NICs",
        "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": "NICs uses different delays up to a second during their\nconfiguration. It makes no sense to busy-wait so long wasting\nCPU cycles and preventing any other threads to execute on the\nsame CPU core. These busy polling are the rudiments that came\nfrom the kernel drivers where you can not sleep in interrupt\ncontext, but as we're in userspace, we're able and should\nsleep to allow other threads to run.\nDelays never called on rx/tx path, so this should not affect\nperformance.\n\nSigned-off-by: Ilya Maximets <i.maximets@samsung.com>\n---\n drivers/net/avf/Makefile             | 2 +-\n drivers/net/avf/base/avf_osdep.h     | 4 ++--\n drivers/net/avf/meson.build          | 2 ++\n drivers/net/e1000/Makefile           | 1 +\n drivers/net/e1000/base/e1000_osdep.h | 2 +-\n drivers/net/e1000/meson.build        | 2 ++\n drivers/net/i40e/base/i40e_osdep.h   | 6 +++---\n drivers/net/ifc/base/ifcvf_osdep.h   | 2 +-\n drivers/net/ixgbe/base/ixgbe_osdep.h | 2 +-\n drivers/net/ixgbe/meson.build        | 3 ++-\n 10 files changed, 16 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/drivers/net/avf/Makefile b/drivers/net/avf/Makefile\nindex 0a142c104..aec6e4cba 100644\n--- a/drivers/net/avf/Makefile\n+++ b/drivers/net/avf/Makefile\n@@ -8,7 +8,7 @@ include $(RTE_SDK)/mk/rte.vars.mk\n #\n LIB = librte_pmd_avf.a\n \n-CFLAGS += -O3 $(WERROR_FLAGS) -Wno-strict-aliasing\n+CFLAGS += -O3 $(WERROR_FLAGS) -Wno-strict-aliasing -DALLOW_EXPERIMENTAL_API\n LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring\n LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash\n LDLIBS += -lrte_bus_pci\ndiff --git a/drivers/net/avf/base/avf_osdep.h b/drivers/net/avf/base/avf_osdep.h\nindex 9ef45968e..442a5acd0 100644\n--- a/drivers/net/avf/base/avf_osdep.h\n+++ b/drivers/net/avf/base/avf_osdep.h\n@@ -93,8 +93,8 @@ typedef uint64_t        u64;\n #define avf_memset(a, b, c, d) memset((a), (b), (c))\n #define avf_memcpy(a, b, c, d) rte_memcpy((a), (b), (c))\n \n-#define avf_usec_delay(x) rte_delay_us(x)\n-#define avf_msec_delay(x) rte_delay_us(1000*(x))\n+#define avf_usec_delay(x) rte_delay_us_sleep(x)\n+#define avf_msec_delay(x) avf_usec_delay(1000 * (x))\n \n #define AVF_PCI_REG(reg)\t\trte_read32(reg)\n #define AVF_PCI_REG_ADDR(a, reg) \\\ndiff --git a/drivers/net/avf/meson.build b/drivers/net/avf/meson.build\nindex 9a05ebbf4..2dfda9d4e 100644\n--- a/drivers/net/avf/meson.build\n+++ b/drivers/net/avf/meson.build\n@@ -3,6 +3,8 @@\n \n cflags += ['-Wno-strict-aliasing']\n \n+allow_experimental_apis = true\n+\n subdir('base')\n objs = [base_objs]\n \ndiff --git a/drivers/net/e1000/Makefile b/drivers/net/e1000/Makefile\nindex 9c87e883b..0ed627656 100644\n--- a/drivers/net/e1000/Makefile\n+++ b/drivers/net/e1000/Makefile\n@@ -10,6 +10,7 @@ LIB = librte_pmd_e1000.a\n \n CFLAGS += -O3\n CFLAGS += $(WERROR_FLAGS)\n+CFLAGS += -DALLOW_EXPERIMENTAL_API\n LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring\n LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs\n LDLIBS += -lrte_bus_pci\ndiff --git a/drivers/net/e1000/base/e1000_osdep.h b/drivers/net/e1000/base/e1000_osdep.h\nindex b8868049f..5958ea157 100644\n--- a/drivers/net/e1000/base/e1000_osdep.h\n+++ b/drivers/net/e1000/base/e1000_osdep.h\n@@ -48,7 +48,7 @@\n \n #include \"../e1000_logs.h\"\n \n-#define DELAY(x) rte_delay_us(x)\n+#define DELAY(x) rte_delay_us_sleep(x)\n #define usec_delay(x) DELAY(x)\n #define usec_delay_irq(x) DELAY(x)\n #define msec_delay(x) DELAY(1000*(x))\ndiff --git a/drivers/net/e1000/meson.build b/drivers/net/e1000/meson.build\nindex cf456995c..d0901d377 100644\n--- a/drivers/net/e1000/meson.build\n+++ b/drivers/net/e1000/meson.build\n@@ -1,6 +1,8 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright(c) 2017 Intel Corporation\n \n+allow_experimental_apis = true\n+\n subdir('base')\n objs = [base_objs]\n \ndiff --git a/drivers/net/i40e/base/i40e_osdep.h b/drivers/net/i40e/base/i40e_osdep.h\nindex 8e5c593c9..a6072e153 100644\n--- a/drivers/net/i40e/base/i40e_osdep.h\n+++ b/drivers/net/i40e/base/i40e_osdep.h\n@@ -233,9 +233,9 @@ struct i40e_spinlock {\n #define i40e_memcpy(a, b, c, d) rte_memcpy((a), (b), (c))\n \n #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))\n-#define DELAY(x) rte_delay_us(x)\n-#define i40e_usec_delay(x) rte_delay_us(x)\n-#define i40e_msec_delay(x) rte_delay_us(1000*(x))\n+#define DELAY(x) rte_delay_us_sleep(x)\n+#define i40e_usec_delay(x) DELAY(x)\n+#define i40e_msec_delay(x) DELAY(1000 * (x))\n #define udelay(x) DELAY(x)\n #define msleep(x) DELAY(1000*(x))\n #define usleep_range(min, max) msleep(DIV_ROUND_UP(min, 1000))\ndiff --git a/drivers/net/ifc/base/ifcvf_osdep.h b/drivers/net/ifc/base/ifcvf_osdep.h\nindex cf151ef52..6aef25ea4 100644\n--- a/drivers/net/ifc/base/ifcvf_osdep.h\n+++ b/drivers/net/ifc/base/ifcvf_osdep.h\n@@ -17,7 +17,7 @@\n #define DEBUGOUT(S, args...)    RTE_LOG(DEBUG, PMD, S, ##args)\n #define STATIC                  static\n \n-#define msec_delay\trte_delay_ms\n+#define msec_delay(x)\trte_delay_us_sleep(1000 * (x))\n \n #define IFCVF_READ_REG8(reg)\t\trte_read8(reg)\n #define IFCVF_WRITE_REG8(val, reg)\trte_write8((val), (reg))\ndiff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h\nindex e648ea462..ea8dc1cbe 100644\n--- a/drivers/net/ixgbe/base/ixgbe_osdep.h\n+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h\n@@ -21,7 +21,7 @@\n \n #define ASSERT(x) if(!(x)) rte_panic(\"IXGBE: x\")\n \n-#define DELAY(x) rte_delay_us(x)\n+#define DELAY(x) rte_delay_us_sleep(x)\n #define usec_delay(x) DELAY(x)\n #define msec_delay(x) DELAY(1000*(x))\n \ndiff --git a/drivers/net/ixgbe/meson.build b/drivers/net/ixgbe/meson.build\nindex 02d5ef5e4..544a14148 100644\n--- a/drivers/net/ixgbe/meson.build\n+++ b/drivers/net/ixgbe/meson.build\n@@ -5,10 +5,11 @@ version = 2\n \n cflags += ['-DRTE_LIBRTE_IXGBE_BYPASS']\n \n+allow_experimental_apis = true\n+\n subdir('base')\n objs = [base_objs]\n \n-allow_experimental_apis = true\n sources = files(\n \t'ixgbe_82599_bypass.c',\n \t'ixgbe_bypass.c',\n",
    "prefixes": [
        "v4",
        "2/2"
    ]
}