get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 26262,
    "url": "https://patches.dpdk.org/api/patches/26262/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20170703191402.3638-19-jerin.jacob@caviumnetworks.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": "<20170703191402.3638-19-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170703191402.3638-19-jerin.jacob@caviumnetworks.com",
    "date": "2017-07-03T19:13:46",
    "name": "[dpdk-dev,v2,18/34] app/testeventdev: add order \"all types queue\" test",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "ff5d93e2a646a933cd99c60b49ea0cbdf592a127",
    "submitter": {
        "id": 305,
        "url": "https://patches.dpdk.org/api/people/305/?format=api",
        "name": "Jerin Jacob",
        "email": "jerin.jacob@caviumnetworks.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20170703191402.3638-19-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/26262/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/26262/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 82ACF7D14;\n\tMon,  3 Jul 2017 21:15:57 +0200 (CEST)",
            "from NAM03-DM3-obe.outbound.protection.outlook.com\n\t(mail-dm3nam03on0046.outbound.protection.outlook.com [104.47.41.46])\n\tby dpdk.org (Postfix) with ESMTP id 9F95C7CDB\n\tfor <dev@dpdk.org>; Mon,  3 Jul 2017 21:15:51 +0200 (CEST)",
            "from jerin.domain.name (111.93.218.67) by\n\tBLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.1220.11; Mon, 3 Jul 2017 19:15:46 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=JURHihFfQtRf6iIcr8Z4kvV0uqOedDxgOr6BP4il5hw=;\n\tb=ULO2va/wp0J+AQDXLeADbtJIqPVXJJTd6DStYDu1b9z6cGpWc9Tnk31LXGqYsRPOKg6VESiRil+4lZOnazigb0ygQpvr4QapA9tXaf4MH1o72WTw3SUUN0MSB32SnAyz3uPAVof0irrGucVSY63yo8A6H2ZwdZS5Eucd5zq0A9E=",
        "Authentication-Results": "dpdk.org; dkim=none (message not signed)\n\theader.d=none;dpdk.org; dmarc=none action=none\n\theader.from=caviumnetworks.com;",
        "From": "Jerin Jacob <jerin.jacob@caviumnetworks.com>",
        "To": "dev@dpdk.org",
        "Cc": "harry.van.haaren@intel.com, bruce.richardson@intel.com,\n\themant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com,\n\tnarender.vangati@intel.com, nikhil.rao@intel.com,\n\tgprathyusha@caviumnetworks.com,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>",
        "Date": "Tue,  4 Jul 2017 00:43:46 +0530",
        "Message-Id": "<20170703191402.3638-19-jerin.jacob@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.13.2",
        "In-Reply-To": "<20170703191402.3638-1-jerin.jacob@caviumnetworks.com>",
        "References": "<20170528195854.6064-1-jerin.jacob@caviumnetworks.com>\n\t<20170703191402.3638-1-jerin.jacob@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[111.93.218.67]",
        "X-ClientProxiedBy": "PN1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (10.174.144.19) To\n\tBLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "3bc84ea5-6e7d-4fb8-0341-08d4c247ead7",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BLUPR0701MB1716; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BLUPR0701MB1716;\n\t3:e4zskcu0mPgv04uZJ3urjUgmgvGsLsLqLsRBsHGX9o2waGDqJc5sUyostKCcqZPjOIACawLpvnmA8QLR2Zt35Fwesb33YRh4layyvY8GXDJNRDn0bfXadWR8aNT3mGr0zRdw9ifFWmpwdcO8ce70FKfl2/DiQ/mDBz4V0AavaYIwYyECuJGW29hZqIrgd9jGXvPu2K9/gxPCowQLgRxAAIv8nmn6jTCo7/YEifOXDksz9iwtyfHeCfCChTgN52RMBfEAAG0jxdwCeA4nh55of70oOdFeOlvaBeSJc4CiCG/3IQQAuQ44zYzwgKZPMgHWEloO+R9UDhOCpkhEOuGdPVCVpOWjR0nu3uhNH1fL5sgWSh9mu6V69d0XGtZVoPv8yMOzSE09LsG1dfbFDk15ZVo96zz13hPEdJTYaXtIi+g3zHEVOpwytFOXni/XqOSRcEsTIsUbLKB+RWTkzMUX98Vj11A2LK1ZgOP6CTduRuGK2lB1FaJleelXynKgdqB7lN5nPbJjq1Pi1VLc0hKZqWo1MgjhoV4FfSuBZvXyGYlKCMP0MOSDIkYOjdV8Xd8DmXa9HVl9M1mwL8JzgqzFEKI9MSwuGuJiSCTnIBsDp3lIJj8bpuXU6X2vU4NS5zK+n4ko37SjSOyeY8UJ0f3orhoYTs9cTN1vsCFfaiCPF2ZyMaNvrvu89LEROWBmRGa+Lz0Ubw71RC2ywqtgbXkcccydAACPr0Vxlbkzy2UuYjU1WnOJTS+MDyCuwWtMnH8m",
            "1; BLUPR0701MB1716;\n\t25:mhr27VD/65cIg1CDjUkiC+EhiGuiI6XudvaQUj57XRX8Gd4Dskml/F6fJtf4LIxDtX/wY2RCp2naJ30Taq5uZ4tgfpkzFfg2pYSWtjn70FCUiU27iOet3bUKlSSA0xUSMF6ug5pW0dJaghXlwBFDKMth4vrYGo6WePyNbLqZI2uYYA7nCoVhZo1xiOBgFtElebvwto0lx9dpHvMoXrCVjHiI64O0WX09C0h041KcVzoNJf53DitPBcb22vWNVV6kWS3g9p68pdwDfGu2glAwOWlmpwxHCVyWf+z7NYEla+REhr7Q+PrRsk3ygno3cQa0nr/OZY0dVxWBVYYZwrj3Z8/AJsvXVKAoyt8tQ+bZfknq9fKM8n6oioGLqFl7cBUZFbXMSdcvZEas48wezj+njysb4CFugBM6GPGctulCfkhITwdq9HRgSk9aQ8TliQs/rJfqg/an4XHPiHBTtYo/RvaBqu1ngfjINC+XPndQhTa7bNMYsBT92p4Dse00n3ptgutdVrW35H5Vb24glkIlvnfV1k9B8r+0ifBeruyn+OaHwEINVg8Th4Lm7kdiUWR+F/FOxH3J/wfu9T+43rZSCyU5deJZqUh03ZCREqyHytx5xHORz0MgrtNPVt2K7n1hbnOVXVCHFnvYeO8V2GwFZvsyL/kgffun9uLDM/1W2XvwUff8wzDUx9DkyNQ95q4mrpRXjLm/34orRY8upt7nWADlNBYxW26IuX2kwdakoZ+QUdoMxhn/izYL6FovL9wWmRLHKHoBOgClTSszA2y5FBX0d/ExI3S8BOlkZ2cbHEb9N4Wgktv5chwOJpnnOOyEnZb4yB0jRRvYxpl8GO5TUoyG6MATq3TxfERNNs/WWP24X+P9o/5PPWgR/cGxKw1KS32pN0iDMVZ8i2EtdXKo2vgticFaT2CrjEjyVaLOW1c=",
            "1; BLUPR0701MB1716;\n\t31:7nLZa8ju0W++cFYyk3Lx/5DpbV04F043tNI20Ba7b3eYZLj873+SiKIIxlVhqBhoBNPD0TCoAwEno6sOTi6dx1PNPxmOzpRZJZDt7MGFuIGjkKmhiCxObaFYGQmXIPICZXQONnpgY9USD3n0VrgpVE4b/xJSyK0JhVJ3f3yoyvsVouUCjDEIolNHbs5S61OXDIwBWi2UcateBY4lmcimc1iOwDAIOHphmrgOehVmJefgG/H8Khc94GCQlulfzxTToE7bdSWyFgLVu8xmdjw+WEylLuJtMR5dFFSGHigHRbSEJdB2mZy9yYA3GyIDelMyXmLrvB03IS8TZpkWRaM9LtbDMQ61JFNUkzX2QPifCVa+ZJzOUXTa/fAg1i9GkiuSEv2u1mk/jHmMlCO1vVk45tckXNEyThS5EAnALmSRDO1al1ekhhIzhIjBSjpVMkNNolFv4AsMdQvO7ST1wcoaqnkdAt/7DJOAyFcFXiAHr2+EZBdnrhojVxc/M/IUx0hbRNHQaN/uyNEze0aT76aEeg08ZvPwrIGfA2H1mxvJ9ZOEzIqe0S3RhmNHndlCCJ4GnRX+kR7742dF5HOWGFsu2S+cS9P3osxrk5gSBXtnll4KawB1kuSY7YI+p1DcTpobxs7VgugPA/EuEdrco3prfQ90X88Ab2ZkpA5+JxkpR4U=",
            "1; BLUPR0701MB1716;\n\t20:xZ7zmPjItFrzW3n7a0ztVtueHx71s/qszPIqgEZULBK4MFbtXffvKgurtAPnFToziHHxryDym9oOkigqWG6cEGORK93lUXpsFcKA4iI4XkT4BFWKvQNesJF6yCRMBJXBfqAnUatYJ1rL9A8suFRNpcdBOPro+VYOdqb7sLtbY2mcAsbKeGP2eCYkJgo98QjXmldtI5L3E0DihOhUkxwS2VFVsjGbTNj4p7BkJwCdr/sqKAAEs/qXZRs4/OaFD2rXD6Rq0OlDVixL0AbhALhhNEIf0I5CrF0xUWvLMFV2LxH3vqYhhuj+UJyBdrBn0Qhv+XDpoq16BgxhkqhhprRqAe/gnmRn8ZwiNxfN2qFmDHWc0kXr6jmjNPLxVZvDJ7RmZziSb0yVHrR3wkxlUjQu1cVBw+bdvzSi29u1BNueCSjNvI21M6d1/Vv+nZ2XfXd3hw1uqCl70om+roWH8nEbY0MykuUA1DzD277mdbLhoxuJFZDIisLyLEWoR9hTTPRzCUbGY0wEGbmGxz6ZL770znniHvfSmSkKmVvjlKvlZMe4DuMv+Xj17dcuhDai0sKZBBHiZW/ghW8DDnVWxvgKuR72zQs6wGoFZYOI/k9MFE0=",
            "=?us-ascii?Q?1; BLUPR0701MB1716;\n\t4:VW+aYqzjnylBQnNOs5NfQ4s7b1+ROE0TuqJ6nY6K?=\n\tilrlIINptgCT+Msw49N7ebCgzqgkazLwLlwrAcT0r5HpJmY5do0LyLfxS7RWZdKZv219JH/+vuMmOxKY6JQXBx71Sy6p/1Dk2/gskOJvQNvsFgcl52ueGuF1jrQaUAwKsDE7iLd1OC5/76G570cE5oJT1OsrozeqG9C34FRbBXWRqZjod1sOgGSNhARxlhiqHqRJ+6uiCzzqd8JR6zFEVc66rbz0K9yPiOswrDExvfD1hC/mK4uvyo7sRL0MW8OP0s5NxrhxKcWO35lMnapdLMoKB5KMi3yik8GgvOnijW1wqBpqTJtpq64IFHU1c7uUNO0dQLc1OQmp1HZXIOuqerXn73ST0+H/hx4zIzvyAoPAgx5+uqw2a0X9j44TtSFrlnQrnnSZ7LL2Dt6HcesvifEhoK4ng8TNEYqi7TRteqajO29zvIbo3zFCoPWSFQsSvsza4UuyYlxPA0HdcyBpdfgsz7D3Mp++U25tKtCRYIOI7RCrP2dbQPdpb6eWBHJpM0FLSWguIl7Jn34ShgoNRXr923sNIAjmBW41JWopS6VHD0ZLa3Ks/nZSfIvrMHcfeS0xVvxUprZOO+BUsukcxR0+ZsyyQwXA9KqUYBpACLRLg0wSgjvv8ggMnzjrAUKg+a6zqrdRwzxC8XoUWh1fcl3tFRg7uTkh4X2XhehPwaCMcovOuh+ReLQImHgskscmbeRZ94wAGRcTUSeztbQclHuIAqfpT/roVn8nAHWI4ooFkRzMNfruI3B8vbO+QLjG89lQRGD/e7fdlMZdhfvactfhJrEdTASWaR4sfBeROxNelOCVfXRUFGebYsD33KMauUsyjz4xvrztPDm77c4Sl8xk5FHbP3KqAOc4N22qcRTtNAuwDFG5cRBYG7hrtPXtJ79t9IfkdJOCrCeXckZE9PvQDfyagCiRj9IXr0CHuz642K38zqY1wH18PHFPnvqW1GqgpXmL5r2VpBMbdg1Qqs4syx8YjtL1WHoq1NyOpyqLWGzD+MgqfxfynCVX0467FX0jVqUouzHFb+13tW7vhG7iyUqwh/3TMh1Tx7oxzTL6B8ECIELQZRpDuSSAI1D0egBkhYEK85KyTG2qQk6KesRD4JEkSYifP4bqG6/8cY4r+gN9cHHLn9zOddCYREfb+JpHgHAnBJJ2vBBcQ4rWpTWIXcuaIeA44JXKzNU1wsUipQk/E7YxaXORFh30DlUpZc+jlhn7TOhX6n4kK4eZAjELY0i3xZhFRy8v+fLrDT04NYUvvkp3F+li8HwhITvDtCg=",
            "=?us-ascii?Q?1; BLUPR0701MB1716;\n\t23:vgbbp+uR+9MP1vDPYD5RlM6uKTnV4+vQ/9JRx2W?=\n\tNRG4/OzsUfzOR0f0R1yKKc57uNg7spMFbEnwWamffImSGQjwRgZ07kTdvvTzvKc/P7mc7VgeEo3hpiEqcBlSIJDf9w55Lddw4ClEtEwcYEe2H++O2Ad771F+Yp73Q1B8j9/CHJWG1IyqqumNF8GtHgkkGIePm40mHMPf3nHCA1lkWDqNjNHhp7eFlwE6IJ4+cEFR4knbioEeTd3PYlpAQdtY1kpBgkmgZvZPFR5r5n8431NwoxiC/To66maF4fO3IHzm0G+eoVVIO1Of3wnuZIfd/684VJ+Mr1XXP/wK4FVGbZO6tm3prXEJLZHszjMerx6CVlIgBRV2dHCINTt77QIXjfRxHg7ZZB3JGURtnOxPu682vDgKyn52sqlgJ6TWF8oM89PllffDQ6IGn/D8tDoLhN69l+cvuQJX73nao96c/KccRr+ozTrHaOa6UMOGCni0LTXCu+CuYFb4AsHwkE4wmUIQyCc3gWhALUY8fWgvgfbrqsnkFtm83JXU0i7Q83W/1m2CUF5VnT1fyzHhiqhzrSNs53VIRifqmajvaLpb15YiC+0evqzLJ/SH6VRFYQ1tuq7r3HRb1QjFG/slq4+kR4pPNKCovbWZh14NKahvZMAA9zLg39GN8pd5KwcD+mhT5at+L14S3u62YSV9kVuKb83swUTzwAY8wmq+HLIHvb4c4Gtul8G/Wdpm5QdRHPFas+QEQLXL4xzRe6OCCyUckzHSXeHm3pA15LAVSRVK0fN50OeeGfQ0e787aPofFM5nUH29r07eILv5oXWvUtI0BHeOrEdQrtJC3k1ANhbkRSM71j2s7NfuhD9aPi4UdtY/asV+SdP5YgPsD7HwjFEq4JOFeG/5XwA4ZWxZ392aBU/Hy4dff01skr9U6zLQHo+3PEDsXDx2/eqvVfXDjtge6uHXZ8qpZCBku0dqX/KjbowVMUJO5Vc8bmrXEk/4OdNg6JOH1cD85fCkMbSgEuqnDJypEft/gX0eZisZqByFCg42OJmu4g31am0GQvurkL74Kz+v9Sasjjl3ceTTm7OAdaZx3Kr3NM7eealtJ2Bf1fbJdXtVe6oktZJWNZPe4oOTs4CIm/tZjHI/NCa8WEHf0UQyE3BtIagKmtXPP9nhCOeFc9n8M4jMsGw5GE43Twwf4VqnGADu0SE1Q+HGAaeJJnplZkFAObDwoU3CFxqUJM8T1Vo9bf1L0jo73fyGUc6UefAMJt79qr5Pbzh7mD81V",
            "=?us-ascii?Q?1; BLUPR0701MB1716;\n\t6:v8C5WgwJ78Hjwod4nQkwsKVWgHIhO80J2iBOVHGP?=\n\tF5c1WqZ2IR+gIsxkj0oQqym68By24JtqF58f+XULh52Z3EG20KTGEjzaaJO6O8npKw4Uc6LDzO4kSwJi121g9ec1VsFpHM5Z7aJLPDtghKYWgyCYlS7UVCPqPR4x3q/3gHDC8lhSQxrupI6IhhT8M00w9ZvtV5OkibN36YT9TO44YZGRlKRnbxfPgdRREd29Os22phHPZu80B0QwIE1A6tYdAY6drPiR3TjSDs2VUdM1+nLAkiL26j0G8ucPHrv4FlfT/zKkWGF0VYmRHJ+hZmJ4S5EAlpR0c4wmHCUun2r+zLjI5JWVJb8ZRA3QEVT0n3VIs/hVf4djxtbADZ+md6uDCAmmly8kY+MQUHxzUEjGZtBmvspff02sCISBlqSqlaS97ovkmPfU7bZDrzz4FRfhdymTjzrSHwcTDH6lt3l9hGhACYygp8zoP7AbbeB6Hwhvazywf47/gdog/YrDNGIvUJl3CHf+Dvy6PVajwjF5qLpGB3ydlG/06ClYbeCqiGXJcWcvQp0pJC0/8Q0dObRfBUJluDXr/ATFg5RlVvb3hJq/8NwLcMEgmYldiEQ8dph7CCUqYyNLR+rlg/9yF8GXcKPxVEkkJGDtkzHAsTq6eZDgpsr6eVoI5PP7nzU87fLmJvMrp0KNqmTN8yKGHF/gAy53nkbpcEYhZLrg/eNnX4o++4DLskeJIjzOFO/AhgoPBm/wITp4brK1o2W52dCoJI7FdurcYiP3g1v1jYSf8vtBG8lqUy44yZFqCWdTXzgJ0Ao2Ogy4/Bi8ytWACmFRBF5BluvAhXglgNXfRCFmn135ty62bm1LExOtJTuBWi2ihH4kngLf9WXGHrOsuLjnxqRo9q7Ky9GgqdTXy1Zitd6MKyDdAwzp6GrSDz2I4oBmECsKMTpEDE3hovHEKBWaWqDOTdzSNc6oTEoDavp4vzGUH7HUpAle6UjolZAhL14=",
            "1; BLUPR0701MB1716;\n\t5:HxC8iTNhGEicb+Jc3Bsn9qKC07pjysZu3Smn8Geqg/FGK/V7hUBlpw/xiyoGTpcilQorfuK0KWFPo5UznvqUlCR8QQycQtj7Az5yF9mDkMYbTQXmw3+hZX1+l6acMGTnBe+aUkdAlK4OHGr8YmMoPI7QhdSwfe3hJT2Uk8wKXRXhRlglgcNsGyuK07gQ6FXsbVpa+MSnqUtswhPb2yw39W859uIIseQTacBkFgN2RXMeL5thssKe7GF+g5nhBxz1uWfz+kTdHL0S/SNunCBTSzxURquN2Rfgu3vgdXK2JWB9ZRud810/ELbSbmJShL0YiGgmKvfreP2k5ezeumjEkizjCK2E/3Quw6nIVWjsPqtAI7VOO8wpydTdXUtxnsoVniMJZeO2RUYO8Lolcnlyk2/yjBwg5iXRU3kfpBwp8GxcUt3SmyGRqeryhEWuE7z0rtiUz05U59W7LyXou3H9FW7Y1DmhfFqlPcKN1Q2DAzlpz8Vpdw2BtK8M4NpPT6Cd;\n\t24:BmOIjJw9BeFMbvwJeuk1kbocnBoRZsHMs9WImARoZwYuGgydcsb5NQ93rmy0f07bOx0mVsyNIFNQtBoY2a9HP67wfxZYofcLKG/4SuQsePk=",
            "1; BLUPR0701MB1716;\n\t7:xdNFakUTvCJcgYDqFctvIRdStLuPPNaqiGGpVfsuWCatlQIUBVA8Tp5Um9RbLCId1cE1X6EkH+n/PVdpFMSPHKqsmaVLmE1Hc6iZHR+byF2qpFiszM9J+Io7mmpCPY3//J5NeKzSathIQ4XiDQgCh7TBDqqyDv9U4b6f1AwoauKD55SbV+EkNJXUAMvXHQyo007aWjPVFNm1fmKIEW2bwXDx2GkORisoFvtdvuZ7xmJ3vDAUyakYj1EJrfAYhT5HHB3h2TFHVu8wJZ0m5EXRIS2J1YeOx3Zr3+mVH4eaQdeAStnQNweAyaiSGRYhjckHA4sUFUzZAWTTB6N53LnnDYOcqGR7AhgAdOfrW+rIiF93i4Ws5qB0kQAPDAQ6pok/BSC34RT2Dki+ImSr2UFuN4sT1AtSp22iAJqCX43td8JJTkfppE2DMhVJgOKcnP0ugaAFQRIwYnSyQDkz+RQZw4uG9ByceJvH3Wvd/vTTyJRWtFrGVvice6zFOdbaOO2PVwmYbjAjF1U4NuqWMhTP/sdPS0CpbL47Ukdcjp1yavKFUA9RXymye0BwZmf4LEA1b8B5d3k642gn3qdSU/fPp5nlgNd+o3K5Iqm7xCY2i3DXh45mjoM0wXhyeFuUY83e5XWer+nOv1NWWKtvf1XNdlAH0v8q2KeYHYg8hU0EJJ1oEx6uLIrYOPOfEyA4xqzpZ910kSeh46dUrPJ4Tg/SAX3Dj1n8C0b8kf7VgH6way1enFhnTdfue2x1XL2l2v/xqtz15OD4fUNUaS/DN0FmGVnMWryzj3vCR4rWyhQlaM4="
        ],
        "X-MS-TrafficTypeDiagnostic": "BLUPR0701MB1716:",
        "X-Microsoft-Antispam-PRVS": "<BLUPR0701MB17166AE583FA2FE57CC0CA90E3D60@BLUPR0701MB1716.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(236129657087228)(148574349560750)(158140799945019)(228905959029699)(247924648384137);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123555025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BLUPR0701MB1716; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BLUPR0701MB1716; ",
        "X-Forefront-PRVS": "035748864E",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6009001)(39850400002)(39840400002)(39400400002)(39410400002)(39450400003)(7736002)(966005)(478600001)(53376002)(53416004)(72206003)(38730400002)(110136004)(107886003)(42186005)(8656002)(50986999)(76176999)(36756003)(6512007)(6306002)(53936002)(4326008)(25786009)(5003940100001)(6916009)(42882006)(2950100002)(66066001)(5009440100003)(2351001)(2361001)(6486002)(6116002)(189998001)(305945005)(33646002)(19273905006)(5660300001)(81166006)(8676002)(3846002)(47776003)(1076002)(2906002)(50466002)(48376002)(562404015)(563064011);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716; H:jerin.domain.name;\n\tFPR:; SPF:None; MLV:sfv; LANG:en; ",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "03 Jul 2017 19:15:46.8726\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BLUPR0701MB1716",
        "Subject": "[dpdk-dev] [PATCH v2 18/34] app/testeventdev: add order \"all types\n\tqueue\" test",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://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": "<http://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 test verifies the same aspects of order_queue test,\nThe difference is the number of queues used, this test\noperates on a single \"all types queue\"(atq) instead of two\ndifferent queues for ordered and atomic.\n\nExample command to run order all types queue test:\nsudo build/app/dpdk-test-eventdev --vdev=event_octeontx --\\\n--test=order_atq --plcores 1 --wlcores 2,3\n\nSigned-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nAcked-by: Harry van Haaren <harry.van.haaren@intel.com>\n---\n app/test-eventdev/Makefile         |   1 +\n app/test-eventdev/test_order_atq.c | 232 +++++++++++++++++++++++++++++++++++++\n 2 files changed, 233 insertions(+)\n create mode 100644 app/test-eventdev/test_order_atq.c",
    "diff": "diff --git a/app/test-eventdev/Makefile b/app/test-eventdev/Makefile\nindex 37c04c294..93c36e510 100644\n--- a/app/test-eventdev/Makefile\n+++ b/app/test-eventdev/Makefile\n@@ -45,5 +45,6 @@ SRCS-y += parser.c\n \n SRCS-y += test_order_common.c\n SRCS-y += test_order_queue.c\n+SRCS-y += test_order_atq.c\n \n include $(RTE_SDK)/mk/rte.app.mk\ndiff --git a/app/test-eventdev/test_order_atq.c b/app/test-eventdev/test_order_atq.c\nnew file mode 100644\nindex 000000000..cbe1f8240\n--- /dev/null\n+++ b/app/test-eventdev/test_order_atq.c\n@@ -0,0 +1,232 @@\n+/*\n+ *   BSD LICENSE\n+ *\n+ *   Copyright (C) Cavium 2017.\n+ *\n+ *   Redistribution and use in source and binary forms, with or without\n+ *   modification, are permitted provided that the following conditions\n+ *   are met:\n+ *\n+ *     * Redistributions of source code must retain the above copyright\n+ *       notice, this list of conditions and the following disclaimer.\n+ *     * Redistributions in binary form must reproduce the above copyright\n+ *       notice, this list of conditions and the following disclaimer in\n+ *       the documentation and/or other materials provided with the\n+ *       distribution.\n+ *     * Neither the name of Cavium nor the names of its\n+ *       contributors may be used to endorse or promote products derived\n+ *       from this software without specific prior written permission.\n+ *\n+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ *   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+#include <stdio.h>\n+#include <unistd.h>\n+\n+#include \"test_order_common.h\"\n+\n+/* See http://dpdk.org/doc/guides/tools/testeventdev.html for test details */\n+\n+static inline __attribute__((always_inline)) void\n+order_atq_process_stage_0(struct rte_event *const ev)\n+{\n+\tev->sub_event_type = 1; /* move to stage 1 (atomic) on the same queue */\n+\tev->op = RTE_EVENT_OP_FORWARD;\n+\tev->sched_type = RTE_SCHED_TYPE_ATOMIC;\n+\tev->event_type = RTE_EVENT_TYPE_CPU;\n+}\n+\n+static int\n+order_atq_worker(void *arg)\n+{\n+\tORDER_WORKER_INIT;\n+\tstruct rte_event ev;\n+\n+\twhile (t->err == false) {\n+\t\tuint16_t event = rte_event_dequeue_burst(dev_id, port,\n+\t\t\t\t\t&ev, 1, 0);\n+\t\tif (!event) {\n+\t\t\tif (rte_atomic64_read(outstand_pkts) <= 0)\n+\t\t\t\tbreak;\n+\t\t\trte_pause();\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tif (ev.sub_event_type == 0) { /* stage 0 from producer */\n+\t\t\torder_atq_process_stage_0(&ev);\n+\t\t\twhile (rte_event_enqueue_burst(dev_id, port, &ev, 1)\n+\t\t\t\t\t!= 1)\n+\t\t\t\trte_pause();\n+\t\t} else if (ev.sub_event_type == 1) { /* stage 1  */\n+\t\t\torder_process_stage_1(t, &ev, nb_flows,\n+\t\t\t\t\texpected_flow_seq, outstand_pkts);\n+\t\t} else {\n+\t\t\torder_process_stage_invalid(t, &ev);\n+\t\t}\n+\t}\n+\treturn 0;\n+}\n+\n+static int\n+order_atq_worker_burst(void *arg)\n+{\n+\tORDER_WORKER_INIT;\n+\tstruct rte_event ev[BURST_SIZE];\n+\tuint16_t i;\n+\n+\twhile (t->err == false) {\n+\t\tuint16_t const nb_rx = rte_event_dequeue_burst(dev_id, port, ev,\n+\t\t\t\tBURST_SIZE, 0);\n+\n+\t\tif (nb_rx == 0) {\n+\t\t\tif (rte_atomic64_read(outstand_pkts) <= 0)\n+\t\t\t\tbreak;\n+\t\t\trte_pause();\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tfor (i = 0; i < nb_rx; i++) {\n+\t\t\tif (ev[i].sub_event_type == 0) { /*stage 0 */\n+\t\t\t\torder_atq_process_stage_0(&ev[i]);\n+\t\t\t} else if (ev[i].sub_event_type == 1) { /* stage 1 */\n+\t\t\t\torder_process_stage_1(t, &ev[i], nb_flows,\n+\t\t\t\t\texpected_flow_seq, outstand_pkts);\n+\t\t\t\tev[i].op = RTE_EVENT_OP_RELEASE;\n+\t\t\t} else {\n+\t\t\t\torder_process_stage_invalid(t, &ev[i]);\n+\t\t\t}\n+\t\t}\n+\n+\t\tuint16_t enq;\n+\n+\t\tenq = rte_event_enqueue_burst(dev_id, port, ev, nb_rx);\n+\t\twhile (enq < nb_rx) {\n+\t\t\tenq += rte_event_enqueue_burst(dev_id, port,\n+\t\t\t\t\t\t\tev + enq, nb_rx - enq);\n+\t\t}\n+\t}\n+\treturn 0;\n+}\n+\n+static int\n+worker_wrapper(void *arg)\n+{\n+\tstruct worker_data *w  = arg;\n+\tconst bool burst = evt_has_burst_mode(w->dev_id);\n+\n+\tif (burst)\n+\t\treturn order_atq_worker_burst(arg);\n+\telse\n+\t\treturn order_atq_worker(arg);\n+}\n+\n+static int\n+order_atq_launch_lcores(struct evt_test *test, struct evt_options *opt)\n+{\n+\treturn order_launch_lcores(test, opt, worker_wrapper);\n+}\n+\n+#define NB_QUEUES 1\n+static int\n+order_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt)\n+{\n+\tint ret;\n+\n+\tconst uint8_t nb_workers = evt_nr_active_lcores(opt->wlcores);\n+\t/* number of active worker cores + 1 producer */\n+\tconst uint8_t nb_ports = nb_workers + 1;\n+\n+\tconst struct rte_event_dev_config config = {\n+\t\t\t.nb_event_queues = NB_QUEUES,/* one all types queue */\n+\t\t\t.nb_event_ports = nb_ports,\n+\t\t\t.nb_events_limit  = 4096,\n+\t\t\t.nb_event_queue_flows = opt->nb_flows,\n+\t\t\t.nb_event_port_dequeue_depth = 128,\n+\t\t\t.nb_event_port_enqueue_depth = 128,\n+\t};\n+\n+\tret = rte_event_dev_configure(opt->dev_id, &config);\n+\tif (ret) {\n+\t\tevt_err(\"failed to configure eventdev %d\", opt->dev_id);\n+\t\treturn ret;\n+\t}\n+\n+\t/* q0 all types queue configuration */\n+\tstruct rte_event_queue_conf q0_conf = {\n+\t\t\t.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,\n+\t\t\t.event_queue_cfg = RTE_EVENT_QUEUE_CFG_ALL_TYPES,\n+\t\t\t.nb_atomic_flows = opt->nb_flows,\n+\t\t\t.nb_atomic_order_sequences = opt->nb_flows,\n+\t};\n+\tret = rte_event_queue_setup(opt->dev_id, 0, &q0_conf);\n+\tif (ret) {\n+\t\tevt_err(\"failed to setup queue0 eventdev %d\", opt->dev_id);\n+\t\treturn ret;\n+\t}\n+\n+\t/* setup one port per worker, linking to all queues */\n+\tret = order_event_dev_port_setup(test, opt, nb_workers, NB_QUEUES);\n+\tif (ret)\n+\t\treturn ret;\n+\n+\tret = rte_event_dev_start(opt->dev_id);\n+\tif (ret) {\n+\t\tevt_err(\"failed to start eventdev %d\", opt->dev_id);\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static void\n+order_atq_opt_dump(struct evt_options *opt)\n+{\n+\torder_opt_dump(opt);\n+\tevt_dump(\"nb_evdev_queues\", \"%d\", NB_QUEUES);\n+}\n+\n+static bool\n+order_atq_capability_check(struct evt_options *opt)\n+{\n+\tstruct rte_event_dev_info dev_info;\n+\n+\trte_event_dev_info_get(opt->dev_id, &dev_info);\n+\tif (dev_info.max_event_queues < NB_QUEUES || dev_info.max_event_ports <\n+\t\t\torder_nb_event_ports(opt)) {\n+\t\tevt_err(\"not enough eventdev queues=%d/%d or ports=%d/%d\",\n+\t\t\tNB_QUEUES, dev_info.max_event_queues,\n+\t\t\torder_nb_event_ports(opt), dev_info.max_event_ports);\n+\t\treturn false;\n+\t}\n+\n+\tif (!evt_has_all_types_queue(opt->dev_id))\n+\t\treturn false;\n+\n+\treturn true;\n+}\n+\n+static const struct evt_test_ops order_atq =  {\n+\t.cap_check          = order_atq_capability_check,\n+\t.opt_check          = order_opt_check,\n+\t.opt_dump           = order_atq_opt_dump,\n+\t.test_setup         = order_test_setup,\n+\t.mempool_setup      = order_mempool_setup,\n+\t.eventdev_setup     = order_atq_eventdev_setup,\n+\t.launch_lcores      = order_atq_launch_lcores,\n+\t.eventdev_destroy   = order_eventdev_destroy,\n+\t.mempool_destroy    = order_mempool_destroy,\n+\t.test_result        = order_test_result,\n+\t.test_destroy       = order_test_destroy,\n+};\n+\n+EVT_TEST_REGISTER(order_atq);\n",
    "prefixes": [
        "dpdk-dev",
        "v2",
        "18/34"
    ]
}