get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 39201,
    "url": "https://patches.dpdk.org/api/patches/39201/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1525168731-30912-6-git-send-email-nipun.gupta@nxp.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": "<1525168731-30912-6-git-send-email-nipun.gupta@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1525168731-30912-6-git-send-email-nipun.gupta@nxp.com",
    "date": "2018-05-01T09:58:48",
    "name": "[dpdk-dev,v5,5/8] raw/dpaa2_qdma: introduce the DPAA2 QDMA driver",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "80fd56ed03a7f0286d019324b4e1eda00fe429ad",
    "submitter": {
        "id": 471,
        "url": "https://patches.dpdk.org/api/people/471/?format=api",
        "name": "Nipun Gupta",
        "email": "nipun.gupta@nxp.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1525168731-30912-6-git-send-email-nipun.gupta@nxp.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/39201/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/39201/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 C8EA044BE;\n\tTue,  1 May 2018 11:59:29 +0200 (CEST)",
            "from EUR01-VE1-obe.outbound.protection.outlook.com\n\t(mail-ve1eur01hn0221.outbound.protection.outlook.com [104.47.1.221])\n\tby dpdk.org (Postfix) with ESMTP id A185C37B7\n\tfor <dev@dpdk.org>; Tue,  1 May 2018 11:59:28 +0200 (CEST)",
            "from b27504-OptiPlex-790.ap.freescale.net (14.142.187.166) by\n\tHE1PR0401MB2427.eurprd04.prod.outlook.com (2603:10a6:3:25::24) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.23;\n\tTue, 1 May 2018 09:59:26 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=4V+VHkS/7yAU7GLVDaBJeXztVtVsKRNDtSs0y9IaRko=;\n\tb=I8U7pNCvVeghGt3LbBqiOxzRe0DSSo3iLaAANQiuFYzN3zvwFHPx0tBCz8f/HokYNymADb3GO1kJgvhpBZToZavtI9w8qV2vkjfuOMzmH/DWe249F4/unkRgEBBFKCwSJezlwDbp2JML69zi0As4SMwOJjp7wJ103vYRTislufg=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=nipun.gupta@nxp.com; ",
        "From": "Nipun Gupta <nipun.gupta@nxp.com>",
        "To": "shreyansh.jain@nxp.com,\n\tthomas@monjalon.net,\n\themant.agrawal@nxp.com",
        "Cc": "dev@dpdk.org,\n\tNipun Gupta <nipun.gupta@nxp.com>",
        "Date": "Tue,  1 May 2018 15:28:48 +0530",
        "Message-Id": "<1525168731-30912-6-git-send-email-nipun.gupta@nxp.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1525168731-30912-1-git-send-email-nipun.gupta@nxp.com>",
        "References": "<1524570589-20148-1-git-send-email-nipun.gupta@nxp.com>\n\t<1525168731-30912-1-git-send-email-nipun.gupta@nxp.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.142.187.166]",
        "X-ClientProxiedBy": "PN1PR0101CA0028.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:c00:c::14) To HE1PR0401MB2427.eurprd04.prod.outlook.com\n\t(2603:10a6:3:25::24)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(48565401081)(5600026)(2017052603328)(7153060)(7193020);\n\tSRVR:HE1PR0401MB2427; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; HE1PR0401MB2427;\n\t3:PthjKuCRzyjr0XV8O9lJl9kLpio3blvV3sDLb8OatEc7glql2h98q7W1r6+X8oKzRnYXH9vnhtWXSufAG7V/T2nrI8Y8Q7SpvcC5QPonOsuZCLi5RM9AFIGxe0RiynmPDSUW3zej3A7zAI0S7hTLysqpQ0dKke1nZjiRTkDP+y+mgnSTCTYIi1CBPdPhpgb5oW4LZZclOLoz3+3g9rXEWNgEGZ22ue/Jwa7s3fM58ZZE+BWe83bwt2XhGU+UD7Ux;\n\t25:JLZJMjdvYft/goTrYULXmX8vwj2sFqvIJtjKvxAzGdmdWCR4pjgQmAUVLyDidR0RtxWmLuvQvfoMgqGxiTCYZ0A1ShH4Rn/F+gSrJ/V1aN4C32rEQWbwWJQVG3obhjOgvEsR3vGIg9ebA7TAQHkGmtm9ySdUSWee1eROzGiARH3pL6hyRUoN3XGiddvauPdtIx0hM6SwsFKrE2p6M868IeAvP+SpxHm9f4Eco43AI6vDJ2MphItLtrXfGXbcvyTFSrww8XOjq5nPkc4OYsc29tDCEvaR7+C/bWbk5VZko0+v2sDW4g31qE3aJ+sUFduYF/5OpMOLCKdwFUD9YxRPYw==;\n\t31:iyhJ6+ouSyRGAxPgrOBOJ5hpp1/9u0OXQCuAbC9i4Rv5hQBdF5ng2730Ke69osTq6PTnL0NHOtZo76Q2uWoDzBIX5dk3rzrhTbP3ZTekmc2hkE4DWcIJpFqZEzcT92m0KXjqZUHf7ybPloPfKDg8hF8kEqEwz/sCgPBb1lTl+M0vzuFu+rH9nwHb5Ij33nzGS0/Nr6/aHtBX9Kv0VMSnqBwMbNKEuSWJTFy16VgDjTI=",
            "1; HE1PR0401MB2427;\n\t20:bhwjpIbec8LA4iJdRm9S1DfmEcJMiTAatsMrS+rhOVanpA7wn9K499MiQ16z9EmJg6RtKsV0Rxjv3h3OgV2GqUVv4jb6i6CKNXKc6OEdwVq7TDu/VWInwM09TSuyWtWHf6RaCYwDus7oAclvQzkWb+gFqcYjj4mJvIsIYal8MoYdvMGNEmKangSEw7wDvs03lKGCojySzUcVNHBUNoGsO8Sv4gebygsJjpSxlbadsRzeatYq2aRH/ZMf1rTlLgRM260X9zZ9TcbpXX+hvh6fBlTH7K29yAeDKiGm8zrR5GuKZVp3rzZTgvEgS9aLMFbpbiMptp5vw1f5ROKgs9VMBtSYVVMmzaZAI47oO4+pQZiNKtrTwVK64UIe2jrEf0ut8MeOuW7FabYgulQFLb+GzmwY393WddgfZYA0FeSTdS8Q/2lcw7dNSr5Ql3fviX+t7D7GdCyI32tzykS03WnWrdQbsEaJDzUtKmL7QxxvYANzSC2SxpCYyhWu1kpZaY4m;\n\t4:+jZEy5S/dke9+gTNBLigouH0kFkDENNoHVAQxRcXleGms6yhq+Ojv1cz71D1rOCLWKaXXsLxggraMFhTSTkhna7auBgdEG+mDsvOQYi3Dqr8g8MxpLe+BW6L9qokd8FNJRedKsaeNv0uFhWABzZE+CXPx09gNZcBUjFT1rpaA+1WlHAhzNNxiXEvvATgbl1K0toh/XcR/jGYW/kiIFdeAFh2l0SdISpI6D/+inzMAH4vqpdjGet39HkMEH4jPsbQUwtw1FjwGxX6AXxhoJWQOZAD0XH79n9AKf3lVnw/A5wa09sSNn/IDpjwi0hw3vnqSQ2GMu0sHgGf9N1C/sXCu10IZHO+f5xkETTyUdyIFJRnoLPFjfhPWvJ18v0RGOSG",
            "=?us-ascii?Q?1; HE1PR0401MB2427;\n\t23:uwlIQWzFcBXBmx407fwpI5unfq82kgWScDDz7IK?=\n\t/0UmP9zbxed25xibw0JxgcnsaW04hZ3EW6zapglKu+EnQHYgKBAuM7fV1IAWqh9j541IS9m8z/qc5XAfgFlXChLp0P9r3P0dKxguUpacBQpyYZPgTV82noOSgqpWTY4cYIckY52MR1YPvBJjkmhUMz/ugm7vIVIcfEJDFMQfhLYdPaLYrmSiu67AuOAFM7mAhDFb3Zf5eIjvOXf2/HThzXDxnRK+KMbnXROLxVEPcIYEWxB9YpGLgsI22PFSCLJ1LdLI8i/5cyQQ/VHlekhoWUXAC1kJcMm4Qx76mdr0xdly36yY9laOWVDe+SA/53OjWYuA5x36Uhnl9Hw+KgxkSymajVWUUtpSFPBV2VBEVDsE//VLvP5PzyYfW35NGwEv+hyPQzrtZNolU5HuwaYppF7zll2ONAeL1ATInB1YRqPn+mi2oKjOeD/8xP/gjBuDxuDTwDb8RBmiM6kNNQxBYpckEoRvcq+gKVZSyWspX2bj8Z5roa4koup8t3ae+SQdnXwZB6nJxoaV4lOdanhA/dzZi2tYFShBoYpsofSzMaeUAlVKBBIT7QUAjaCO/1KIqSfFHpjTLPziO1u30q88KBKUdMZ4rDb+X79roQjVXOl8tvCBmE1dfh/opOz0EgR7SiM8KEObKxNV1kvxCGI/TADl8LSIBpvmaWtf3mct3awamMl2Lr+s2YvC9SzUyCnwi0oXLYJMRQi1Llxz25aJTD6ZLX4IfZUpiPgWlISj/+bDSViLiSC7f9cCWeGVJBIAf7e8r+A8eBjjfjTRX1lcNO2VltwS4I7uju9j3yhTIjRRJ4OzxBGWzZVu71v612yuD1e/fBe92eYh84SvCmFdL10eQ8ANQMheVWj2ZzwtpEwap0i/+S6z1a5udBHn1E598mMR1iqh+EpTmgGnKJcJX5Pa4yfYKYMFveEgP5gukLrU8iSb/Ji4P0aJoQDvf78Pd/nMwchFX+CEnejZOoYIVafDXfmpzUuSvS388X6BmbQu/gtNBtEryadCKC4yL31MNkk/MEHTy+RiIHa/LvRa96g4OOGQnqjxXzGfNAAeh6L25dPV7mKxPHiYCYvsWLYTi3es7YG/TCBAODezcn4TfkihiFrMBDYUtxvMH19u3PmOPDR8t93O2T1COVAA6YabyW0N2Nrn1cayy0UVyG0/Xq9L2ul2CflP/jFiZ88z2N+26+seJwG0DhqDOgWAfesXMQE1ebYp24pfc7Q5dM0m/m2NsVu+hBk3ZoK6ZemK2SdBa8f69JWW6cnHSGGPduyBXrcSTkA4aw0/I1moZ49DTZbbt",
            "1; HE1PR0401MB2427;\n\t6:bbiS8/3YHffsd1KYZb4BwDovKPbkklXH/Y7w2AjR6KqI6ycWtd3xF3I3QubsmQkNV9H/mikrhMxo/nosqE8ZCQ5GT6O05Ph4WCK8lAxDC6M0CAztwhwRmOpW1nb2FqfBgUl5lKq6SydvviftSwkp79SBRzV43QTOSY/n6CuvZAfjoaNhrhwo3o2RZWRhXpHiEfcsag3Z9VU5gZ5VESBSM7giWOCrtf4riJDh9saTZUY/vP8a/WtWZFjmyJLR8gO8kCPbWdkaqlWpaJvPej0Y1QG5gOCPJVzjZ4hsRxBYDkSBBXLGsfN/N2juWigdtUDCwLoU0iJefPhgAgCHcEXSX/MMdSm32hOgS6o3GMWL0Xg4BimykzRvbqyvxZln+WST/Z5g27+3ehqK+hdNpNz5MnlRO7J8hZGH/WsamXYVdQ1gvlNUC23jb23fyU+EZ1z5J6IMIqRHJjogipEEeyHC1/9ZxPUJHNWeER672jDssKNKDpXG8pDxQOF8ayZHKBzC;\n\t5:Rxq0hAv7wlQ/uxqhKJIBY0EPyDH/XsceeTzwI4wA5P7UsysHGDWTnZduB0W4PT9XqaCO4NhOvKabsFy/gRAbo5IY+6CXWsd+yyTwWXC4joM1JVHT9X6TKbVoJqxd/clOUoZQDv0mY5AKv4YDy3Z/dEaLV3pctoSwJUmZcomZqvU=;\n\t24:LLSGY48m3TQ2gseWilbhOMna0S5oviGWmTd6P/+44XukuB6mDsopzVbmZTtILt/aNjDwEF0EzH5yLt2BFuBfZg==",
            "1; HE1PR0401MB2427;\n\t7:WWOt4IUqzuk/eCtlWn4Q9Dp3Dpm7EUiOLqA4K9QVgC0r1U+UVgoy5VVLzo+trKMKDr8BiqrLKv9pmsjbKg7QaWbtUWQElGX9OjGir0lYBeahSuhnNq4JtgKon8O1h+NY8m3zkm7l5gRr2n2GJZaCoFUDr24taFlsyz3PpfC/xl7FDoE7kafhC33CBfuK+e2uw89mbHO+9CY0SDO00W6DiKF6QR6gS7VaOwlPVdwA1+Mxe9iZMh6a259qhrKYzHyE"
        ],
        "X-MS-TrafficTypeDiagnostic": "HE1PR0401MB2427:",
        "X-Microsoft-Antispam-PRVS": "<HE1PR0401MB2427735B0772253AB3E304D6E6810@HE1PR0401MB2427.eurprd04.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197)(66839620246622)(275809806118684); ",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(2232076)(944501410)(52105095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041310)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);\n\tSRVR:HE1PR0401MB2427; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0401MB2427; ",
        "X-Forefront-PRVS": "06592CCE58",
        "X-Forefront-Antispam-Report": "SFV:SPM;\n\tSFS:(10009020)(39380400002)(39860400002)(366004)(396003)(346002)(376002)(199004)(189003)(81156014)(3846002)(8936002)(97736004)(50226002)(48376002)(81166006)(316002)(50466002)(16586007)(2906002)(36756003)(44832011)(478600001)(5660300001)(8676002)(6116002)(486006)(16526019)(6512007)(53936002)(476003)(4326008)(446003)(956004)(11346002)(59450400001)(386003)(5009440100003)(76176011)(52116002)(51416003)(26005)(305945005)(68736007)(6506007)(105586002)(106356001)(47776003)(6636002)(66066001)(7736002)(86362001)(575784001)(6666003)(25786009)(6486002)(2616005)(59010400001);\n\tDIR:OUT; SFP:1501; SCL:5; SRVR:HE1PR0401MB2427;\n\tH:b27504-OptiPlex-790.ap.freescale.net; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: nxp.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "aaEglMRY14lIRFXlmec+852Hqaggl7R7h6QKOpDujHE9Il6GR86n1bmSEOmmGFbKxOQ4HtzTdR3NfZSy0mWdYt5LhR6JxHAPypQOiUxOpRcEyVDHfVgawcy4B0lUZnbhtB/YBdVOa9qaFIUnru6eo5Mc2/G9mhZAkLg2MnArIc6ezG7ZtLdb/eIeaLLfJQPWvmVNtekLRgghGJV5UluRruROhIzkLLIdfs1VFEQ0LfYZJ8Y16JMWVNpg8bH1YsaqODMK3vwB07SCChvP3FrYkfJM8tTvZEzYyVbhx+F+1nwHjpp6YMPFNCls88IQI0GV4Fyf9G1I5F/F4vFlD17sRggv5V9JHu6ykbOBf8izXqH/izTBOj11EyS8BXcbmkD6bWbTLuWyVPHofHeOR2F6Og6Ue+PPAlLokZ9bj/DE2ME0Ek+TXgxY1o22Bfb6VKi8cYId3VoTiiYW/k8mFpZBcd45h+WndcZi3W0tr/No61o5rOvHWeZX972kqwtpSbaZGkFBo9QEvoTqC0BAH8S09qF4DAntUrJQSCWNiss4CjY=",
        "SpamDiagnosticOutput": "1:22",
        "X-MS-Office365-Filtering-Correlation-Id": "c4ecef50-acd0-4149-73ed-08d5af4a39d9",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "01 May 2018 09:59:26.3754\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "c4ecef50-acd0-4149-73ed-08d5af4a39d9",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "HE1PR0401MB2427",
        "Subject": "[dpdk-dev] [PATCH v5 5/8] raw/dpaa2_qdma: introduce the DPAA2 QDMA\n\tdriver",
        "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": "DPAA2 QDMA driver uses MC DPDMAI object. This driver enables\nthe user (app) to perform data DMA without involving CPU in\nthe DMA process\n\nSigned-off-by: Nipun Gupta <nipun.gupta@nxp.com>\n---\n MAINTAINERS                                        |   8 +\n config/common_base                                 |   5 +\n config/common_linuxapp                             |   1 +\n drivers/raw/Makefile                               |   3 +\n drivers/raw/dpaa2_qdma/Makefile                    |  34 +++\n drivers/raw/dpaa2_qdma/dpaa2_qdma.c                | 294 +++++++++++++++++++++\n drivers/raw/dpaa2_qdma/dpaa2_qdma.h                |  66 +++++\n drivers/raw/dpaa2_qdma/dpaa2_qdma_logs.h           |  46 ++++\n drivers/raw/dpaa2_qdma/meson.build                 |   7 +\n .../raw/dpaa2_qdma/rte_pmd_dpaa2_qdma_version.map  |   4 +\n drivers/raw/meson.build                            |   2 +-\n mk/rte.app.mk                                      |   3 +\n 12 files changed, 472 insertions(+), 1 deletion(-)\n create mode 100644 drivers/raw/dpaa2_qdma/Makefile\n create mode 100644 drivers/raw/dpaa2_qdma/dpaa2_qdma.c\n create mode 100644 drivers/raw/dpaa2_qdma/dpaa2_qdma.h\n create mode 100644 drivers/raw/dpaa2_qdma/dpaa2_qdma_logs.h\n create mode 100644 drivers/raw/dpaa2_qdma/meson.build\n create mode 100644 drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma_version.map",
    "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex ce06e93..5ca021d 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -805,6 +805,14 @@ F: doc/guides/cryptodevs/zuc.rst\n F: doc/guides/cryptodevs/features/zuc.ini\n \n \n+Rawdev Drivers\n+--------------\n+\n+NXP DPAA2 QDMA\n+M: Nipun Gupta <nipun.gupta@nxp.com>\n+F: drivers/raw/dpaa2_qdma/\n+\n+\n Eventdev Drivers\n ----------------\n M: Jerin Jacob <jerin.jacob@caviumnetworks.com>\ndiff --git a/config/common_base b/config/common_base\nindex 03a8688..9b48bcb 100644\n--- a/config/common_base\n+++ b/config/common_base\n@@ -618,6 +618,11 @@ CONFIG_RTE_RAWDEV_MAX_DEVS=10\n CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV=y\n \n #\n+# Compile PMD for NXP DPAA2 QDMA raw device\n+#\n+CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV=n\n+\n+#\n # Compile librte_ring\n #\n CONFIG_RTE_LIBRTE_RING=y\ndiff --git a/config/common_linuxapp b/config/common_linuxapp\nindex 14e56cb..21b3fe3 100644\n--- a/config/common_linuxapp\n+++ b/config/common_linuxapp\n@@ -38,3 +38,4 @@ CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=y\n CONFIG_RTE_LIBRTE_DPAA2_PMD=y\n CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=y\n CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=y\n+CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV=y\ndiff --git a/drivers/raw/Makefile b/drivers/raw/Makefile\nindex da7c8b4..0f2b076 100644\n--- a/drivers/raw/Makefile\n+++ b/drivers/raw/Makefile\n@@ -5,5 +5,8 @@ include $(RTE_SDK)/mk/rte.vars.mk\n \n # DIRS-$(<configuration>) += <directory>\n DIRS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV) += skeleton_rawdev\n+ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy)\n+DIRS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV) += dpaa2_qdma\n+endif\n \n include $(RTE_SDK)/mk/rte.subdir.mk\ndiff --git a/drivers/raw/dpaa2_qdma/Makefile b/drivers/raw/dpaa2_qdma/Makefile\nnew file mode 100644\nindex 0000000..3b5a45a\n--- /dev/null\n+++ b/drivers/raw/dpaa2_qdma/Makefile\n@@ -0,0 +1,34 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright 2018 NXP\n+\n+include $(RTE_SDK)/mk/rte.vars.mk\n+\n+#\n+# library name\n+#\n+LIB = librte_pmd_dpaa2_qdma.a\n+\n+CFLAGS += -DALLOW_EXPERIMENTAL_API\n+CFLAGS += -O3\n+CFLAGS += $(WERROR_FLAGS)\n+\n+CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal\n+CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc\n+CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/qbman/include\n+\n+LDLIBS += -lrte_bus_fslmc\n+LDLIBS += -lrte_eal\n+LDLIBS += -lrte_mempool\n+LDLIBS += -lrte_rawdev\n+LDLIBS += -lrte_ring\n+\n+EXPORT_MAP := rte_pmd_dpaa2_qdma_version.map\n+\n+LIBABIVER := 1\n+\n+#\n+# all source are stored in SRCS-y\n+#\n+SRCS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV) += dpaa2_qdma.c\n+\n+include $(RTE_SDK)/mk/rte.lib.mk\ndiff --git a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c\nnew file mode 100644\nindex 0000000..9288350\n--- /dev/null\n+++ b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c\n@@ -0,0 +1,294 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2018 NXP\n+ */\n+\n+#include <string.h>\n+\n+#include <rte_eal.h>\n+#include <rte_fslmc.h>\n+#include <rte_atomic.h>\n+#include <rte_lcore.h>\n+#include <rte_rawdev.h>\n+#include <rte_rawdev_pmd.h>\n+#include <rte_malloc.h>\n+#include <rte_ring.h>\n+#include <rte_mempool.h>\n+\n+#include <mc/fsl_dpdmai.h>\n+#include <portal/dpaa2_hw_pvt.h>\n+#include <portal/dpaa2_hw_dpio.h>\n+\n+#include \"dpaa2_qdma.h\"\n+#include \"dpaa2_qdma_logs.h\"\n+\n+/* Dynamic log type identifier */\n+int dpaa2_qdma_logtype;\n+\n+/* QDMA device */\n+static struct qdma_device qdma_dev;\n+\n+/* QDMA H/W queues list */\n+TAILQ_HEAD(qdma_hw_queue_list, qdma_hw_queue);\n+static struct qdma_hw_queue_list qdma_queue_list\n+\t= TAILQ_HEAD_INITIALIZER(qdma_queue_list);\n+\n+static const struct rte_rawdev_ops dpaa2_qdma_ops;\n+\n+static int\n+add_hw_queues_to_list(struct dpaa2_dpdmai_dev *dpdmai_dev)\n+{\n+\tstruct qdma_hw_queue *queue;\n+\tint i;\n+\n+\tDPAA2_QDMA_FUNC_TRACE();\n+\n+\tfor (i = 0; i < dpdmai_dev->num_queues; i++) {\n+\t\tqueue = rte_zmalloc(NULL, sizeof(struct qdma_hw_queue), 0);\n+\t\tif (!queue) {\n+\t\t\tDPAA2_QDMA_ERR(\n+\t\t\t\t\"Memory allocation failed for QDMA queue\");\n+\t\t\treturn -ENOMEM;\n+\t\t}\n+\n+\t\tqueue->dpdmai_dev = dpdmai_dev;\n+\t\tqueue->queue_id = i;\n+\n+\t\tTAILQ_INSERT_TAIL(&qdma_queue_list, queue, next);\n+\t\tqdma_dev.num_hw_queues++;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static void\n+remove_hw_queues_from_list(struct dpaa2_dpdmai_dev *dpdmai_dev)\n+{\n+\tstruct qdma_hw_queue *queue = NULL;\n+\tstruct qdma_hw_queue *tqueue = NULL;\n+\n+\tDPAA2_QDMA_FUNC_TRACE();\n+\n+\tTAILQ_FOREACH_SAFE(queue, &qdma_queue_list, next, tqueue) {\n+\t\tif (queue->dpdmai_dev == dpdmai_dev) {\n+\t\t\tTAILQ_REMOVE(&qdma_queue_list, queue, next);\n+\t\t\trte_free(queue);\n+\t\t\tqueue = NULL;\n+\t\t}\n+\t}\n+}\n+\n+static int\n+dpaa2_dpdmai_dev_uninit(struct rte_rawdev *rawdev)\n+{\n+\tstruct dpaa2_dpdmai_dev *dpdmai_dev = rawdev->dev_private;\n+\tint ret, i;\n+\n+\tDPAA2_QDMA_FUNC_TRACE();\n+\n+\tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n+\t\treturn 0;\n+\n+\t/* Remove HW queues from global list */\n+\tremove_hw_queues_from_list(dpdmai_dev);\n+\n+\tret = dpdmai_disable(&dpdmai_dev->dpdmai, CMD_PRI_LOW,\n+\t\t\t     dpdmai_dev->token);\n+\tif (ret)\n+\t\tDPAA2_QDMA_ERR(\"dmdmai disable failed\");\n+\n+\t/* Set up the DQRR storage for Rx */\n+\tfor (i = 0; i < DPDMAI_PRIO_NUM; i++) {\n+\t\tstruct dpaa2_queue *rxq = &(dpdmai_dev->rx_queue[i]);\n+\n+\t\tif (rxq->q_storage) {\n+\t\t\tdpaa2_free_dq_storage(rxq->q_storage);\n+\t\t\trte_free(rxq->q_storage);\n+\t\t}\n+\t}\n+\n+\t/* Close the device at underlying layer*/\n+\tret = dpdmai_close(&dpdmai_dev->dpdmai, CMD_PRI_LOW, dpdmai_dev->token);\n+\tif (ret)\n+\t\tDPAA2_QDMA_ERR(\"Failure closing dpdmai device\");\n+\n+\treturn 0;\n+}\n+\n+static int\n+dpaa2_dpdmai_dev_init(struct rte_rawdev *rawdev, int dpdmai_id)\n+{\n+\tstruct dpaa2_dpdmai_dev *dpdmai_dev = rawdev->dev_private;\n+\tstruct dpdmai_rx_queue_cfg rx_queue_cfg;\n+\tstruct dpdmai_attr attr;\n+\tstruct dpdmai_rx_queue_attr rx_attr;\n+\tstruct dpdmai_tx_queue_attr tx_attr;\n+\tint ret, i;\n+\n+\tDPAA2_QDMA_FUNC_TRACE();\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+\t/* Open DPDMAI device */\n+\tdpdmai_dev->dpdmai_id = dpdmai_id;\n+\tdpdmai_dev->dpdmai.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];\n+\tret = dpdmai_open(&dpdmai_dev->dpdmai, CMD_PRI_LOW,\n+\t\t\t  dpdmai_dev->dpdmai_id, &dpdmai_dev->token);\n+\tif (ret) {\n+\t\tDPAA2_QDMA_ERR(\"dpdmai_open() failed with err: %d\", ret);\n+\t\treturn ret;\n+\t}\n+\n+\t/* Get DPDMAI attributes */\n+\tret = dpdmai_get_attributes(&dpdmai_dev->dpdmai, CMD_PRI_LOW,\n+\t\t\t\t    dpdmai_dev->token, &attr);\n+\tif (ret) {\n+\t\tDPAA2_QDMA_ERR(\"dpdmai get attributes failed with err: %d\",\n+\t\t\t       ret);\n+\t\tgoto init_err;\n+\t}\n+\tdpdmai_dev->num_queues = attr.num_of_priorities;\n+\n+\t/* Set up Rx Queues */\n+\tfor (i = 0; i < attr.num_of_priorities; i++) {\n+\t\tstruct dpaa2_queue *rxq;\n+\n+\t\tmemset(&rx_queue_cfg, 0, sizeof(struct dpdmai_rx_queue_cfg));\n+\t\tret = dpdmai_set_rx_queue(&dpdmai_dev->dpdmai,\n+\t\t\t\t\t  CMD_PRI_LOW,\n+\t\t\t\t\t  dpdmai_dev->token,\n+\t\t\t\t\t  i, &rx_queue_cfg);\n+\t\tif (ret) {\n+\t\t\tDPAA2_QDMA_ERR(\"Setting Rx queue failed with err: %d\",\n+\t\t\t\t       ret);\n+\t\t\tgoto init_err;\n+\t\t}\n+\n+\t\t/* Allocate DQ storage for the DPDMAI Rx queues */\n+\t\trxq = &(dpdmai_dev->rx_queue[i]);\n+\t\trxq->q_storage = rte_malloc(\"dq_storage\",\n+\t\t\t\t\t    sizeof(struct queue_storage_info_t),\n+\t\t\t\t\t    RTE_CACHE_LINE_SIZE);\n+\t\tif (!rxq->q_storage) {\n+\t\t\tDPAA2_QDMA_ERR(\"q_storage allocation failed\");\n+\t\t\tret = -ENOMEM;\n+\t\t\tgoto init_err;\n+\t\t}\n+\n+\t\tmemset(rxq->q_storage, 0, sizeof(struct queue_storage_info_t));\n+\t\tret = dpaa2_alloc_dq_storage(rxq->q_storage);\n+\t\tif (ret) {\n+\t\t\tDPAA2_QDMA_ERR(\"dpaa2_alloc_dq_storage failed\");\n+\t\t\tgoto init_err;\n+\t\t}\n+\t}\n+\n+\t/* Get Rx and Tx queues FQID's */\n+\tfor (i = 0; i < DPDMAI_PRIO_NUM; i++) {\n+\t\tret = dpdmai_get_rx_queue(&dpdmai_dev->dpdmai, CMD_PRI_LOW,\n+\t\t\t\t\t  dpdmai_dev->token, i, &rx_attr);\n+\t\tif (ret) {\n+\t\t\tDPAA2_QDMA_ERR(\"Reading device failed with err: %d\",\n+\t\t\t\t       ret);\n+\t\t\tgoto init_err;\n+\t\t}\n+\t\tdpdmai_dev->rx_queue[i].fqid = rx_attr.fqid;\n+\n+\t\tret = dpdmai_get_tx_queue(&dpdmai_dev->dpdmai, CMD_PRI_LOW,\n+\t\t\t\t\t  dpdmai_dev->token, i, &tx_attr);\n+\t\tif (ret) {\n+\t\t\tDPAA2_QDMA_ERR(\"Reading device failed with err: %d\",\n+\t\t\t\t       ret);\n+\t\t\tgoto init_err;\n+\t\t}\n+\t\tdpdmai_dev->tx_queue[i].fqid = tx_attr.fqid;\n+\t}\n+\n+\t/* Enable the device */\n+\tret = dpdmai_enable(&dpdmai_dev->dpdmai, CMD_PRI_LOW,\n+\t\t\t    dpdmai_dev->token);\n+\tif (ret) {\n+\t\tDPAA2_QDMA_ERR(\"Enabling device failed with err: %d\", ret);\n+\t\tgoto init_err;\n+\t}\n+\n+\t/* Add the HW queue to the global list */\n+\tret = add_hw_queues_to_list(dpdmai_dev);\n+\tif (ret) {\n+\t\tDPAA2_QDMA_ERR(\"Adding H/W queue to list failed\");\n+\t\tgoto init_err;\n+\t}\n+\tDPAA2_QDMA_DEBUG(\"Initialized dpdmai object successfully\");\n+\n+\treturn 0;\n+init_err:\n+\tdpaa2_dpdmai_dev_uninit(rawdev);\n+\treturn ret;\n+}\n+\n+static int\n+rte_dpaa2_qdma_probe(struct rte_dpaa2_driver *dpaa2_drv,\n+\t\t     struct rte_dpaa2_device *dpaa2_dev)\n+{\n+\tstruct rte_rawdev *rawdev;\n+\tint ret;\n+\n+\tDPAA2_QDMA_FUNC_TRACE();\n+\n+\trawdev = rte_rawdev_pmd_allocate(dpaa2_dev->device.name,\n+\t\t\tsizeof(struct dpaa2_dpdmai_dev),\n+\t\t\trte_socket_id());\n+\tif (!rawdev) {\n+\t\tDPAA2_QDMA_ERR(\"Unable to allocate rawdevice\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tdpaa2_dev->rawdev = rawdev;\n+\trawdev->dev_ops = &dpaa2_qdma_ops;\n+\trawdev->device = &dpaa2_dev->device;\n+\trawdev->driver_name = dpaa2_drv->driver.name;\n+\n+\t/* Invoke PMD device initialization function */\n+\tret = dpaa2_dpdmai_dev_init(rawdev, dpaa2_dev->object_id);\n+\tif (ret) {\n+\t\trte_rawdev_pmd_release(rawdev);\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int\n+rte_dpaa2_qdma_remove(struct rte_dpaa2_device *dpaa2_dev)\n+{\n+\tstruct rte_rawdev *rawdev = dpaa2_dev->rawdev;\n+\tint ret;\n+\n+\tDPAA2_QDMA_FUNC_TRACE();\n+\n+\tdpaa2_dpdmai_dev_uninit(rawdev);\n+\n+\tret = rte_rawdev_pmd_release(rawdev);\n+\tif (ret)\n+\t\tDPAA2_QDMA_ERR(\"Device cleanup failed\");\n+\n+\treturn 0;\n+}\n+\n+static struct rte_dpaa2_driver rte_dpaa2_qdma_pmd = {\n+\t.drv_type = DPAA2_QDMA,\n+\t.probe = rte_dpaa2_qdma_probe,\n+\t.remove = rte_dpaa2_qdma_remove,\n+};\n+\n+RTE_PMD_REGISTER_DPAA2(dpaa2_qdma, rte_dpaa2_qdma_pmd);\n+\n+RTE_INIT(dpaa2_qdma_init_log);\n+static void\n+dpaa2_qdma_init_log(void)\n+{\n+\tdpaa2_qdma_logtype = rte_log_register(\"pmd.raw.dpaa2.qdma\");\n+\tif (dpaa2_qdma_logtype >= 0)\n+\t\trte_log_set_level(dpaa2_qdma_logtype, RTE_LOG_INFO);\n+}\ndiff --git a/drivers/raw/dpaa2_qdma/dpaa2_qdma.h b/drivers/raw/dpaa2_qdma/dpaa2_qdma.h\nnew file mode 100644\nindex 0000000..8b3b1b9\n--- /dev/null\n+++ b/drivers/raw/dpaa2_qdma/dpaa2_qdma.h\n@@ -0,0 +1,66 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2018 NXP\n+ */\n+\n+#ifndef __DPAA2_QDMA_H__\n+#define __DPAA2_QDMA_H__\n+\n+/**\n+ * Represents a QDMA device.\n+ * A single QDMA device exists which is combination of multiple DPDMAI rawdev's.\n+ */\n+struct qdma_device {\n+\t/** total number of hw queues. */\n+\tuint16_t num_hw_queues;\n+\t/**\n+\t * Maximum number of hw queues to be alocated per core.\n+\t * This is limited by MAX_HW_QUEUE_PER_CORE\n+\t */\n+\tuint16_t max_hw_queues_per_core;\n+\t/** Maximum number of VQ's */\n+\tuint16_t max_vqs;\n+\t/** mode of operation - physical(h/w) or virtual */\n+\tuint8_t mode;\n+\t/** Device state - started or stopped */\n+\tuint8_t state;\n+\t/** FLE pool for the device */\n+\tstruct rte_mempool *fle_pool;\n+\t/** FLE pool size */\n+\tint fle_pool_count;\n+\t/** A lock to QDMA device whenever required */\n+\trte_spinlock_t lock;\n+};\n+\n+/** Represents a QDMA H/W queue */\n+struct qdma_hw_queue {\n+\t/** Pointer to Next instance */\n+\tTAILQ_ENTRY(qdma_hw_queue) next;\n+\t/** DPDMAI device to communicate with HW */\n+\tstruct dpaa2_dpdmai_dev *dpdmai_dev;\n+\t/** queue ID to communicate with HW */\n+\tuint16_t queue_id;\n+\t/** Associated lcore id */\n+\tuint32_t lcore_id;\n+\t/** Number of users of this hw queue */\n+\tuint32_t num_users;\n+};\n+\n+/** Represents a DPDMAI raw device */\n+struct dpaa2_dpdmai_dev {\n+\t/** Pointer to Next device instance */\n+\tTAILQ_ENTRY(dpaa2_qdma_device) next;\n+\t/** handle to DPDMAI object */\n+\tstruct fsl_mc_io dpdmai;\n+\t/** HW ID for DPDMAI object */\n+\tuint32_t dpdmai_id;\n+\t/** Tocken of this device */\n+\tuint16_t token;\n+\t/** Number of queue in this DPDMAI device */\n+\tuint8_t num_queues;\n+\t/** RX queues */\n+\tstruct dpaa2_queue rx_queue[DPDMAI_PRIO_NUM];\n+\t/** TX queues */\n+\tstruct dpaa2_queue tx_queue[DPDMAI_PRIO_NUM];\n+};\n+\n+#endif /* __DPAA2_QDMA_H__ */\ndiff --git a/drivers/raw/dpaa2_qdma/dpaa2_qdma_logs.h b/drivers/raw/dpaa2_qdma/dpaa2_qdma_logs.h\nnew file mode 100644\nindex 0000000..fafe352\n--- /dev/null\n+++ b/drivers/raw/dpaa2_qdma/dpaa2_qdma_logs.h\n@@ -0,0 +1,46 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2018 NXP\n+ */\n+\n+#ifndef __DPAA2_QDMA_LOGS_H__\n+#define __DPAA2_QDMA_LOGS_H__\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+extern int dpaa2_qdma_logtype;\n+\n+#define DPAA2_QDMA_LOG(level, fmt, args...) \\\n+\trte_log(RTE_LOG_ ## level, dpaa2_qdma_logtype, \"dpaa2_qdma: \" \\\n+\t\tfmt \"\\n\", ## args)\n+\n+#define DPAA2_QDMA_DEBUG(fmt, args...) \\\n+\trte_log(RTE_LOG_DEBUG, dpaa2_qdma_logtype, \"dpaa2_qdma: %s(): \" \\\n+\t\tfmt \"\\n\", __func__, ## args)\n+\n+#define DPAA2_QDMA_FUNC_TRACE() DPAA2_QDMA_LOG(DEBUG, \">>\")\n+\n+#define DPAA2_QDMA_INFO(fmt, args...) \\\n+\tDPAA2_QDMA_LOG(INFO, fmt, ## args)\n+#define DPAA2_QDMA_ERR(fmt, args...) \\\n+\tDPAA2_QDMA_LOG(ERR, fmt, ## args)\n+#define DPAA2_QDMA_WARN(fmt, args...) \\\n+\tDPAA2_QDMA_LOG(WARNING, fmt, ## args)\n+\n+/* DP Logs, toggled out at compile time if level lower than current level */\n+#define DPAA2_QDMA_DP_LOG(level, fmt, args...) \\\n+\tRTE_LOG_DP(level, PMD, \"dpaa2_qdma: \" fmt \"\\n\", ## args)\n+\n+#define DPAA2_QDMA_DP_DEBUG(fmt, args...) \\\n+\tDPAA2_QDMA_DP_LOG(DEBUG, fmt, ## args)\n+#define DPAA2_QDMA_DP_INFO(fmt, args...) \\\n+\tDPAA2_QDMA_DP_LOG(INFO, fmt, ## args)\n+#define DPAA2_QDMA_DP_WARN(fmt, args...) \\\n+\tDPAA2_QDMA_DP_LOG(WARNING, fmt, ## args)\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __DPAA2_QDMA_LOGS_H__ */\ndiff --git a/drivers/raw/dpaa2_qdma/meson.build b/drivers/raw/dpaa2_qdma/meson.build\nnew file mode 100644\nindex 0000000..cf14c01\n--- /dev/null\n+++ b/drivers/raw/dpaa2_qdma/meson.build\n@@ -0,0 +1,7 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright 2018 NXP\n+\n+deps += ['rawdev', 'bus_fslmc', 'ring']\n+sources = files('dpaa2_qdma.c')\n+\n+allow_experimental_apis = true\ndiff --git a/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma_version.map\nnew file mode 100644\nindex 0000000..33d2379\n--- /dev/null\n+++ b/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma_version.map\n@@ -0,0 +1,4 @@\n+EXPERIMENTAL {\n+\n+\tlocal: *;\n+};\ndiff --git a/drivers/raw/meson.build b/drivers/raw/meson.build\nindex 24c82ff..1b298f8 100644\n--- a/drivers/raw/meson.build\n+++ b/drivers/raw/meson.build\n@@ -1,7 +1,7 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright 2018 NXP\n \n-drivers = ['skeleton_rawdev']\n+drivers = ['skeleton_rawdev', 'dpaa2_qdma']\n std_deps = ['rawdev']\n config_flag_fmt = 'RTE_LIBRTE_PMD_@0@_RAWDEV'\n driver_name_fmt = 'rte_pmd_@0@'\ndiff --git a/mk/rte.app.mk b/mk/rte.app.mk\nindex 29a2a60..26a6b0c 100644\n--- a/mk/rte.app.mk\n+++ b/mk/rte.app.mk\n@@ -251,6 +251,9 @@ endif # CONFIG_RTE_LIBRTE_EVENTDEV\n \n ifeq ($(CONFIG_RTE_LIBRTE_RAWDEV),y)\n _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV) += -lrte_pmd_skeleton_rawdev\n+ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy)\n+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV) += -lrte_pmd_dpaa2_qdma\n+endif # CONFIG_RTE_LIBRTE_FSLMC_BUS\n endif # CONFIG_RTE_LIBRTE_RAWDEV\n \n \n",
    "prefixes": [
        "dpdk-dev",
        "v5",
        "5/8"
    ]
}