get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 41138,
    "url": "http://patchwork.dpdk.org/api/patches/41138/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20180614131900.11271-1-shreyansh.jain@nxp.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20180614131900.11271-1-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180614131900.11271-1-shreyansh.jain@nxp.com",
    "date": "2018-06-14T13:19:00",
    "name": "rawdev: remove experimental flag",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "5aef247cc9a6f70af533eb1c0f1f882fe3a12974",
    "submitter": {
        "id": 497,
        "url": "http://patchwork.dpdk.org/api/people/497/?format=api",
        "name": "Shreyansh Jain",
        "email": "shreyansh.jain@nxp.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20180614131900.11271-1-shreyansh.jain@nxp.com/mbox/",
    "series": [
        {
            "id": 127,
            "url": "http://patchwork.dpdk.org/api/series/127/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=127",
            "date": "2018-06-14T13:19:00",
            "name": "rawdev: remove experimental flag",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/127/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/41138/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/41138/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 F32EF1DD57;\n\tThu, 14 Jun 2018 15:19:31 +0200 (CEST)",
            "from EUR01-VE1-obe.outbound.protection.outlook.com\n\t(mail-ve1eur01on0083.outbound.protection.outlook.com [104.47.1.83])\n\tby dpdk.org (Postfix) with ESMTP id 457851DD4B\n\tfor <dev@dpdk.org>; Thu, 14 Jun 2018 15:19:30 +0200 (CEST)",
            "from Tophie.ap.freescale.net (14.142.187.166) by\n\tHE1PR0402MB2778.eurprd04.prod.outlook.com (2603:10a6:3:d4::12) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.863.16; Thu, 14 Jun 2018 13:19: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:X-MS-Exchange-SenderADCheck;\n\tbh=AP4csdH15HKapb0CRusO4ho7dBIeECZfhE/A458CWA0=;\n\tb=xQlRRd3G/r3ch/67/81g151uG2icVWCsBPcPAPnIU789hYJAh1Vviosny6EqRUz91mSJXHxp1aZeVh6FizNTrHnkcSjeQhQOFCoiq3Sd9of0xp2BGS4eJYCYw4GgZMlFyhuBQIfTArQCrvaxgJ0VEbquY0d307QQhSisVZDOCvg=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=shreyansh.jain@nxp.com; ",
        "From": "Shreyansh Jain <shreyansh.jain@nxp.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com,\n\tShreyansh Jain <shreyansh.jain@nxp.com>",
        "Date": "Thu, 14 Jun 2018 18:49:00 +0530",
        "Message-Id": "<20180614131900.11271-1-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.142.187.166]",
        "X-ClientProxiedBy": "BM1PR0101CA0034.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:1a::20) To HE1PR0402MB2778.eurprd04.prod.outlook.com\n\t(2603:10a6:3:d4::12)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-MS-Office365-Filtering-Correlation-Id": "1b3634e9-f897-4ae4-c142-08d5d1f97498",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(48565401081)(5600026)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:HE1PR0402MB2778; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; HE1PR0402MB2778;\n\t3:AzPsanI3us6laTc2Vb5mZDrcgCdtwPgKPpfjBOxVFKl4WvMzh6EKXUAMaqJSuC6yrpyH3Kt5fCs1+nvwiyxxY2JudvKxNZbNsTUXlWsD4iO3J5oWLAGwsN08RPvCbRUa0y6eYyDHwoLWYOOXaN795zpXtwJHlDOsQ9EPHfMItDa0pzEbxHyhrdOD69loMNDnj28A2/h3aDthxriuhOeUEAH6Hz1aslcvPjtktqtVpFa3qI18gz8v/qLwW3KNG0bP;\n\t25:kLyAXMolLH5QJDTZW3pd2m/Jugil5dr9SZW2HepRATNO/ALnSgbEC2D9BlCbsGQcAu6XITByl9wE2llujIO3QFF1cVv7Fuh84Vw+q5ydggoMX7KOMwcdXCHh3lmWRn/wxuIp+EkTXWC9CxD7J1fkpFe99I6ogFZzog7UF+9X4QfisbUqsuGsmgCVXJdWBXzA4RO7Uv6HgaLyE7eYzjA/NT+peuPtG9EerO+vRnyuUyJXofYuHiifCpUtCoOlEL2JoHHmkFgo7sahkppQQccuZ+iWrY9HbKEL/HLB7zXkhm375N3guKzAkKhbZH4p6ig1BxeCiXaycm4tQD/W8Ocyhg==;\n\t31:MQ+Up3X/yHWb2SjeKFcIlg9WfVwsocLG4HXLZMOztZfV19J6noehzhLmlfwuH5PseLxja9i6Ilqaw/6AFDzz1iAT3WW5M4o++JQ39J0Ia9pyNf9PTsyEQxJZb54WcPHh9llYV9ELQHj6Je0H2mGLHZw2pSOL+MybwjETZgHl/Vgm0OR91iFwZ9QW61ZPfLnD2w9Aiqz1ji8wKJ8NaDMAMNXbGzsOLUYexRNoCiusglE=",
            "1; HE1PR0402MB2778;\n\t20:sfvbEIEEvGfrvIIOTcsJ9ITOj05fF9/xhHzqRFA+Ge6hHNLPYaRbwK9oeeYU+l8+vBdl2vusIxUmIk3N21FsrG8iDXphZyRfdMSsTQgI+QGZWupPWLQy5rKIqUU3LjG/VafLFKEN7OtfxvazNwpOd4/4PzSGgabefW8vdkHo3KI+XiHiq/exOAw7tF0MIKvinjMpVyqh4bLIrk3+Aeash1cwMf+LYumK6sL21g8pMpsQpVV9OLXWa2IrlP+y8jjyN+rdOpfjgt4lYETMl8WPUK9jA5whBOrQPZkFw3J1Ce32cFxKK8/jHk/h9ymaAKFcchNPMcgr645WtWbbwszMydDb3akHdb1Holw0EXBYVqGNaAmerEukJ9BJm6ctLNsyFlhgCdC0nOUur5ajfQA4Ymj9okcgS4AQaaGgCzFlH/bYpy+7UIyy7EUGGHBzqU+h1CA0r49QJoO4p/QIuLni4lGlfgbjncshmKM/rbkwI8Eu+7rdIIpNdMttWoF6VSiD;\n\t4:xaaxJ4qPGD4h7klEyNyAhtP1VMIYUkkACdg0dSghHwkMRsb+1llG0HLW8hOkuqDz71/AOCgRFElox++nbDD4J7bTo6V+B2oXPrdW0g/v4FSWSKNmbab9Ld+uPuB2syW815JyV2ssAwh25D8vT9PvhtFJwMMaaNLcne7HTTXJg6lwdHxB3w3hoBwivAxXTcIY3b3sX/Av4dSkMrMpB2Tw+nhGh56pfSLs3PiI6uL+OxEBIJY2TZ3XB3FusJuWWFZxDq5KmlliBlesdsP6snvJN+aABFqjfBTObud4E3WWoetw+fc4KrSXw7XDnvYMptLu",
            "=?us-ascii?Q?1; HE1PR0402MB2778;\n\t23:3NyjELZoVJwYGr5pFwnYWogNlKeXOwSriHEECj3?=\n\tHdCzPJnMeX5n1nK3r5EwggQefh0HkDSSUOg7+cG3uwjT/K67mfhk1qRfUtubvnte6i3Unh2ZBQ5LYZPYyzxiz3T7UyabQuQP7TWr2bQPmAhGQSXi1QtMGWdrJEXGtMYhXHJCI/1eH+AXUJyto0D6UNVOwiTFEdVoGjIhVFZcuzu5B8u0iCIMNTZYS30KuSW+ESPh9OMbAAu86V6jrUfAkc+tjIZGhYXLP/MZNbadJn8tqyHlAJaeQ5I5/INN05jgi/jY05I7t2NdRHpmBdcaNy88A5V8ftPlC0Y2IpkLhtOGXgB0tWmBjST4lrn1nuFU5h9E2iYDphXaNCyG12UTsL2/lklg8hVoamuQRrOg42GnXHDiFDrKSxhO3iOeEvixNrjMnZiA7ylsTKsRDyVmgsVAvooc80H/s10izPOvmcQHYoremY92gIaAHAGBjMIjTQ9a9cS8/EG6o1CnMHpzl0GIg0hCGUf+33d8vwm3IZbfVRfYbjUwtGgUYWwqKtgytWDoVKWqKCYBNQ6S3C/SIV21x6jyHQde1vG7n0t9vj4xv+zpgyRYjuKVO8BivR2h6d6GzqHpZGoj0znrmMWSjvdWBtWB+fNOm8k24g6is/oO0Iu0QXe/aP+zB90oX8FgIVVnnUOIFbjJ4dRi0oviW4DCeGlspbDh6W6Rq3GCib2yGWlhjX/5pD2VQdL52MeLtJ5DvUqceoCveLuHjDiy2Ep1mCuwjtnkWRLDo6J651T5ZVlTYejL7rirkOtSqehCx0SwN9ZS6/NC+dm9UGpFHXxg6sdsSYQlDX6ZGF/B1Hk2QGeyWTMqCAYh/+cqghBOOqhUyHE3X4qJJB77G8ptSIl4rhiQWojK9kaAJhvEhSL0uAw6Jdb0eiX/qCg81vtwQ1gY+l92JvtLSJhzehrH40mzwX9ncg0rIvHibFgSS6/mhcu70o0qpcE9HzJxWOY7MC3Oei1uUfDvNFPCtcbwlEK+e6Qsc/9aYWDNZGlfMYfVxEu78fE7JR8I3t3kjKvD+DLaHLiOqh0Lg5hkotc2gWGkSUhi2xFj/PSGCy5gWaDH4IjWInOsHDWY2F9Lr/cygKwcoHYmw9UChRbWA0E0NPN/3E7zrbdGcOfWRRLv/Oc9QQ5k5XTdbn8oh/8dZ/iOCrWs+TzSBkYjuUWwlxVbFD5vjMe5YWBjlnXdg6GB7O5ceD1UJuA8RgMbZ3E423ZGJPsao/UQz5tnvnXIhOk4TcFld7G6tnLIEMxbcDafwI05wOW8Ensh9LmS9vzG5af0/F9bn29ggpPGFl+SR2IqrSaV8vCdemzT2akwc857O8lkZ5A==",
            "1; HE1PR0402MB2778;\n\t6:Jw2J5rhzrCj1v0IGNYjYHPpWK5JqjGDgQ3Eq1Vs5x4+g1dmgRvjwcHaN6Go72UQMrHRS+CiwzhScgrNUOmN4JzNYn+6eAErjIFgPX5psYsofpVBiRXSd7lreLnbAPEol/zjIOGpQwFA5V91SvWIjSnZlDflWuEgZywk3deuKQTMV3L8JrF2bqhZYK5FjHZA+qkt072EHL8kfS53T/8zhKs+o3mM+htC6nlqd+ueiUePyt0n/HaPXkifG1uNZj8igvNgeRo7Kj0R4T7W+dUiBNb9kQO0hp4ZP7SurVF9RBeih+539vHs91NwlnvDzH6QC0bBMHUYWHTKTz7lH8J1SDni1KP5De9myOtvtj9x+RPGbcC5IaoE+Q1wbgzxBCD6zrEuVFnZWUyiXgiG/tWF4pdW6lruiqNlmwN207xpTJMMpNBya06QxdapAvFXaMpsgFGGHbsvQ1xN5ZVgji+4WPA==;\n\t5:Ml7ySAO4i9b+U/xaKZ8h82gRBJbbU8p4MPyJcb8iyAxch0it86loto9A0tMRaJPiTIG4dUSXaZyHmkD57SsINNTELp2dVgfg1GEyV1zJUhYcImEES8/Ag4wvQJJ2NfP7T7eK3uHdRwMSFZ6n/lRs6KuxaY7fQXf5OTRzbMnSyUk=;\n\t24:/RzEgjzCmMwzYlwhVmfc8eDKx6ieSD4w69W0ICUI7+S1tw9ZAMTOmxiSZda6i2Gcg5qZvlV14YZV6DxoNSVcDktxfbZmFV93C1GF/uM49JY=",
            "1; HE1PR0402MB2778;\n\t7:6RyfnQHkjTF6C2erFbys0yro+O/f1uCBcJwdSWfI5Ok4U68m9jag2HpEdegSQvsouoBwEoMDg/9fu5Huz1K4JGFAEEoei0STEtljBt0ZQ/Ohj4B+QwXc0awVFY/bIfpYzsJx5SOAiweJC/fVmXg/Hq5BcqMDaNhscbNC8jc82/ECWgXB+elt/6DYBEvGvMrCJ5cylRRj2LVynv0/ylXfRquicnFsZ9X0iGk6P5cNlIjNygKQbVf6tpeaRtON9tdR"
        ],
        "X-MS-TrafficTypeDiagnostic": "HE1PR0402MB2778:",
        "X-Microsoft-Antispam-PRVS": "<HE1PR0402MB27787EA4DBCB5FB437AF6FC7907D0@HE1PR0402MB2778.eurprd04.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011)(7699016);\n\tSRVR:HE1PR0402MB2778; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0402MB2778; ",
        "X-Forefront-PRVS": "0703B549E4",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(396003)(39860400002)(346002)(366004)(39380400002)(199004)(189003)(6666003)(68736007)(66066001)(6916009)(186003)(44832011)(305945005)(47776003)(956004)(2616005)(316002)(6116002)(3846002)(6486002)(1076002)(8936002)(476003)(5009440100003)(50466002)(7736002)(50226002)(486006)(1857600001)(16526019)(2351001)(51416003)(52116002)(25786009)(478600001)(53936002)(2361001)(26005)(59450400001)(86362001)(5660300001)(386003)(6512007)(8676002)(6506007)(48376002)(16586007)(105586002)(81156014)(575784001)(81166006)(55236004)(4326008)(97736004)(36756003)(106356001)(2906002)(110426005);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0402MB2778;\n\tH:Tophie.ap.freescale.net; \n\tFPR:; SPF:None; LANG:en; PTR: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": "PJj4PXPrq1LOzCJ1LrfNLxpFVlh8sFheA5PH2xG4ILvR2E1wfYo39hYPUptl9OBswayy/S9In2l3jh1eY8BWz/fELkha0oRV1053Myzx0k02tCD1+1BJA1koh6ANndMyzQUBQbqJ61AShXgWCXCKlrg337yVGMOSn8E0EJoF3MWNkhkv/2jzCa6rqLkCehgc",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "14 Jun 2018 13:19:26.5104\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "1b3634e9-f897-4ae4-c142-08d5d1f97498",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "HE1PR0402MB2778",
        "Subject": "[dpdk-dev] [PATCH] rawdev: remove experimental flag",
        "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": "Besides the librawdev, removing experimental from skeleton_rawdev\ndummy driver as well.\n\nSigned-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>\n---\n\nNote: Dependent drivers, (dpaa2_cmdif, dpaa2_qdma and ifpga) cannot be\n      updated in this patch as are dependent on some other symbols\n      (rte_mem_virt2memseg and rte_eal_hotplug_*).\n\n drivers/raw/skeleton_rawdev/Makefile     |  1 -\n drivers/raw/skeleton_rawdev/meson.build  |  2 -\n lib/librte_rawdev/Makefile               |  1 -\n lib/librte_rawdev/meson.build            |  1 -\n lib/librte_rawdev/rte_rawdev.c           | 56 ++++++++++++------------\n lib/librte_rawdev/rte_rawdev.h           | 54 +++++++++++------------\n lib/librte_rawdev/rte_rawdev_pmd.h       |  8 ++--\n lib/librte_rawdev/rte_rawdev_version.map |  2 +-\n 8 files changed, 60 insertions(+), 65 deletions(-)",
    "diff": "diff --git a/drivers/raw/skeleton_rawdev/Makefile b/drivers/raw/skeleton_rawdev/Makefile\nindex bacc66dd0..3f97c2ee0 100644\n--- a/drivers/raw/skeleton_rawdev/Makefile\n+++ b/drivers/raw/skeleton_rawdev/Makefile\n@@ -8,7 +8,6 @@ include $(RTE_SDK)/mk/rte.vars.mk\n #\n LIB = librte_pmd_skeleton_rawdev.a\n \n-CFLAGS += -DALLOW_EXPERIMENTAL_API\n CFLAGS += -O3\n CFLAGS += $(WERROR_FLAGS)\n LDLIBS += -lrte_eal\ndiff --git a/drivers/raw/skeleton_rawdev/meson.build b/drivers/raw/skeleton_rawdev/meson.build\nindex 7cb2d3fb1..b4a6ed08a 100644\n--- a/drivers/raw/skeleton_rawdev/meson.build\n+++ b/drivers/raw/skeleton_rawdev/meson.build\n@@ -4,5 +4,3 @@\n deps += ['rawdev', 'kvargs', 'mbuf', 'bus_vdev']\n sources = files('skeleton_rawdev.c',\n                'skeleton_rawdev_test.c')\n-\n-allow_experimental_apis = true\ndiff --git a/lib/librte_rawdev/Makefile b/lib/librte_rawdev/Makefile\nindex b9105b060..addb288d7 100644\n--- a/lib/librte_rawdev/Makefile\n+++ b/lib/librte_rawdev/Makefile\n@@ -10,7 +10,6 @@ LIB = librte_rawdev.a\n LIBABIVER := 1\n \n # build flags\n-CFLAGS += -DALLOW_EXPERIMENTAL_API\n CFLAGS += -O3\n CFLAGS += $(WERROR_FLAGS)\n LDLIBS += -lrte_eal\ndiff --git a/lib/librte_rawdev/meson.build b/lib/librte_rawdev/meson.build\nindex dcd37ad49..a20fbdc04 100644\n--- a/lib/librte_rawdev/meson.build\n+++ b/lib/librte_rawdev/meson.build\n@@ -1,6 +1,5 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright(c) 2018 Intel Corporation\n \n-allow_experimental_apis = true\n sources = files('rte_rawdev.c')\n headers = files('rte_rawdev.h', 'rte_rawdev_pmd.h')\ndiff --git a/lib/librte_rawdev/rte_rawdev.c b/lib/librte_rawdev/rte_rawdev.c\nindex 284e6aec8..00feb4ebe 100644\n--- a/lib/librte_rawdev/rte_rawdev.c\n+++ b/lib/librte_rawdev/rte_rawdev.c\n@@ -46,13 +46,13 @@ static struct rte_rawdev_global rawdev_globals = {\n struct rte_rawdev_global *rte_rawdev_globals = &rawdev_globals;\n \n /* Raw device, northbound API implementation */\n-uint8_t __rte_experimental\n+uint8_t\n rte_rawdev_count(void)\n {\n \treturn rte_rawdev_globals->nb_devs;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_rawdev_get_dev_id(const char *name)\n {\n \tuint16_t i;\n@@ -69,7 +69,7 @@ rte_rawdev_get_dev_id(const char *name)\n \treturn -ENODEV;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_socket_id(uint16_t dev_id)\n {\n \tstruct rte_rawdev *dev;\n@@ -80,7 +80,7 @@ rte_rawdev_socket_id(uint16_t dev_id)\n \treturn dev->socket_id;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info)\n {\n \tstruct rte_rawdev *rawdev;\n@@ -102,7 +102,7 @@ rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info)\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_configure(uint16_t dev_id, struct rte_rawdev_info *dev_conf)\n {\n \tstruct rte_rawdev *dev;\n@@ -131,7 +131,7 @@ rte_rawdev_configure(uint16_t dev_id, struct rte_rawdev_info *dev_conf)\n \treturn diag;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_queue_conf_get(uint16_t dev_id,\n \t\t\t  uint16_t queue_id,\n \t\t\t  rte_rawdev_obj_t queue_conf)\n@@ -146,7 +146,7 @@ rte_rawdev_queue_conf_get(uint16_t dev_id,\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_queue_setup(uint16_t dev_id,\n \t\t       uint16_t queue_id,\n \t\t       rte_rawdev_obj_t queue_conf)\n@@ -160,7 +160,7 @@ rte_rawdev_queue_setup(uint16_t dev_id,\n \treturn (*dev->dev_ops->queue_setup)(dev, queue_id, queue_conf);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_queue_release(uint16_t dev_id, uint16_t queue_id)\n {\n \tstruct rte_rawdev *dev;\n@@ -172,7 +172,7 @@ rte_rawdev_queue_release(uint16_t dev_id, uint16_t queue_id)\n \treturn (*dev->dev_ops->queue_release)(dev, queue_id);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_get_attr(uint16_t dev_id,\n \t\t    const char *attr_name,\n \t\t    uint64_t *attr_value)\n@@ -186,7 +186,7 @@ rte_rawdev_get_attr(uint16_t dev_id,\n \treturn (*dev->dev_ops->attr_get)(dev, attr_name, attr_value);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_set_attr(uint16_t dev_id,\n \t\t    const char *attr_name,\n \t\t    const uint64_t attr_value)\n@@ -200,7 +200,7 @@ rte_rawdev_set_attr(uint16_t dev_id,\n \treturn (*dev->dev_ops->attr_set)(dev, attr_name, attr_value);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_enqueue_buffers(uint16_t dev_id,\n \t\t\t   struct rte_rawdev_buf **buffers,\n \t\t\t   unsigned int count,\n@@ -215,7 +215,7 @@ rte_rawdev_enqueue_buffers(uint16_t dev_id,\n \treturn (*dev->dev_ops->enqueue_bufs)(dev, buffers, count, context);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_dequeue_buffers(uint16_t dev_id,\n \t\t\t   struct rte_rawdev_buf **buffers,\n \t\t\t   unsigned int count,\n@@ -230,7 +230,7 @@ rte_rawdev_dequeue_buffers(uint16_t dev_id,\n \treturn (*dev->dev_ops->dequeue_bufs)(dev, buffers, count, context);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_dump(uint16_t dev_id, FILE *f)\n {\n \tstruct rte_rawdev *dev;\n@@ -251,7 +251,7 @@ xstats_get_count(uint16_t dev_id)\n \treturn (*dev->dev_ops->xstats_get_names)(dev, NULL, 0);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_xstats_names_get(uint16_t dev_id,\n \t\tstruct rte_rawdev_xstats_name *xstats_names,\n \t\tunsigned int size)\n@@ -274,7 +274,7 @@ rte_rawdev_xstats_names_get(uint16_t dev_id,\n }\n \n /* retrieve rawdev extended statistics */\n-int __rte_experimental\n+int\n rte_rawdev_xstats_get(uint16_t dev_id,\n \t\t      const unsigned int ids[],\n \t\t      uint64_t values[],\n@@ -287,7 +287,7 @@ rte_rawdev_xstats_get(uint16_t dev_id,\n \treturn (*dev->dev_ops->xstats_get)(dev, ids, values, n);\n }\n \n-uint64_t __rte_experimental\n+uint64_t\n rte_rawdev_xstats_by_name_get(uint16_t dev_id,\n \t\t\t      const char *name,\n \t\t\t      unsigned int *id)\n@@ -306,7 +306,7 @@ rte_rawdev_xstats_by_name_get(uint16_t dev_id,\n \treturn (*dev->dev_ops->xstats_get_by_name)(dev, name, id);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_xstats_reset(uint16_t dev_id,\n \t\t\tconst uint32_t ids[], uint32_t nb_ids)\n {\n@@ -317,7 +317,7 @@ rte_rawdev_xstats_reset(uint16_t dev_id,\n \treturn (*dev->dev_ops->xstats_reset)(dev, ids, nb_ids);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_firmware_status_get(uint16_t dev_id, rte_rawdev_obj_t status_info)\n {\n \tRTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);\n@@ -327,7 +327,7 @@ rte_rawdev_firmware_status_get(uint16_t dev_id, rte_rawdev_obj_t status_info)\n \treturn (*dev->dev_ops->firmware_status_get)(dev, status_info);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_firmware_version_get(uint16_t dev_id, rte_rawdev_obj_t version_info)\n {\n \tRTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);\n@@ -337,7 +337,7 @@ rte_rawdev_firmware_version_get(uint16_t dev_id, rte_rawdev_obj_t version_info)\n \treturn (*dev->dev_ops->firmware_version_get)(dev, version_info);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_firmware_load(uint16_t dev_id, rte_rawdev_obj_t firmware_image)\n {\n \tRTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);\n@@ -350,7 +350,7 @@ rte_rawdev_firmware_load(uint16_t dev_id, rte_rawdev_obj_t firmware_image)\n \treturn (*dev->dev_ops->firmware_load)(dev, firmware_image);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_firmware_unload(uint16_t dev_id)\n {\n \tRTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);\n@@ -360,7 +360,7 @@ rte_rawdev_firmware_unload(uint16_t dev_id)\n \treturn (*dev->dev_ops->firmware_unload)(dev);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_selftest(uint16_t dev_id)\n {\n \tRTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);\n@@ -370,7 +370,7 @@ rte_rawdev_selftest(uint16_t dev_id)\n \treturn (*dev->dev_ops->dev_selftest)();\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_start(uint16_t dev_id)\n {\n \tstruct rte_rawdev *dev;\n@@ -397,7 +397,7 @@ rte_rawdev_start(uint16_t dev_id)\n \treturn 0;\n }\n \n-void __rte_experimental\n+void\n rte_rawdev_stop(uint16_t dev_id)\n {\n \tstruct rte_rawdev *dev;\n@@ -419,7 +419,7 @@ rte_rawdev_stop(uint16_t dev_id)\n \tdev->started = 0;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_close(uint16_t dev_id)\n {\n \tstruct rte_rawdev *dev;\n@@ -438,7 +438,7 @@ rte_rawdev_close(uint16_t dev_id)\n \treturn (*dev->dev_ops->dev_close)(dev);\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_reset(uint16_t dev_id)\n {\n \tstruct rte_rawdev *dev;\n@@ -465,7 +465,7 @@ rte_rawdev_find_free_device_index(void)\n \treturn RTE_RAWDEV_MAX_DEVS;\n }\n \n-struct rte_rawdev * __rte_experimental\n+struct rte_rawdev *\n rte_rawdev_pmd_allocate(const char *name, size_t dev_priv_size, int socket_id)\n {\n \tstruct rte_rawdev *rawdev;\n@@ -506,7 +506,7 @@ rte_rawdev_pmd_allocate(const char *name, size_t dev_priv_size, int socket_id)\n \treturn rawdev;\n }\n \n-int __rte_experimental\n+int\n rte_rawdev_pmd_release(struct rte_rawdev *rawdev)\n {\n \tint ret;\ndiff --git a/lib/librte_rawdev/rte_rawdev.h b/lib/librte_rawdev/rte_rawdev.h\nindex 2e14919b5..7988e76af 100644\n--- a/lib/librte_rawdev/rte_rawdev.h\n+++ b/lib/librte_rawdev/rte_rawdev.h\n@@ -35,7 +35,7 @@ typedef void *rte_rawdev_obj_t;\n  * @return\n  *   The total number of usable raw devices.\n  */\n-uint8_t __rte_experimental\n+uint8_t\n rte_rawdev_count(void);\n \n /**\n@@ -48,7 +48,7 @@ rte_rawdev_count(void);\n  *   Returns raw device identifier on success.\n  *   - <0: Failure to find named raw device.\n  */\n-uint16_t __rte_experimental\n+uint16_t\n rte_rawdev_get_dev_id(const char *name);\n \n /**\n@@ -61,7 +61,7 @@ rte_rawdev_get_dev_id(const char *name);\n  *   a default of zero if the socket could not be determined.\n  *   -(-EINVAL)  dev_id value is out of range.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_socket_id(uint16_t dev_id);\n \n /**\n@@ -84,7 +84,7 @@ struct rte_rawdev_info;\n  *   - <0: Error code returned by the driver info get function.\n  *\n  */\n-int __rte_experimental\n+int\n rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info);\n \n /**\n@@ -111,7 +111,7 @@ rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info);\n  *   - 0: Success, device configured.\n  *   - <0: Error code returned by the driver configuration function.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_configure(uint16_t dev_id, struct rte_rawdev_info *dev_conf);\n \n \n@@ -137,7 +137,7 @@ rte_rawdev_configure(uint16_t dev_id, struct rte_rawdev_info *dev_conf);\n  * @see rte_raw_queue_setup()\n  *\n  */\n-int __rte_experimental\n+int\n rte_rawdev_queue_conf_get(uint16_t dev_id,\n \t\t\t  uint16_t queue_id,\n \t\t\t  rte_rawdev_obj_t queue_conf);\n@@ -160,7 +160,7 @@ rte_rawdev_queue_conf_get(uint16_t dev_id,\n  *   - 0: Success, raw queue correctly set up.\n  *   - <0: raw queue configuration failed\n  */\n-int __rte_experimental\n+int\n rte_rawdev_queue_setup(uint16_t dev_id,\n \t\t       uint16_t queue_id,\n \t\t       rte_rawdev_obj_t queue_conf);\n@@ -180,7 +180,7 @@ rte_rawdev_queue_setup(uint16_t dev_id,\n  *   - 0: Success, raw queue released.\n  *   - <0: raw queue configuration failed\n  */\n-int __rte_experimental\n+int\n rte_rawdev_queue_release(uint16_t dev_id, uint16_t queue_id);\n /**\n  * Get the number of raw queues on a specific raw device\n@@ -190,7 +190,7 @@ rte_rawdev_queue_release(uint16_t dev_id, uint16_t queue_id);\n  * @return\n  *   - The number of configured raw queues\n  */\n-uint16_t __rte_experimental\n+uint16_t\n rte_rawdev_queue_count(uint16_t dev_id);\n \n /**\n@@ -208,7 +208,7 @@ rte_rawdev_queue_count(uint16_t dev_id);\n  *   - 0: Success, device started.\n  *   < 0: Failure\n  */\n-int __rte_experimental\n+int\n rte_rawdev_start(uint16_t dev_id);\n \n /**\n@@ -218,7 +218,7 @@ rte_rawdev_start(uint16_t dev_id);\n  * @param dev_id\n  *   Raw device identifier.\n  */\n-void __rte_experimental\n+void\n rte_rawdev_stop(uint16_t dev_id);\n \n /**\n@@ -232,7 +232,7 @@ rte_rawdev_stop(uint16_t dev_id);\n  *  - <0 on failure to close device\n  *  - (-EAGAIN) if device is busy\n  */\n-int __rte_experimental\n+int\n rte_rawdev_close(uint16_t dev_id);\n \n /**\n@@ -246,7 +246,7 @@ rte_rawdev_close(uint16_t dev_id);\n  *   0 for sucessful reset,\n  *  !0 for failure in resetting\n  */\n-int __rte_experimental\n+int\n rte_rawdev_reset(uint16_t dev_id);\n \n #define RTE_RAWDEV_NAME_MAX_LEN\t(64)\n@@ -316,7 +316,7 @@ struct rte_rawdev_buf {\n  *   - 0: on success\n  *   - <0: on failure.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_dump(uint16_t dev_id, FILE *f);\n \n /**\n@@ -338,7 +338,7 @@ rte_rawdev_dump(uint16_t dev_id, FILE *f);\n  *   0 for success\n  *  !0 Error; attr_value remains untouched in case of error.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_get_attr(uint16_t dev_id,\n \t\t    const char *attr_name,\n \t\t    uint64_t *attr_value);\n@@ -357,7 +357,7 @@ rte_rawdev_get_attr(uint16_t dev_id,\n  *   0 for success\n  *  !0 Error\n  */\n-int __rte_experimental\n+int\n rte_rawdev_set_attr(uint16_t dev_id,\n \t\t    const char *attr_name,\n \t\t    const uint64_t attr_value);\n@@ -383,7 +383,7 @@ rte_rawdev_set_attr(uint16_t dev_id,\n  *  Whether partial enqueue is failure or success is defined between app\n  *  and driver implementation.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_enqueue_buffers(uint16_t dev_id,\n \t\t\t   struct rte_rawdev_buf **buffers,\n \t\t\t   unsigned int count,\n@@ -414,7 +414,7 @@ rte_rawdev_enqueue_buffers(uint16_t dev_id,\n  *  Whether partial enqueue is failure or success is defined between app\n  *  and driver implementation.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_dequeue_buffers(uint16_t dev_id,\n \t\t\t   struct rte_rawdev_buf **buffers,\n \t\t\t   unsigned int count,\n@@ -454,7 +454,7 @@ struct rte_rawdev_xstats_name {\n  *        -ENODEV for invalid *dev_id*\n  *        -ENOTSUP if the device doesn't support this function.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_xstats_names_get(uint16_t dev_id,\n \t\t\t    struct rte_rawdev_xstats_name *xstats_names,\n \t\t\t    unsigned int size);\n@@ -478,7 +478,7 @@ rte_rawdev_xstats_names_get(uint16_t dev_id,\n  *        -ENODEV for invalid *dev_id*\n  *        -ENOTSUP if the device doesn't support this function.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_xstats_get(uint16_t dev_id,\n \t\t      const unsigned int ids[],\n \t\t      uint64_t values[],\n@@ -500,7 +500,7 @@ rte_rawdev_xstats_get(uint16_t dev_id,\n  *   - positive value or zero: the stat value\n  *   - negative value: -EINVAL if stat not found, -ENOTSUP if not supported.\n  */\n-uint64_t __rte_experimental\n+uint64_t\n rte_rawdev_xstats_by_name_get(uint16_t dev_id,\n \t\t\t      const char *name,\n \t\t\t      unsigned int *id);\n@@ -520,7 +520,7 @@ rte_rawdev_xstats_by_name_get(uint16_t dev_id,\n  *   - zero: successfully reset the statistics to zero\n  *   - negative value: -EINVAL invalid parameters, -ENOTSUP if not supported.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_xstats_reset(uint16_t dev_id,\n \t\t\tconst uint32_t ids[],\n \t\t\tuint32_t nb_ids);\n@@ -539,7 +539,7 @@ rte_rawdev_xstats_reset(uint16_t dev_id,\n  *   0 for success,\n  *  !0 for failure, `status_info` argument state is undefined\n  */\n-int __rte_experimental\n+int\n rte_rawdev_firmware_status_get(uint16_t dev_id,\n \t\t\t       rte_rawdev_obj_t status_info);\n \n@@ -557,7 +557,7 @@ rte_rawdev_firmware_status_get(uint16_t dev_id,\n  *   0 for success,\n  *  !0 for failure, `version_info` argument state is undefined\n  */\n-int __rte_experimental\n+int\n rte_rawdev_firmware_version_get(uint16_t dev_id,\n \t\t\t\trte_rawdev_obj_t version_info);\n \n@@ -574,7 +574,7 @@ rte_rawdev_firmware_version_get(uint16_t dev_id,\n  *   0 for successful load\n  *  !0 for failure to load the provided image, or image incorrect.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_firmware_load(uint16_t dev_id, rte_rawdev_obj_t firmware_image);\n \n /**\n@@ -586,7 +586,7 @@ rte_rawdev_firmware_load(uint16_t dev_id, rte_rawdev_obj_t firmware_image);\n  *   0 for successful Unload\n  *  !0 for failure in unloading\n  */\n-int __rte_experimental\n+int\n rte_rawdev_firmware_unload(uint16_t dev_id);\n \n /**\n@@ -599,7 +599,7 @@ rte_rawdev_firmware_unload(uint16_t dev_id);\n  *   - -ENOTSUP if the device doesn't support selftest\n  *   - other values < 0 on failure.\n  */\n-int __rte_experimental\n+int\n rte_rawdev_selftest(uint16_t dev_id);\n \n #ifdef __cplusplus\ndiff --git a/lib/librte_rawdev/rte_rawdev_pmd.h b/lib/librte_rawdev/rte_rawdev_pmd.h\nindex 408adf0fd..6d6cf14a1 100644\n--- a/lib/librte_rawdev/rte_rawdev_pmd.h\n+++ b/lib/librte_rawdev/rte_rawdev_pmd.h\n@@ -556,7 +556,7 @@ struct rte_rawdev_ops {\n  * @return\n  *   - Slot in the rte_dev_devices array for a new device;\n  */\n-struct rte_rawdev * __rte_experimental\n+struct rte_rawdev *\n rte_rawdev_pmd_allocate(const char *name, size_t dev_private_size,\n \t\t\tint socket_id);\n \n@@ -568,7 +568,7 @@ rte_rawdev_pmd_allocate(const char *name, size_t dev_private_size,\n  * @return\n  *   - 0 on success, negative on error\n  */\n-int __rte_experimental\n+int\n rte_rawdev_pmd_release(struct rte_rawdev *rawdev);\n \n /**\n@@ -585,7 +585,7 @@ rte_rawdev_pmd_release(struct rte_rawdev *rawdev);\n  *   - Raw device pointer if device is successfully created.\n  *   - NULL if device cannot be created.\n  */\n-struct rte_rawdev * __rte_experimental\n+struct rte_rawdev *\n rte_rawdev_pmd_init(const char *name, size_t dev_private_size,\n \t\t    int socket_id);\n \n@@ -597,7 +597,7 @@ rte_rawdev_pmd_init(const char *name, size_t dev_private_size,\n  * @return\n  *   - 0 on success, negative on error\n  */\n-int __rte_experimental\n+int\n rte_rawdev_pmd_uninit(const char *name);\n \n #ifdef __cplusplus\ndiff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map\nindex af4465e26..f5be52df9 100644\n--- a/lib/librte_rawdev/rte_rawdev_version.map\n+++ b/lib/librte_rawdev/rte_rawdev_version.map\n@@ -1,4 +1,4 @@\n-EXPERIMENTAL {\n+DPDK_18.08 {\n \tglobal:\n \n \trte_rawdev_close;\n",
    "prefixes": []
}