get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 21364,
    "url": "http://patches.dpdk.org/api/patches/21364/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1488562101-6658-7-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-7-git-send-email-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1488562101-6658-7-git-send-email-jerin.jacob@caviumnetworks.com",
    "date": "2017-03-03T17:27:48",
    "name": "[dpdk-dev,06/39] event/octeontx: probe ssowvf pcie devices",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "83e417d35874815555cc39be1e1e1eaec77b2302",
    "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-7-git-send-email-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/21364/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/21364/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 487EAF978;\n\tFri,  3 Mar 2017 18:29:25 +0100 (CET)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0063.outbound.protection.outlook.com [104.47.32.63])\n\tby dpdk.org (Postfix) with ESMTP id 33C44F961\n\tfor <dev@dpdk.org>; Fri,  3 Mar 2017 18:29:20 +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:29:15 +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=renIYwRx/ZEAXWyHGjS/vN3rUoBrzA9SbGaCp9bmLWc=;\n\tb=UcJQoKiqq+/IuYKxKjpRpYcIHK2Ia5ouZr3la4Wj3fNu+cgMpqwTjhMHXQ2PT5zls/GdFX8hlFO9vrN1O9IOA6Wjcfv1qtNVB76BfqyxMv74eLUZVrUoiuCKTBIVa5KMzB9mDb+sCUPNuwJsUW2VW9R6bxQkUYy2029Zv2OTcdo=",
        "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:48 +0530",
        "Message-Id": "<1488562101-6658-7-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": "74d97e07-aa13-4171-b3f2-08d4625ad2a8",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:BN3PR0701MB1719; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN3PR0701MB1719;\n\t3:4urpu44eDd/2mYbGAb6LgQM3LCvGLtqWGPjbHinzmrj0ty8Da7+OxzKtNzDKZKQ0FQp9k3M+KKql+fNL0K2B0MBmaMxMSBa/Y5B6arQ8iMimO87WFs4o76jqBqJbCVC5Ks8VXFVGsjVf+UuLt5auoXFi1tn44Lr+VdQYN/9GGbmdcBp+kDdxylxKGoJgRQz4zErPFIwPKL9uRli7dgWm8R3RiMWgG/N2EE9RPQPGzqXOxYndbr9kGWC1kSF4blzGJ39quGOsJABpD5e88L33ow==;\n\t25:eQADBC3/fGjLbelN8DLynx0gmq6O5aY+aHJUg5mGKXXT74opFQGyZJXdgVup6+gF1GcMJDlEogHnRoieYPKHFeyafPUAvgAOG37LQK+OrbTb1O3upWJqtLkL85ovV69pH7YhTDVbkwShc9wBdZDcE1xloNE8I5Au51agxFkYib19gZD3DxBlqYjibjkpUgBKeI61tAG7pveo/KYLQuBQRUmRuINhgv8KREceVuka8cfKn2HnosxTIiTG5epvxYoYlfX1FU0+apCWlsK6Wpgo/Y+/MWTo7srcC5p6WjsFzQvro1if08pAVnCCqoJpeIqTcglV5Ym8xwkEiRiO8aMwKcpdY7emFjPesDwlKNk7zXwj8bdldgX/q7HDVo7tL5//3sASWHXfO+oM3YCC7BMA7H8A3f/cd3OD3KvT1dDJm/pSHfYx3YYbMowt8dZtkcxfMKW1ub232cRsXmk0PmEzFw==",
            "1; BN3PR0701MB1719;\n\t31:dtoXERakvV8MoTtHEShDA91kcmvl3CUy+L1K4bPBKGbgpOYN+WG4cvsDOpT2iE1d3s+h5/XhL+10Ds6y2WN0uvrsjfG8joEBCz9OC5CcsLxiOzCgoZhLToyiTF7RxRJ2gAxqv40u2Oq37uExyphhhVT5sOMLQqunwIidjO8sLBF2Ni3xAm44pvAVDySHiPUxdNHPRYiaGe+pY6XC7zQwdk/cbVt4/ISCsRRlIairGOA=;\n\t20:xRCw1BkOWxvprghxD1NgQS1nTVLFyhzMqFF0ZcaRILFepbHaqm9TnyDLKeDA7Saj/t6SI2s7gXK9NvYcsFeMKXOYJfIO8OhCCW+Gk2iyxrVjoyHNhqApA91SD7ii5wC/GCzr8f0/F1GJdJK/a/FubSiSg49877U1R+3H0BXbHaqOsCWxE4O/xCdgHV8JBuJ9QkXyaM87Wp+LLV5L5Zyq40jQVDxukAElj9/sbU13v38iv/OklFzxbB3ge/ArvsSLvEyoqciQzu+TBbf6FRoAKcHS5AKZFV3KUWryeJVium4NtfWTMsp3b9hMedfQ1YYJa2uOMgbL7YKeIHPw83VAijALlXLIINnNyo+cKsYF2IRKbyuNTDmbpwv/OegYgCNqhBUwNqv29tLAUu28XsbKTLT2eNtYMUr6VzyWFyTxG8NtqHobu55oa8owKbRNAF7xyTZM5d8CBX6V45OYrfaTs3tnhtfG7G418n3yfMxwQASCvVcgQ5hbyycJrKAjyphu0MeGaCBXt4B+qibt3sqH4ZC5qkpZlzVFhloIZ5X1UEQH77QcRmniNl0oKS4U7rnmGYFNnfa/zTjx+VRrqf9UuryKOPqQt9cxLrmsOMhYtYk=",
            "1; BN3PR0701MB1719;\n\t4:5Z5Yk/jnDfMM2KLnW2c/z86msOuZCFumu9X5WiTUl62AM9qU7Omp/r/yWBGYhXi53lUl75bvrjeXyjCy3WH+7PXA02OKtzsq4/1adsmYNDWgUeYnRc2BynaQ/3LV5SvVCkFS8HSjhIf2yu/dGx7YOyr9HBoq0BLeQTmEPEh47PM9CT7u7OD1IepSFxZM4U2vVU0sG97HMjtiFgs3j/VGHFDy9/VBQqQbQV4fPgFVAGX/TequaS/GKVvXNcGUGiM8qs0CCa38dzztKqXmnaw63U4tF+aHIwiLFHSCd52v/ntB1KqzsTB+bXWTTgm3VFvJ2jD6bgbY7Ao0Zan1sDd91oaVJuY8CuSJcySPHwwf+Zb4QZjc3gmLDPjh02ehiDc6xYIzi5BgWfu/Um1Su/CU9NOqjE+KWUuBJ4J+YXOjKUTQQVQExyj6Rj9O+kubGCoLqcGWBin5YIMBFG+FJTXoQ4HOeiJ4Y/oCPHCNbyVRTnI+XjxkcMd1U/6V9wgZI1VHfE4OUfWEzwGuG3oWv/QixfItaULeo/hjl+4Win2Bo98rIQohFD5hwVRzydimU5mZ3gSgVfg+1uR9theww21Ep7se4wleNcAWFKIZqtIi6zc=",
            "=?us-ascii?Q?1; BN3PR0701MB1719;\n\t23:4ZAbXszw/8vlXvGPUmnF5O91y6L60hjYw7NL5iE?=\n\tPQejx0Uu12QRou2idy/+knoivjiMCOZytSJ2JtnzkFMFroh54Ooh97DwYR7FQOPJtVAhUAA+/WFjNhI+qDjjDwJAgL6V3xsaRQSstboYi2EXN7KXXlElA7ccVGYcVQeH/5XYuEzxpl7JEiTID/G0FvzietgDLvzO6odW6YmAt7ZQpvieQqaqye5OHVguH09gm/Y0XKJldz2tXihhUk1F05ek3CBWX1CO9hZvEutIDPhrbeGRlk9AP/KlafFZ6j6e6v0OQqqmptMFBOmfFoj/G1iHjixao6ZJxqNeT6n4GT0mm35ZwcjdPGQbfrTpwOjIKW90aWogQLoTJhDVuq+PcmjPVUewkYr8Z61YaHLR3J8+sLje5HZ4N5eJsMEHKOgdgdnc7uB0eqLWu5dgMKHiFPmKhgkqclNEPzcu1EJp73X4NfJLKWLWl9449tOA+uPqNWvYIr3qyY6/Df5xB1ZHLibPol46mfD7LkGWWfHegGBhtpYPvDypNttsDMZfIh/etitzNAim8Yw6hpBurKrhq+XngkpDxZfelaReIi8nS1q8Lef0N08sy9TqdfNJwVV8IwZA+3B5IuZGWQ4msH21jituf7hlvOFRIWNtburmRK+HWbSsXcPgxAZ3t8fl3cmjjqs+/lIVhbFXRpTac8CDG42DHlhBxPNnPCog7JATmtLBXJvcC8DyQpEiDJmmNu93bVYp7Da1dMA2YxmOqt6VEZYECbbowZYrxmOCP1wEWwFUfmxvD8trmhJlLYO5BI8fcJFbUpzXHxMaJIpG3ZrfoDGrtyltC8piuGPVnJuq0OqnBjGJ3AZw6mHu6tCyJTJra+kAvvAACx7wI85h9loO+NNIdUVJH8FzIF10zcWBz8d1kdRG51VXzmNV7o96JnGovmvfpFeQlkKD3Guvdipl3Gm5nFPB6WqyecysTUP8FuFQQH/Inv+SkOuKPUEAY6dLOrEsogVPr2FN7YqU//wWii6PeJamznj8HazzYMxOXchiTdxGIig6JJdHrVAY3FfgKN/CYCsd/vZo39STEI4xrcjCkejggyK3cx4etOmgv/KfS2KIa8vzoaK8Jx0iGtPF13vyaW9xfjwZpE/GSugH+k2aQN+8GzMhqQHYFyvLSE87gAVktwmPJO9R81rO9WHsAVow=",
            "1; BN3PR0701MB1719;\n\t6:tc4lPFrecgR/MCmeW2S2/fiGNBRhQpp4L+9IOkLMqLKFSFp/XHTYdOrnUidDbw48FTS01wupxkQkP8UePCza1QVXbeqpr29TlesalF6F1+bHJ0f+k5HAJN82ViEhfp7eYpgZRny5IF9paKcSvlSX4ACTwwyVlgjVnbegx4fFRwJGfKW5ApSx6ZyxNqdya2DZW5dezCafZmqg6cR6Depn5M6zRDwq87WPjuTkH4w12SBqTPFftVvvfgYvC84VX5yYqsmwkajthVFZPssYMhUZrar1D+G779IE7PgS+f3UFPI2Pl/UeFRrgpeLwyUoPxMOwOrcusQK7UBJmC6FjT0cFHeGCIVbIsirD//yLnCpU+qrDfOsQ6SgB2Gwcwm2DA3LyKAXy/GAZjLRk2xHPfXudw==;\n\t5:2OCbrAicIm0B1bOa22IAY2iwGVSUH9NKxbLV4+LAiTd0N41NQ71uYwORVu+MFLgODuVEZw5f0P+04pEQlKGAG/oEYuYkNEB1Er6OVez2S6IK7IqWyV4hgEVwSgwpPW9TUzvRztdh52WeocMTPU/jSQ==;\n\t24:KfGFu6Yo+/TSG2cD9Q3AZEGVZO5QJBUNeXWNpHN2RtPEv5XZZw372W3otAK+CjqTzAv9k0UVzPs26B2TVtyQRAlr9fh4mdyWfxsr2KBYT24=",
            "1; BN3PR0701MB1719;\n\t7:2twvJey7e+CDAmSsE6oNx9RG02T6VYS9H1EaXxv46i3nJBuBcJeMKR+s6WW5pyTajol94MKM5zepN+5EHVlc32nA/rj6B0uEkWOcgKGYUDglPZuCp0/b2iZEt6m4YcSOJsahoHio6CuHCxFXhX85JhlLMHSg34uCCnwEULm54+0BBQ+VvAumiPfmY/vehd9h1jWvO+EIxOMQ9AYqZdOss5UI21/8LD3gbeyOmU+gGAaX3xgU/mZD2zObSv29lIHx3ivPmeuLxfx9PoY2Ocd26V+uh1ShlDH+kFJ5rdzb01oSkkGhKNouIC2I8XHiDodgiuxzp2X+Cy8FQBcnnW8v8w=="
        ],
        "X-Microsoft-Antispam-PRVS": "<BN3PR0701MB17191B5FA773239AAB4A2D5AE32B0@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)(575784001)(5660300001)(42186005)(50226002)(8676002)(6666003)(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);\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:29:15.3338\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN3PR0701MB1719",
        "Subject": "[dpdk-dev] [PATCH 06/39] event/octeontx: probe ssowvf pcie devices",
        "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": "An event device consists of event queues and event ports.\nOn Octeontx HW, each event queues(sso group/ssovf) and\nevent ports(sso hws/ssowvf) are enumerated as separate\nSRIOV VF PCIe device.In order to expose as an event device,\nOn PCIe probe, the driver stores the information associated\nwith the PCIe device and later with vdev infrastructure\ncreates event device with earlier probed PCIe VF devices.\n\nSigned-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nSigned-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>\n---\n drivers/event/octeontx/ssovf_evdev.h | 28 ++++++++++++\n drivers/event/octeontx/ssovf_probe.c | 86 ++++++++++++++++++++++++++++++++++++\n 2 files changed, 114 insertions(+)",
    "diff": "diff --git a/drivers/event/octeontx/ssovf_evdev.h b/drivers/event/octeontx/ssovf_evdev.h\nindex 809eed1..0a3c76e 100644\n--- a/drivers/event/octeontx/ssovf_evdev.h\n+++ b/drivers/event/octeontx/ssovf_evdev.h\n@@ -57,8 +57,10 @@\n \n #define PCI_VENDOR_ID_CAVIUM              0x177D\n #define PCI_DEVICE_ID_OCTEONTX_SSOGRP_VF  0xA04B\n+#define PCI_DEVICE_ID_OCTEONTX_SSOWS_VF   0xA04D\n \n #define SSO_MAX_VHGRP                     (64)\n+#define SSO_MAX_VHWS                      (32)\n \n /* SSO VF register offsets */\n #define SSO_VHGRP_QCTL                    (0x010ULL)\n@@ -77,5 +79,31 @@\n #define SSO_VHGRP_OP_ADD_WORK0            (0x00ULL)\n #define SSO_VHGRP_OP_ADD_WORK1            (0x08ULL)\n \n+/* SSOW VF register offsets (BAR0) */\n+#define SSOW_VHWS_GRPMSK_CHGX(x)          (0x080ULL | ((x) << 3))\n+#define SSOW_VHWS_TAG                     (0x300ULL)\n+#define SSOW_VHWS_WQP                     (0x308ULL)\n+#define SSOW_VHWS_LINKS                   (0x310ULL)\n+#define SSOW_VHWS_PENDTAG                 (0x340ULL)\n+#define SSOW_VHWS_PENDWQP                 (0x348ULL)\n+#define SSOW_VHWS_SWTP                    (0x400ULL)\n+#define SSOW_VHWS_OP_ALLOC_WE             (0x410ULL)\n+#define SSOW_VHWS_OP_UPD_WQP_GRP0         (0x440ULL)\n+#define SSOW_VHWS_OP_UPD_WQP_GRP1         (0x448ULL)\n+#define SSOW_VHWS_OP_SWTAG_UNTAG          (0x490ULL)\n+#define SSOW_VHWS_OP_SWTAG_CLR            (0x820ULL)\n+#define SSOW_VHWS_OP_DESCHED              (0x860ULL)\n+#define SSOW_VHWS_OP_DESCHED_NOSCH        (0x870ULL)\n+#define SSOW_VHWS_OP_SWTAG_DESCHED        (0x8C0ULL)\n+#define SSOW_VHWS_OP_SWTAG_NOSCHED        (0x8D0ULL)\n+#define SSOW_VHWS_OP_SWTP_SET             (0xC20ULL)\n+#define SSOW_VHWS_OP_SWTAG_NORM           (0xC80ULL)\n+#define SSOW_VHWS_OP_SWTAG_FULL0          (0xCA0UL)\n+#define SSOW_VHWS_OP_SWTAG_FULL1          (0xCA8ULL)\n+#define SSOW_VHWS_OP_CLR_NSCHED           (0x10000ULL)\n+#define SSOW_VHWS_OP_GET_WORK0            (0x80000ULL)\n+#define SSOW_VHWS_OP_GET_WORK1            (0x80008ULL)\n+\n+#define SSOW_BAR4_LEN                     (64 * 1024)\n \n #endif /* __SSOVF_EVDEV_H__ */\ndiff --git a/drivers/event/octeontx/ssovf_probe.c b/drivers/event/octeontx/ssovf_probe.c\nindex 713329c..7033ff5 100644\n--- a/drivers/event/octeontx/ssovf_probe.c\n+++ b/drivers/event/octeontx/ssovf_probe.c\n@@ -45,12 +45,98 @@ struct ssovf_res {\n \tvoid *bar2;\n };\n \n+struct ssowvf_res {\n+\tuint16_t domain;\n+\tuint16_t vfid;\n+\tvoid *bar0;\n+\tvoid *bar2;\n+\tvoid *bar4;\n+};\n+\n+struct ssowvf_identify {\n+\tuint16_t domain;\n+\tuint16_t vfid;\n+};\n+\n struct ssodev {\n \tuint8_t total_ssovfs;\n+\tuint8_t total_ssowvfs;\n \tstruct ssovf_res grp[SSO_MAX_VHGRP];\n+\tstruct ssowvf_res hws[SSO_MAX_VHWS];\n };\n+\n static struct ssodev sdev;\n \n+/* SSOWVF pcie device aka event port probe */\n+\n+static int\n+ssowvf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)\n+{\n+\tuint16_t vfid;\n+\tstruct ssowvf_res *res;\n+\tstruct ssowvf_identify *id;\n+\n+\tRTE_SET_USED(pci_drv);\n+\n+\t/* For secondary processes, the primary has done all the work */\n+\tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n+\t\treturn 0;\n+\n+\tif (pci_dev->mem_resource[0].addr == NULL ||\n+\t\t\tpci_dev->mem_resource[2].addr == NULL ||\n+\t\t\tpci_dev->mem_resource[4].addr == NULL) {\n+\t\tssovf_log_err(\"Empty bars %p %p %p\",\n+\t\t\t\tpci_dev->mem_resource[0].addr,\n+\t\t\t\tpci_dev->mem_resource[2].addr,\n+\t\t\t\tpci_dev->mem_resource[4].addr);\n+\t\treturn -ENODEV;\n+\t}\n+\n+\tif (pci_dev->mem_resource[4].len != SSOW_BAR4_LEN) {\n+\t\tssovf_log_err(\"Bar4 len mismatch %d != %d\",\n+\t\t\tSSOW_BAR4_LEN, (int)pci_dev->mem_resource[4].len);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tid = pci_dev->mem_resource[4].addr;\n+\tvfid = id->vfid;\n+\tif (vfid >= SSO_MAX_VHWS) {\n+\t\tssovf_log_err(\"Invalid vfid(%d/%d)\", vfid, SSO_MAX_VHWS);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tres = &sdev.hws[vfid];\n+\tres->vfid = vfid;\n+\tres->bar0 = pci_dev->mem_resource[0].addr;\n+\tres->bar2 = pci_dev->mem_resource[2].addr;\n+\tres->bar4 = pci_dev->mem_resource[4].addr;\n+\tres->domain = id->domain;\n+\n+\tsdev.total_ssowvfs++;\n+\trte_wmb();\n+\tssovf_log_dbg(\"Domain=%d hws=%d total_ssowvfs=%d\", res->domain,\n+\t\t\tres->vfid, sdev.total_ssowvfs);\n+\treturn 0;\n+}\n+\n+static const struct rte_pci_id pci_ssowvf_map[] = {\n+\t{\n+\t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM,\n+\t\t\t\tPCI_DEVICE_ID_OCTEONTX_SSOWS_VF)\n+\t},\n+\t{\n+\t\t.vendor_id = 0,\n+\t},\n+};\n+\n+static struct rte_pci_driver pci_ssowvf = {\n+\t.id_table = pci_ssowvf_map,\n+\t.drv_flags = RTE_PCI_DRV_NEED_MAPPING,\n+\t.probe = ssowvf_probe,\n+};\n+\n+RTE_PMD_REGISTER_PCI(octeontx_ssowvf, pci_ssowvf);\n+\n /* SSOVF pcie device aka event queue probe */\n \n static int\n",
    "prefixes": [
        "dpdk-dev",
        "06/39"
    ]
}