get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 21375,
    "url": "http://patches.dpdk.org/api/patches/21375/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1488562101-6658-18-git-send-email-jerin.jacob@caviumnetworks.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": "<1488562101-6658-18-git-send-email-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1488562101-6658-18-git-send-email-jerin.jacob@caviumnetworks.com",
    "date": "2017-03-03T17:27:59",
    "name": "[dpdk-dev,17/39] event/octeontx: add SSO HW device operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "0f9606b75019b79bd97baecf3a691962327535e2",
    "submitter": {
        "id": 305,
        "url": "http://patches.dpdk.org/api/people/305/?format=api",
        "name": "Jerin Jacob",
        "email": "jerin.jacob@caviumnetworks.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1488562101-6658-18-git-send-email-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/21375/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/21375/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 697E3FAC0;\n\tFri,  3 Mar 2017 18:30:07 +0100 (CET)",
            "from NAM01-BN3-obe.outbound.protection.outlook.com\n\t(mail-bn3nam01on0081.outbound.protection.outlook.com [104.47.33.81])\n\tby dpdk.org (Postfix) with ESMTP id 64C0DF97C\n\tfor <dev@dpdk.org>; Fri,  3 Mar 2017 18:30:06 +0100 (CET)",
            "from localhost.localdomain.localdomain (14.140.2.178) by\n\tBN3PR0701MB1719.namprd07.prod.outlook.com (10.163.39.18) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.933.12; Fri, 3 Mar 2017 17:30:01 +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=sFYWo5T3XuAGvTx2G121N/9FEhOgYIyM031WEf7tFsU=;\n\tb=lGqzrJDjyql/ySiiV10BRGMC5L2Q5pKpRZsez0NkdBiz/qSV6OSKsA/F1wd1zthLRMqNjnvYh5KdPqTy3ufUHhPvd5cU78TMUvj9XzS24/ZBk1oe/EToQ5LAWc2OkhpzVWbuT/HO/UeeDdx2G7/oLqBljomIW96miiqHHdCCor0=",
        "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": "thomas.monjalon@6wind.com, bruce.richardson@intel.com,\n\tharry.van.haaren@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, \n\tnipun.gupta@nxp.com, santosh.shukla@caviumnetworks.com,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>",
        "Date": "Fri,  3 Mar 2017 22:57:59 +0530",
        "Message-Id": "<1488562101-6658-18-git-send-email-jerin.jacob@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.5.5",
        "In-Reply-To": "<1488562101-6658-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "References": "<1488562101-6658-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.140.2.178]",
        "X-ClientProxiedBy": "BMXPR01CA0021.INDPRD01.PROD.OUTLOOK.COM (10.174.214.159)\n\tTo\n\tBN3PR0701MB1719.namprd07.prod.outlook.com (10.163.39.18)",
        "X-MS-Office365-Filtering-Correlation-Id": "2b378ab7-e626-4b5f-8dde-08d4625aedfd",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:BN3PR0701MB1719; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN3PR0701MB1719;\n\t3:sEXIi+nat2S9gX/WNDniV9BesbxzvJz6KlA9TEbRVmHhD7dc6lwlecCxBP7Fk54ZUG12dFlj4jAErbFRU09Yxqe2R4uXXwNHKYSTznXvMDpukaYhJNf+6M9fFtvMgpTbS/hQrS9MR+cEiL0xiwydD3xdR8pFU/3EmUXRYy0NZXrnUjgALIVOthcrLH7lpwgRwSgxDd0VUItIi24SqJ6pw5m4jextEUKi+boFJrNMX8+47eIAr/EDxZK1yDZrBNtTqUTonysE9XYhL7HoQ4f+cA==;\n\t25:FKKKxU5bPTpJ3wcH0SDIviFlLVzl+2xGKmXa39bZE2eQ4CVzDVP4EW6EIR0oJV++e0Lkywt3ar0bF3R+P+E+gc2B/Xrxvr9egmEs0JY6nVM6FqFD5Tp9eX7ArrnYgFlTY7ZSmkZuxtvbBBIGTi7HDXuX5qvSqLIlRAFd0PaVEzRxpCpGuQxanKcj4wguc+HgFt0apL85nhPeb+bW/y45Unf4RC6qjjdvhZiSyZ5vGecmgEcoZfaUGkqOuHvm7dgeKHen2oSxIVxXbHCapciD6kCN0vB8hTy0WKn09QU8Iak4iTjrEFygmAR+BDV+XA/4l5BdrxcOe+3pMPlGzf4+LyCWDW9+LbmZ7mWy2fYi1Ct1+bxzPQFvF3uFU2tfnx5IIbWJLemiDPM9dxGyqcRQlkocNbE6v/u0XNw+gwnPPsHaFEYFKgigs1qitNnql97aliPWXqS+pqxE628R79lPxA==",
            "1; BN3PR0701MB1719;\n\t31:lsD8IBgTt5EgiSMTSJln2m0nD/ZBAVBAro//ukN9g5rTBFGY5zl0BVOOQRiuogKv9IM6SV+7FxJT0j2I+Wijca6m9EUL69rUa54DTIBZgoGg/K2yoOl3UudiYvuVvFUfP457iyJt/Ja6/He6aHOLToUdkch0VEeG0/roe9oKlPdjrqLVuZrKQcjNYeCq92vxWwaXsxXXQ6x9unBr5LTtyMMXiuMRZOCLxpPQNqmlQFp6yESx++5IUd46BE3B2Nr9;\n\t20:Nb9QatLKtoPffy8PHNtn+A7+uGyG0HU018KZkkcxMYUA6d7tEtRlCEUbTePajyTsv5bRftjccs72NppcX+6olOdZYqVBCJBFlIkbbax1HQjW5utRlgT2Lh856EDkFGrH9dV64juxoV2M090iVVqnbvEO2HfuklYkojn/C0vu3+5IDIzZI2Pj/oeNw9hQIr2dwlybHX9KLrEwhC5v+0mZTmrJMpP+odC5sNuF4jpTxoZoWPa+5TbzQK9j0uKM+5+ptxw7twezlUGGIIwfjcdjCd+TbURtbRWVpvzlIk9uvpt8635Su394iQIYq7cQH3+WL4T26FxNJvR/dubQODQ7Yz7HejqqXj1sqHAeMXlmHi/3evhoS/mtVl9whLNAWXsLjCCkWaiz86JJL8xqw0HnebeTepwKhr9IQWn3l8l27zh5cLiE3gQdGbxLc2jOoK2nzvqEXRJrVHTWz4+X/Vg9NsPe6tnrGDfx9JB1NTXGlXuBTJYK4vQiweOGlEFRjBcuR06w6JotvW/0qHFH00ko7LNEiNUrkc++eobkVDGDGcvNv97yeZlbTboSUxGt90FfP6DOymd4wfrZyeTOmO2ZTsCuQEoLlkH5zLB7fsbQeHM=",
            "1; BN3PR0701MB1719;\n\t4:NuVFrHHty23rBYoNK9Qzd9PvD/w6rZDFGrW4UsPitVqpchJZyJQExRrHxolVku656ZTV7QiGVpyQGSF9E+vBxX8Q7Sa2vpdugxJrFtXhSgohqOjuD6ApQvpzbUjRcm0UJZNTLoJXhgbVgSVVBJLWJ9sko59xG8DiPwa/fxGlNKPtSfZdRIyj2jTUm9qg4gdDNTTTM54SSfupj682sEIG5tKmLLO9nscqx4kyICVrkZST7pzCwj3nKYLdLuB/yLULKRTTmkxcmpM4yHNWJCuRIgIw6BYn1OdKPVRki2iOlTbukWxnXF2jRywXyxzF4NBAdoNj5MQEyBCn6gOnkbjy1cV8bBABwl8bJi4nj3Xu7SSvqbroPePg7ruBlC/aLAt9MlzzrgtnKoLQQuai2Czu+RfGSv9f+vEfWiGgJc/jMaw2vgRgX3d1jq2Pl23uX7JHl6Oj8Ka+x1xol7Q4j5A5F1uF8jUpwwlYNdHiPB3y+zZopLidCZG26hxTfi9JiVZ6RvPNRiWCD3h5ObiHYdwZ2xCquGNGZypgk2VW6fYRakmaxctJkj2z76qQ2aLVaqn6/hHraOcmuCVGzh1vryfTq+ksjmCXHGAmtImebNdZ3Jw=",
            "=?us-ascii?Q?1; BN3PR0701MB1719;\n\t23:SH2gnrNnYMwpsiGF3aVLffDdTKEFa/CEkUi6b3R?=\n\tUasq/McKSgLLWpHY/uj64kiBU3f6zue70AaxYZzTQ8+sK1zvhX+97YHDZcBUnwdkaZarOIca5XZy5GFkR+Ay42CoyT41km7tKNMfs+5l4AXt9aTOxWiEDtr6/SR3ce61ygXhPsVWP/bFOAV+0RAUJjum3FgdzLDhtrrzSJIzisQnhTxERH7FEZHDt9hxqh523j6Is0VEofqGoSbGJayrZAz3c9yhVmZUwpV4XrAHGkpdBq3GCurL3FWEhJGgluhTrMQnz2Ksmw5W5Kl9pPDsD2XUHljh/tA9kuGT0IM4tB0ccWZt5H0m+AcoGb1+PZB7DiwgOV/XmOrWB5UFOLDMh64wt9ummEIFEC6ckVLoafu9Rj3e2EZ8s2LB/v3CK18LWmKBlEZ7YPIxrgOYbCHTZ8isURJuP7v+83s3q4MGLA+onjX+X46QuZyNzcoIuBDDEbL0hMCupQTG+MUoq8e6WpSZL3cXVa/x45MhYrKtMBpE1j/uyh+DUZqctLILTHDVwM/JN7xGVFnquIcFju/f0DGgUp5KqZFUH3E57moxlJVgexXNfeX4h8wLUBs9QSnh45eb+YOaQ4FhqBKi3ufLDyPzC7tK9MF2owkBKURaRCBeLB8Qgdv89xNVLLr+k0DfNf4yJV/jLEVAomsZy+e9tiuoa8q2SIUgtbHqAbPSXg+WEc7XZPD5BGtKD4XEninqvgh1CwLMrQ+xuJpJ2oLTBeC8OdVgeXPZPKQq7y/JtcfMlVgItzkxyOP+beU4yVf2T+UbB87ZaXkRpWf4jqHOHmo23O2fBcGMTWPYEmzqN06/DIrWyoopdimEojLfPY+pbm1f5bARBe6giRtqWGpAp6adFCQiSIoyB2dQBNC7034Iceok3m7M7mkB2BZsRm5xJ2zsj12kQBulBtVg1AVx+RtsdXLYKBwYYxP1j2x0CmMpGIel7zQW6DBlb6HU6JKNQeBPhPhoVU64anV3vE1jReedu71bKL1IJ4IeSKRMIu65RjoTHDH8wThO235gtKeR3/H2o0X2C+3pipklVR0rNfy0JInfmXUhU8JOZ+yqqiV5yRawuyiD+OoYfhHvs/zlpWihDygFlDCHubXedxM6G7yBFfTgkVVAILy1lgvLJBY2e/g==",
            "1; BN3PR0701MB1719;\n\t6:V1qyTMm62Szm+1NNB+HCHxj4/bWXUlskW+Yd0q6kR/PZ95QFjIpEKCYmDLJ+gpiaEoZfKfDYBiy28MfAvkxmp3vC8ZPpR6X4IvSfJFm3wfyriEsPr/DpOXS5eDYw4jUgTotzgpiD65lsKbhqm1zV+nEIwBudluo7Y1pSuuxtZKDPjksoMtY45bsSRsWmzGPSj80UE4XX57pHYRpsdQeYwJYzAB3P5aeSqZWUWhr05Cz1zQx/oCuaqmgjm2LieHg4oIX/uq3vUzlyHW8sPKsfxL447d1YqOPhWQF9ioAIjWB+iczHuq58Py1UjCSGounR286CoqQH0vEdpUsiEygNT49iIUnFEfiv0jdDlfBSRfzGVr0HGZDkBlVS7UA2HXRns3rfnKuDXn8Ngum70V9eZQ==;\n\t5:UzxbaVD86onqQb5ZibPkUtpPFBWxSVRIWVlIePhnGu55GOqPRbVZyprsNwecl7Aa159Q9/JkIWaUthxFtXHmlp2eJmR9Cm1+Ot7oqPWxI7Pw8YHx+dtr0j4jfcOZRgOLDrJjl/lDBBWEgeEGSdPXwQ==;\n\t24:tdZ6/EfDky9stejPOTHFj4MccJNoXTTkUnxf3+GMFsP+Ol6dqIL/uXMvwsjt6ZOuYi+LDskil4N/3DOPbiHnvS/4w1Kqbox1d6zmDN6hQkQ=",
            "1; BN3PR0701MB1719;\n\t7:x4LMwEN0/6O1UaHgVKxowS5pp76uvFYebdDavX/r9GpTehQvso+EU8JvWi8RnUX4TUh2cOxrTvEbmhbPAI2s378tG4R4BtcTWweMr+pSwJf88311eJbsHPbX9v8wWMxfQwjRR7NnVb4VEgwJ8k+npvAfgbhxzkGVpfFcsiYxFHWVBPzqO7Fqe1zsC9bHeaeMH/quJ6bpRzEHs36EuxP0uOJriEUa8ESY78bwyQyBFsOMOZP7vVeQdKQupZhAFA1ZkFla1UICwvzi6m25RzZHcmLrkvIU/0Ep5dA5H+W5GZuu0d4MuQvFsbQYH+YZdCMmYznla1lBYIBA8eM/9Y1LlA=="
        ],
        "X-Microsoft-Antispam-PRVS": "<BN3PR0701MB1719C6E8DF2584BBE9C0F334E32B0@BN3PR0701MB1719.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148);\n\tSRVR:BN3PR0701MB1719; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1719; ",
        "X-Forefront-PRVS": "0235CBE7D0",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(3846002)(50986999)(6116002)(36756003)(81166006)(6512007)(97736004)(2361001)(2351001)(6506006)(5660300001)(42186005)(50226002)(8676002)(106356001)(8656002)(2950100002)(2906002)(25786008)(47776003)(6486002)(76176999)(33646002)(7736002)(107886003)(42882006)(66066001)(110136004)(4326008)(38730400002)(6916009)(305945005)(48376002)(92566002)(5009440100003)(5003940100001)(50466002)(189998001)(53936002)(7099028)(110426004)(309714004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1719;\n\tH:localhost.localdomain.localdomain; FPR:; SPF:None; MLV:nov;\n\tPTR:InfoNoRecords; LANG:en; ",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "03 Mar 2017 17:30:01.1727\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN3PR0701MB1719",
        "Subject": "[dpdk-dev] [PATCH 17/39] event/octeontx: add SSO HW device\n\toperations",
        "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": "Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nSigned-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>\n---\n drivers/event/octeontx/Makefile       |   5 ++\n drivers/event/octeontx/ssovf_evdev.h  |  30 ++++++++\n drivers/event/octeontx/ssovf_worker.c | 140 ++++++++++++++++++++++++++++++++++\n 3 files changed, 175 insertions(+)\n create mode 100644 drivers/event/octeontx/ssovf_worker.c",
    "diff": "diff --git a/drivers/event/octeontx/Makefile b/drivers/event/octeontx/Makefile\nindex 6e8227b..c921303 100644\n--- a/drivers/event/octeontx/Makefile\n+++ b/drivers/event/octeontx/Makefile\n@@ -46,9 +46,14 @@ LIBABIVER := 1\n #\n # all source are stored in SRCS-y\n #\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_worker.c\n SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_evdev.c\n SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_probe.c\n SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_mbox.c\n+ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)\n+CFLAGS_ssovf_worker.o += -fno-prefetch-loop-arrays\n+endif\n+CFLAGS_ssovf_worker.o += -Ofast\n \n # install this header file\n SYMLINK-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)-include := rte_pmd_octeontx_ssovf.h\ndiff --git a/drivers/event/octeontx/ssovf_evdev.h b/drivers/event/octeontx/ssovf_evdev.h\nindex 16bf3d5..16846b8 100644\n--- a/drivers/event/octeontx/ssovf_evdev.h\n+++ b/drivers/event/octeontx/ssovf_evdev.h\n@@ -129,6 +129,36 @@\n #define ssovf_read64 rte_read64_relaxed\n #define ssovf_write64 rte_write64_relaxed\n \n+/* ARM64 specific functions */\n+#if defined(RTE_ARCH_ARM64)\n+#define ssovf_load_pair(val0, val1, addr) ({\t\t\\\n+\t\t\tasm volatile(\t\t\t\\\n+\t\t\t\"ldp %x[x0], %x[x1], [%x[p1]]\"\t\\\n+\t\t\t:[x0]\"=r\"(val0), [x1]\"=r\"(val1) \\\n+\t\t\t:[p1]\"r\"(addr)\t\t\t\\\n+\t\t\t); })\n+\n+#define ssovf_store_pair(val0, val1, addr) ({\t\t\\\n+\t\t\tasm volatile(\t\t\t\\\n+\t\t\t\"stp %x[x0], %x[x1], [%x[p1]]\"\t\\\n+\t\t\t::[x0]\"r\"(val0), [x1]\"r\"(val1), [p1]\"r\"(addr) \\\n+\t\t\t); })\n+#else /* Un optimized functions for building on non arm64 arch */\n+\n+#define ssovf_load_pair(val0, val1, addr)\t\t\\\n+do {\t\t\t\t\t\t\t\\\n+\tval0 = rte_read64(addr);\t\t\t\\\n+\tval1 = rte_read64(((uint8_t *)addr) + 8);\t\\\n+} while (0)\n+\n+#define ssovf_store_pair(val0, val1, addr)\t\t\\\n+do {\t\t\t\t\t\t\t\\\n+\trte_write64(val0, addr);\t\t\t\\\n+\trte_write64(val1, (((uint8_t *)addr) + 8));\t\\\n+} while (0)\n+#endif\n+\n+\n struct ssovf_evdev {\n \tuint8_t max_event_queues;\n \tuint8_t max_event_ports;\ndiff --git a/drivers/event/octeontx/ssovf_worker.c b/drivers/event/octeontx/ssovf_worker.c\nnew file mode 100644\nindex 0000000..8a96076\n--- /dev/null\n+++ b/drivers/event/octeontx/ssovf_worker.c\n@@ -0,0 +1,140 @@\n+/*\n+ *   BSD LICENSE\n+ *\n+ *   Copyright (C) Cavium networks Ltd. 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 networks 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+\n+#include <rte_common.h>\n+\n+#include \"ssovf_evdev.h\"\n+\n+enum {\n+\tSSO_SYNC_ORDERED,\n+\tSSO_SYNC_ATOMIC,\n+\tSSO_SYNC_UNTAGGED,\n+\tSSO_SYNC_EMPTY\n+};\n+\n+#ifndef force_inline\n+#define force_inline inline __attribute__((always_inline))\n+#endif\n+\n+#ifndef __hot\n+#define __hot\t__attribute__((hot))\n+#endif\n+\n+/* SSO Operations */\n+\n+static force_inline uint16_t\n+ssows_get_work(struct ssows *ws, struct rte_event *ev)\n+{\n+\tuint64_t get_work0, get_work1;\n+\tuint64_t sched_type_queue;\n+\n+\tssovf_load_pair(get_work0, get_work1, ws->getwork);\n+\n+\tsched_type_queue = (get_work0 >> 32) & 0xfff;\n+\tws->cur_tt = sched_type_queue & 0x3;\n+\tws->cur_grp = sched_type_queue >> 2;\n+\tsched_type_queue = sched_type_queue << 38;\n+\n+\tev->event = sched_type_queue | (get_work0 & 0xffffffff);\n+\tev->u64 = get_work1;\n+\treturn !!get_work1;\n+}\n+\n+static force_inline void\n+ssows_add_work(struct ssows *ws, const uint64_t event_ptr, const uint32_t tag,\n+\t\t\tconst uint8_t new_tt, const uint8_t grp)\n+{\n+\tuint64_t add_work0;\n+\n+\tadd_work0 = tag | ((uint64_t)(new_tt) << 32);\n+\tssovf_store_pair(add_work0, event_ptr, ws->grps[grp]);\n+}\n+\n+static force_inline void\n+ssows_swtag_full(struct ssows *ws, const uint64_t event_ptr, const uint32_t tag,\n+\t\t\tconst uint8_t new_tt, const uint8_t grp)\n+{\n+\tuint64_t swtag_full0;\n+\n+\tswtag_full0 = tag | ((uint64_t)(new_tt & 0x3) << 32) |\n+\t\t\t\t((uint64_t)grp << 34);\n+\tssovf_store_pair(swtag_full0, event_ptr, (ws->base +\n+\t\t\t\tSSOW_VHWS_OP_SWTAG_FULL0));\n+}\n+\n+static force_inline void\n+ssows_swtag_desched(struct ssows *ws, uint32_t tag, uint8_t new_tt, uint8_t grp)\n+{\n+\tuint64_t val;\n+\n+\tval = tag | ((uint64_t)(new_tt & 0x3) << 32) | ((uint64_t)grp << 34);\n+\tssovf_write64(val, ws->base + SSOW_VHWS_OP_SWTAG_DESCHED);\n+}\n+\n+static force_inline void\n+ssows_swtag_norm(struct ssows *ws, uint32_t tag, uint8_t new_tt)\n+{\n+\tuint64_t val;\n+\n+\tval = tag | ((uint64_t)(new_tt & 0x3) << 32);\n+\tssovf_write64(val, ws->base + SSOW_VHWS_OP_SWTAG_NORM);\n+}\n+\n+static force_inline void\n+ssows_swtag_untag(struct ssows *ws)\n+{\n+\tssovf_write64(0, ws->base + SSOW_VHWS_OP_SWTAG_UNTAG);\n+\tws->cur_tt = SSO_SYNC_UNTAGGED;\n+}\n+\n+static force_inline void\n+ssows_upd_wqp(struct ssows *ws, uint8_t grp, uint64_t event_ptr)\n+{\n+\tssovf_store_pair((uint64_t)grp << 34, event_ptr, (ws->base +\n+\t\t\t\tSSOW_VHWS_OP_UPD_WQP_GRP0));\n+}\n+\n+static force_inline void\n+ssows_desched(struct ssows *ws)\n+{\n+\tssovf_write64(0, ws->base + SSOW_VHWS_OP_DESCHED);\n+}\n+\n+static force_inline void\n+ssows_swtag_wait(struct ssows *ws)\n+{\n+\t/* Wait for the SWTAG/SWTAG_FULL operation */\n+\twhile (ssovf_read64(ws->base + SSOW_VHWS_SWTP))\n+\t;\n+}\n+\n",
    "prefixes": [
        "dpdk-dev",
        "17/39"
    ]
}