get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40979,
    "url": "http://patches.dpdk.org/api/patches/40979/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1528733172-24747-1-git-send-email-ophirmu@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": "<1528733172-24747-1-git-send-email-ophirmu@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1528733172-24747-1-git-send-email-ophirmu@mellanox.com",
    "date": "2018-06-11T16:06:12",
    "name": "[v1] net/tap: explain how to compile eBPF C file",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "b628dc679f80939b686b9d309f178acd1737a792",
    "submitter": {
        "id": 793,
        "url": "http://patches.dpdk.org/api/people/793/?format=api",
        "name": "Ophir Munk",
        "email": "ophirmu@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/1528733172-24747-1-git-send-email-ophirmu@mellanox.com/mbox/",
    "series": [
        {
            "id": 82,
            "url": "http://patches.dpdk.org/api/series/82/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=82",
            "date": "2018-06-11T16:06:12",
            "name": "[v1] net/tap: explain how to compile eBPF C file",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/82/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/40979/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/40979/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 6C0471E416;\n\tMon, 11 Jun 2018 18:06:26 +0200 (CEST)",
            "from EUR01-VE1-obe.outbound.protection.outlook.com\n\t(mail-ve1eur01on0074.outbound.protection.outlook.com [104.47.1.74])\n\tby dpdk.org (Postfix) with ESMTP id D40871E401\n\tfor <dev@dpdk.org>; Mon, 11 Jun 2018 18:06:24 +0200 (CEST)",
            "from mellanox.com (37.142.13.130) by\n\tVI1PR0501MB2318.eurprd05.prod.outlook.com (2603:10a6:800:2c::19) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.841.14;\n\tMon, 11 Jun 2018 16:06:22 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=zZLlMsIukYN6SPFw83ELZScwvOIEtjDYmnESXVkEd80=;\n\tb=u8OiGFee+J6IBilC8f0Oq5XGslmNoa3rr6Pt2n0nzo03MEcZoHlkvhvT6nnCJL/VItONsxZcjeq15IQbEQKSWusxO29JY+kEWKpvuANF5ggI/WHI2kzNpbbTDV7iDq48hqYGI2iBMneeDuKeK0KXaXAE1PirhO5qRBeT1xaNTpE=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=ophirmu@mellanox.com; ",
        "From": "Ophir Munk <ophirmu@mellanox.com>",
        "To": "dev@dpdk.org, Pascal Mazon <pascal.mazon@6wind.com>,\n\tKeith Wiles <keith.wiles@intel.com>",
        "Cc": "Thomas Monjalon <thomas@monjalon.net>, Olga Shern <olgas@mellanox.com>, \n\tOphir Munk <ophirmu@mellanox.com>",
        "Date": "Mon, 11 Jun 2018 16:06:12 +0000",
        "Message-Id": "<1528733172-24747-1-git-send-email-ophirmu@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[37.142.13.130]",
        "X-ClientProxiedBy": "VI1PR08CA0120.eurprd08.prod.outlook.com\n\t(2603:10a6:800:d4::22) To VI1PR0501MB2318.eurprd05.prod.outlook.com\n\t(2603:10a6:800:2c::19)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:VI1PR0501MB2318; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; VI1PR0501MB2318;\n\t3:zeMfM9diu5XkAbP3mzEdg9vAHv4XpGx4aFKR6XiYpabLTMSLEuGlSF0E2oi0nEVTajPnCkY/fF8xhp11HAIxh7iTelRJQcPjpM36IPeBJxpNvRKm5RW7A3vwNjKsZE4NbqBWJG9woDNyTNAOSL6H0Foc2I3rCfu1O/44qPQk3Y7///nQuHHbMyvFABdWg3ZiT3TPE24wjrLwgi2fm2z1DzNdTHsgFXYeQ/xflXrl/GzmJ8UZr873uNw/Id9UykSf;\n\t25:lviqnxdqPte7LyIYrSg2LL93bGem7DC72i1/mPV1B8UfP4yWqEf+ZBHxSoyuDcQwHkAfUKoBch2d9ufQYST0JRwmxk94iPcvOYduPEk4X4aCKEzK23nUX6RF41OKBauJWZ0XkjPFjyopFT+LIkjT2l2PDpi8mRuvaDUKJLQv019WPQ1iBJIDaMhhkKnSpuh8Nbl1Dc73vSb/WnTylL6jnRetUdR0+hRB9D++S9pspSGy8WSkcGViPoO1PTsE/y9lSC0JOkspnNMlIS7kmorl37th6nocvJLxvYfK4eOqnSzCYG+mIXEX8ASALhugkWTjXbHoWXa1B9zQYK+SmHYNbw==;\n\t31:xSwW89AkZnTxW64CskvGQjdjF4eJkcsE6B+MeyY7CIP3WuyaS6UfyH7SK8LJrFxmVmoWCLv6YAIbf2Dw3SVFml5lRcJUptqn2A88wOTNAl8TcDBwovIZvADL28mjeoNrbTdCwGVMfsaGwkb39Ec5NPQA4RfT5yDNbf3eCvSTVARF2jFsYttOMczavrX3KeZsBcehg6wLLKCMdwqBzkoV6+p2BTwRoPEtoVSDDzKjMJw=",
            "1; VI1PR0501MB2318;\n\t20:r3k8zZIUXU9oXczJgSxxJvtWTo6gNrsprgYq0tWptpyJd+RKPL72J+oGglcmmtomh1AqsmQ5PrrHa5pK5dVVEXZxM8XJp8qW/2FTuH+twXrsFOpha6NEmJb/ahdHBFrY5iAHufnYXnzcjKVAcCgGR1N37VI8S9m4c/KMuaoR1RXQ109Rd4J0vw+AHUeZa/hW7mn6CiBratN1wkK1S/vRaEdJQXOHM2Wt54kSx0CrM9GDCITUFL15iVeSpwi+RKj1y/HIH77VzNhC/aMYNhJwkMy7occvuDDSA1YpWDD2aYNRHgpD3OksAOlfV+cJghNF9qLdTLaqcrwOFSwXHEOZY7Z5RpZ41QC1xoLpXA8k0C0D3N3fMt44E/KcxQ0NhEtmfYQ93apUHch3NtOnzLrUAU6OfoaAvA/UKVumimcOYguSsWZuafoKuRS9PFhHpUZ0t+240SDrPVxdx5VWVQVKsVZiQ9MwaoCVSi2w4mGgNcNZvw/DPaPWgOVeFHDdwyP3;\n\t4:XrwVheRoxFvvmPnFAhazndsogVBREEgfXEiRlhcZabCiNtqRa6sg7Wn3zHbWXLf+VIoeUtfxMpzHyR+g/4kcx9JT42A9nwlMrRZFMEapBI8Ba1aAIHf8b1weJQsNPvy3koDQYhxjh7W0DQyD7dLh5REJDX7C2fuev0P7EVJFMAT/LWAkpTccBbF43V8uL2xX9EW5Umf95wjqluyByYMUFKFkqUDRnFsfaYLIL7a0ykVliy3uWSONCl7xrNDsvKjHcmKN0769mkEq29Le+0FbSCqZoBCpLPm2kBQtDj8YaXPAZ+E4mwkXBOKPCJOsJEKT",
            "=?us-ascii?Q?1; VI1PR0501MB2318;\n\t23:AFPwvaq1XFZoYWoHTwisW/fQWoIpqztHx4BXOUS?=\n\tOHHDmZ3UQFiVCeltngNVfml9kGrm6yKZ7Oho5cnHfmkNdJLM5LPdoWsB4O0dURA+dofIzTY57HgWPbiiUfc+nxOJOZ9d5sT0wYg7qnn1/Yb7OvNOJ81RmEgTDQBLkUiQoWPXAOuMDychTySBM6c7ZNtlEKexQE5J/sBs52ZJQMB9+EYzz+IW1OOuW5yPW+yxwidgcr/NdugDvbLVNBZXu147yo748yC0wIgBPP5yKAlRE5FPVe+QcgvCSMVAWahGxRQjXDpmOFjHG52htQZnXylqVRau0luULyb7d/OTnDlmG/g/ZxMEfhPMzG27+sJ0nvBce6mkWyfb8pGJmZfkOvwdOFwfEq4Qefde7RUlV8nvDl/NaLVbPks7WdIIwatgGPOfXIFTnlEVCndWDO/clAiwcWt2Zx+uC4bUpJeY5IdY3V8t0hIXX3vCl9ZFl0E237+hvM3NjH2iwugPad1/qnUmuuLwlWSVrsurkfUlOjJIepztHw2xawzaoAcfu9PzT1L4zJWdPc825iszVOrryDIl8OG6M4MHCn7Qvz/Lgf73Moc6f/XINhZUKz+J1nR/TCVukHnJAADsEYpnnHSrbu+Q+7X+oJbMVqN7psj1+f8XfBmSfhcXIdq9CqV2GQJLxcybyxYn86DaQV8h4yasW6cmfPgHj8fzOCQ0VpgI9L+aL4jW0RZ9zbKA0YS/y9xtU/Ry2a+m7lweDIfQahhGRx0hIIrV9NLau23MYWIS2TcFK5KBsdH5Q3w8+1cY8VKboVJmjDqOQ2mFzuBQeI8AEC1zbYouT+o2aEQsx1+a1NAaV6b2TjblK1MATxYUmANTbf9sTIFKcVeWRmgzQ7WyoOV1pH/QTSkpnBO71n1CvI4bmkDNlB4BTQvsps5ra+ezgdWLIRS7h5xHSR25dM1BdKGEnIyXNPrh4FMpMa8rvxvTiqdfxx+Y2FR+R+xhnQ9C0LCWKIKdgNew2j/yKfY4xIHW6EK8++DoYmkZ1Ur82d83bf7C7T0uearxMw3tTvPX8VXXdPqVBPy3HDFb1FOrUxIvAUcVbYDueSAX1JfbREUn1YEP1QcRiEqMEPx/tNPL26r3eTQQn1d9snxD60/d5ULP2C0yIHTPgssYnDXvtL2uimRpKrTAGSfMcnB64QuI/gPbCViJ1BSsK+j15I9tOrkD574QV9wrm/WMhJdo43Asq04KPRO+tzpiq6okOhDt58BgihwxkJRtlb5n33M+WWpFj9uALSVLVSHtoD3mJPz+D5g==",
            "1; VI1PR0501MB2318;\n\t6:OEbnLQ2qB0GWnFIS+LMmoVK2VnwQ6jGUq+Ez2Cv7URBkAjNSPGJ92eQMKIz2kppbP7ll1rIkKks5Qmgg/erGo8JrsqpJZS0jbxQywtfTZA1p81sdbxa29gIpt77gYJ7Gmh4tEeV+RNX4THIAw8nMu7jpowQAEeRujAkcyXyH3TeOndpjtnUjCyCVhtD0M7yNSvcaUzswen/TLJwju0BZMDBQIkKxKrnYgAWndXlavfVw0zikqID2svw5EED2BaXueJPVUofys06lk2hQTAXoWDF/sbnNrW9ye6tD8rv7Bk51LoduhyTPErymZP+LoPP3sRmyoFQKOPNfa9U/wSwXQ6TTY9B97CZV41zBHV6m9GdiGzTwTREc2a0AzRxiJAu60fOeqrFS+ikTi7v/gkZ9c0RS3voCjeiW4nddEVPS/ITvhiowebls/VuNZLeNu1FUUqU2rwLUSPMP5dOw6/Jshg==;\n\t5:Tuscuag/kijp943hidxsBkR+xpq7bwnVjCiQDp8QMqXx34wjfTAuT3HgPcldLr/278B54w9f/axmn+7FgcoUQd6JEmXKi4CVhX6jFjxiaHw3b4u5hfila+K9VzJgJ52LVxFrhR2mTk9qtmnDkf/CfQ3VF/pHybWP5wfCV+PtA/8=;\n\t24:oKq9uthFToxcE/oTMQzVXp/lo/zNlAvOMrLjZzfjNYbqD0F1FuW8aR2+HkJvAEcWRyY7hroJbm/QsDNNI7RCEeDbt+9E9UVhv5+g+LYJidY=",
            "1; VI1PR0501MB2318;\n\t7:dAZGOVONfeI8Kpopt20ODV2vc7Ofc+VSwDcmj40ElEESjdkD5dBrmZt2cXSscf5HsJ/n7IS0vtkITQ9wpq2sj6tQQtZqj3moZqWKRKk9oiucgZiNS+AMmSe9UdXc8CVzjDH7gBKbR+Dz2kb8sX62pZjNewd0+X4jYP0hcHwJjixwER+ANdxYGCAGKhiiDSEdQgijeVtp3qvv05PbDIPPsp1j8YBJEIcYUgpThDD5lA7sYtZrrhP/3oZwpKuKNNSh"
        ],
        "X-MS-TrafficTypeDiagnostic": "VI1PR0501MB2318:",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr",
        "X-Microsoft-Antispam-PRVS": "<VI1PR0501MB2318C87B3924FF1A7890614ED1780@VI1PR0501MB2318.eurprd05.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(84791874153150);",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011)(7699016);\n\tSRVR:VI1PR0501MB2318; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2318; ",
        "X-Forefront-PRVS": "070092A9D3",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(39380400002)(346002)(396003)(366004)(39860400002)(174874002)(199004)(189003)(50226002)(8936002)(16586007)(50466002)(956004)(2616005)(476003)(8676002)(81156014)(81166006)(66066001)(486006)(305945005)(7736002)(47776003)(110136005)(54906003)(5660300001)(52116002)(2906002)(7696005)(106356001)(6116002)(3846002)(105586002)(68736007)(51416003)(966005)(6306002)(26005)(86362001)(97736004)(186003)(55016002)(316002)(4326008)(478600001)(48376002)(69596002)(4720700003)(53936002)(25786009)(107886003)(16526019)(33026002)(6666003)(21086003)(386003)(36756003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2318; H:mellanox.com; FPR:;\n\tSPF:None; \n\tLANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "7SQ4N3bB5VFYbk4kOmtVGOjAhHjvoIYDg51A1vQ1tGiSOXO4jiHivGjLHKOeC2Nmd+oql9sf+2CSUa3KpFS8xyel6/7MTwcY3SWpaPi1rHwgHe7y8bHRzdZmiVCm8kkLFQxjKYpW6GsAA2VsyQtxKtXKQsyiyVHe7lzVYo1eYY6Lf71AKxsonsSon+ueLp58",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Office365-Filtering-Correlation-Id": "261d51cb-7cc1-41a9-2817-08d5cfb5476a",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "11 Jun 2018 16:06:22.8614\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "261d51cb-7cc1-41a9-2817-08d5cfb5476a",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI1PR0501MB2318",
        "Subject": "[dpdk-dev] [PATCH v1] net/tap: explain how to compile eBPF C file",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This commit explains how to manually compile the C source file\ntap_bpf_program.c into an ELF file using the clang compiler.\nThe code in tap_bpf_program.c requires definitions found in iproute2\nsource code. This commit suggests cloning the iproute2 git tree and\ninclude its path in the clang command. It also adds inclusion of file\nbpf_api.h (required for eBPF definitions) which is located in iproute2\nsource tree. For more details refer to TAP documentation.\nThis commit is related to commits [1] and [2].\n\n[1] commit cdc07e83bb24 (\"net/tap: add eBPF program file\")\n[2] commit aabe70df73a3 (\"net/tap: add eBPF bytes code\")\n\nSigned-off-by: Ophir Munk <ophirmu@mellanox.com>\n---\n doc/guides/nics/tap.rst           | 21 +++++++++++++++++----\n drivers/net/tap/tap_bpf_program.c |  5 +++++\n 2 files changed, 22 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst\nindex 2714868..af6c534 100644\n--- a/doc/guides/nics/tap.rst\n+++ b/doc/guides/nics/tap.rst\n@@ -234,13 +234,26 @@ C functions under different ELF sections.\n \n 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above\n \n-3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::\n+3. The code in ``tap_bpf_program.c`` requires definitions found in iproute2\n+source code.\n \n-    clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \\\n-    -filetype=obj -o <tap_bpf_program.o>\n+Clone the iproute2 git tree and make it accessible to the build environment, say\n+under directory ``<iproute2_root_tree>`` ::\n+\n+    git clone https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/ \\\n+    <iproute2_root_tree>\n+\n+The code in ``tap_bpf_program.c`` must include file ``bpf_api.h`` which is\n+located under ``<iproute2_root_tree>`` directory. This file contains eBPF\n+related definitions.\n \n+4. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::\n+\n+    clang -I <iproute2_root_tree>/iproute2/include \\\n+    -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \\\n+    -filetype=obj -o <tap_bpf_program.o>\n \n-4. Use a tool that receives two parameters: an eBPF object file and a section\n+5. Use a tool that receives two parameters: an eBPF object file and a section\n name, and prints out the section as a C array of eBPF instructions.\n Embed the C array in your TAP PMD tree.\n \ndiff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/tap_bpf_program.c\nindex 1cb7382..60b069b 100644\n--- a/drivers/net/tap/tap_bpf_program.c\n+++ b/drivers/net/tap/tap_bpf_program.c\n@@ -17,6 +17,11 @@\n #include <linux/bpf.h>\n \n #include \"tap_rss.h\"\n+/*\n+ * bpf_api.h file is located under iproute2\n+ * tree, see TAP documentation.\n+ */\n+#include \"bpf_api.h\"\n \n /** Create IPv4 address */\n #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \\\n",
    "prefixes": [
        "v1"
    ]
}