get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 14773,
    "url": "http://patchwork.dpdk.org/api/patches/14773/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1468303282-2806-13-git-send-email-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": "<1468303282-2806-13-git-send-email-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1468303282-2806-13-git-send-email-shreyansh.jain@nxp.com",
    "date": "2016-07-12T06:01:17",
    "name": "[dpdk-dev,v6,12/17] pci: add a helper for device name",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "6083295dd471dac8e7f014c7e836b4341837ad7c",
    "submitter": {
        "id": 497,
        "url": "http://patchwork.dpdk.org/api/people/497/?format=api",
        "name": "Shreyansh Jain",
        "email": "shreyansh.jain@nxp.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1468303282-2806-13-git-send-email-shreyansh.jain@nxp.com/mbox/",
    "series": [],
    "comments": "http://patchwork.dpdk.org/api/patches/14773/comments/",
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/14773/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 64C06530A;\n\tTue, 12 Jul 2016 08:01:35 +0200 (CEST)",
            "from NAM01-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam01on0045.outbound.protection.outlook.com [104.47.34.45])\n\tby dpdk.org (Postfix) with ESMTP id 3F310558D\n\tfor <dev@dpdk.org>; Tue, 12 Jul 2016 08:01:31 +0200 (CEST)",
            "from BN3PR0301CA0007.namprd03.prod.outlook.com (10.160.180.145) by\n\tBN1PR0301MB0769.namprd03.prod.outlook.com (10.160.78.151) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.534.8; Tue, 12 Jul 2016 06:01:30 +0000",
            "from BL2FFO11OLC003.protection.gbl (2a01:111:f400:7c09::124) by\n\tBN3PR0301CA0007.outlook.office365.com (2a01:111:e400:4000::17) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.534.14 via\n\tFrontend Transport; Tue, 12 Jul 2016 06:01:30 +0000",
            "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBL2FFO11OLC003.mail.protection.outlook.com (10.173.161.187) with\n\tMicrosoft SMTP Server (TLS) id 15.1.534.7 via Frontend Transport;\n\tTue, 12 Jul 2016 06:01:29 +0000",
            "from Tophie.ap.freescale.net (Tophie.ap.freescale.net\n\t[10.232.14.199])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tu6C60qWk006202; Mon, 11 Jul 2016 23:01:27 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; 6wind.com; dkim=none (message not signed)\n\theader.d=none; 6wind.com; dmarc=fail action=none header.from=nxp.com; ",
        "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.168.50 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;",
        "From": "Shreyansh Jain <shreyansh.jain@nxp.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<viktorin@rehivetech.com>, <thomas.monjalon@6wind.com>,\n\t<david.marchand@6wind.com>",
        "Date": "Tue, 12 Jul 2016 11:31:17 +0530",
        "Message-ID": "<1468303282-2806-13-git-send-email-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1468303282-2806-1-git-send-email-shreyansh.jain@nxp.com>",
        "References": "<1466510566-9240-1-git-send-email-shreyansh.jain@nxp.com>\n\t<1468303282-2806-1-git-send-email-shreyansh.jain@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131127768896586558;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()",
        "X-Forefront-Antispam-Report": "CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(586003)(305945005)(33646002)(86362001)(7846002)(11100500001)(6806005)(68736007)(50226002)(36756003)(356003)(85426001)(229853001)(104016004)(81156014)(47776003)(2351001)(2950100001)(4326007)(76176999)(50466002)(48376002)(189998001)(106466001)(97736004)(8936002)(105606002)(110136002)(77096005)(8676002)(87936001)(2906002)(81166006)(19580395003)(5003940100001)(50986999)(92566002)(19580405001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0769;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BL2FFO11OLC003;\n\t1:9pvYEZgf+Hiqiiyr1mFiQqolbfHs2lsexby0jXZH4cd+a0pq0YeKj+Pq4zPE51gXYa1UWviXnPR1/kxeRzJPw4kGip6kRIDOrPvrUbSulI+q/XtL9fv5uppk3JUqR3uDa02hzPqfLpoF4R5VkuxXRGpI/h69InopNMV8CkOmVZhfWKeUl5TfA0swL7WCu51l9q92oJGmmg6wOsbmf0iUCOiEilbL7gLrnY/tmhH1gwWKeVZzQyjsxGgP9yHEJdbCAWb6Lz+mHf/CwQCN/4zM4k4At0dhZtkVubA75wG/Nxlr+nrjSx1apufAA6B/emYw+yF2HGEv0LXSL/OVewfG48JjWdB9dfGblK25cMFvnWfYoPD00G3HXsGjhUe5hnmNsLDo2GElPjz09V5WAwudDLzSbuqllyRJ5j025iFsDw6NdaFk0t1VGHTipVjsJ37EFTr07BekBPX82xtSs1d1ENG+afT1qZuA/wFkkwqLWYaIa4R0Adr4BJAgR3lF1pKz/UJfLpNOYy2CSkpx3qeCOsrk02KPWf1RjRlamHCj7for7v47plDH8VWYbmk0almVW+DzlHlCpiO2RweYwy3z7Y9HKQ4URoy6Csi7qKGjrs5HsSQmkvfqQQQFEu59fL+Z",
            "1; BN1PR0301MB0769;\n\t2:jQb9L3ZbGyeIOFKi93XHfHKXyi22eEEpuDITk/fk+wYgxchJhAj0m/cKbZwX9/JQk+dqtTuMBqVGzXhhtcP/eHm4nNcuH1UMNomuskhJnuxzjrd8A4k9GA25aklPUCxX6QoXuT0PHPBc2HP5V8OTlOBmpIkwIXu+ZQ6TdWMB0nZZNshL/2H4c0f8yz/8kXhU;\n\t3:t/TLImuz4KdgsufwaX9WpBaNoJW1WN+/lBJFbcEdCPd82IWlBjYkF/IGKnDL+ALSy10AGa9i+XCNsDg/f0nlX+7r/UtHzREdTTNbAUeFZYn7c3tTLkzy0/9ksHh5sdd/73y8jl0XZ5bhUPInZxFl2oIRD9vONtn2KzREBFzazeEPjP1ESjtetHMSzj73zA0wNBdKaGOQJROu5mm4G1vSM5Etquqx0tD8K3IjmcLVlkY=;\n\t25:o5S7YeOBniO+ep3RID9aRFC81RCiZAp745V7QTrnV7lCp/mdAD+Au+Zq/ZF8Fu4ozGFgBJaZNZtESVgyjByKrfAfH+f6sLcWh4tcGDMevxc0p1bGVIpDsLh/apa5MOoXUEzYCqyJzd69XZ00NOCNjz9IZwBvpQUcWe59NTznSO/0fkiyx15BX4n5a/VhVV9puSuh1TFLMhJi0BN/7GoB8z0hPUoQRJjzysGsiO3AzPGvXVtolJPHKLFw3i+Gr6a6oKFfMNwmawWfC3jWmzjwfHCH08Fu+WtzffaXuZof+rvE/99I8ZBzYZXPRSBEY7Dr8i6Q5FW73ZWiiJwULmZBdoT5VYfR+KPAbCyIJ5l+bcF5RBgOa1p4VcNCdkCtePBLzwopukIiNJEHCiu7I91EcBHexTaxbalPc0ucvGq+x+E=",
            "1; BN1PR0301MB0769;\n\t31:3fdQFTjd4xTcvPyxG43VAtbXFXM5a6ORo30VAAXwocuX9DEeRMD+N7xH5QWBj3DLFp2g/dEEmXwplp2sXloFYWt6CSqy8lOwoUGxDdYEC0JjuXExmgA8TfuEVMSGnss0O2XqpOTyaDZV0DxUOaXCSBoMEq5Pfy8CSBaoEAcGw0w1YJHWELsuXNTwlXqPJmBE+zwLMsQpxOXRFeqgUjpvlQ==;\n\t4:jG8di+a2YrpD3RiYzVc+0c3qUKZFge5XfpZOfEr93Is5lweQntjrzEr41moG99ID+Oh7v2BNp+mr4y0Skw7Dr6lqMhY/0yKsMv/LlkYQLuNWgmIUgDb32UDf6JpeDEHxpZZy46ewdlHwXPmKSPYDT9LlHHSvKTfUWbfGU7zvkiF7fJ87Q0nIsomgDHZphZ+xkttgu67P+Ath3uOLMixv4MKgz4pllfGNqgtbjQIDOh9jbIy6T1kwhUEI2/DxccIzBBkfOwBAzZEIj4TDkFHqeCYue7lKSwXIgqOxh8zpRIK/fCwfXjuSIxrWdDRAMyi8tHhVPlWLAmatWNdGRSeir2aTYDWYTINuV/g+UgSxD5zeS1oHw7mOAIzvS/se0a7CNG7TrIAH7ZVtNbY2Io56E3jO3UmEQ1792wpT2yISfGwVwO3yJumKhFJAiq5KogL9OjA+k9JEbhvPvf7nAE9vqmr09nCQshM1JK10dx8VD62CDIQ+vRF/A8Pvy5Sqogtgbf8lidAd9Dz37XJG3GBWzg==",
            "=?us-ascii?Q?1; BN1PR0301MB0769;\n\t23:XmyMROHoNrBuNcaJ+gWPpshTClxaVYLVpewDR+v?=\n\t=?us-ascii?Q?L5zA2hD5BCciEZum9DsEuSAOUI0jA/nziSqINdPnoV0SadJR2j5RN9ejxeOA?=\n\t=?us-ascii?Q?YD1y3hTlPyW9+O0eTqFBtQn+B+2DmEwDsp/36LRx0V44rspag47Wstk61r3h?=\n\t=?us-ascii?Q?uyEi5cxy4hAGpSCwlDpeSyjPgI8zG0LhCxfqSV02g8PsCV3EtUrsR0u0XIm5?=\n\t=?us-ascii?Q?Va7gBseARtdIegZsi6g6DC+N54xNJaCuWGZloIQMxzT8asp8EvlE62zCLJly?=\n\t=?us-ascii?Q?ash2/7gVs8FO8Yb59otb3JUkUbKW8cmjZfjaS4NkFYxd1XxYkwlfrGWJiQwb?=\n\t=?us-ascii?Q?kv5MsYXrEbw41n/TpLD8axombfgHzZz2Umq4/PoQTeyTcyOzMC/SvQcHDWZa?=\n\t=?us-ascii?Q?y6sHrJ6kBKmNuiyPtHOiBVx7V8AabD768EXujJT4Z+kHdkCQBwVi545VDVLl?=\n\t=?us-ascii?Q?OIRsHTWMGlPoVsckEXhGraehSS5tPyc7uY1eqK0axIZmvhU8xF+sA1q+PCcV?=\n\t=?us-ascii?Q?VaimPfRLCot0aCnNUvYT9DaePOASQo6XvZ6V+lwTGdHlSjvxI2am56HzaVR+?=\n\t=?us-ascii?Q?2ZdN68WRd50pUz4NLkll015dwZuMBRLKHT1waKYbXik0wtOMc557P7PJMfCx?=\n\t=?us-ascii?Q?WQir7wmPb6yWgRSBb0D1DMI7EYcG3h9D2i7z3H0J59qPE7sFI5iEJ6f1wvNG?=\n\t=?us-ascii?Q?GeC+bE88D7syPcqbfsPxyw8rwyM1Dp9Ux8JzzQF/QwAZxVCIxU4eZkYhB3GV?=\n\t=?us-ascii?Q?kUdw8e1mH8zbuuM7Fu2/1z5FJepBpO3jZC38LTh9F1Ur4UVuukMoDRG+q87A?=\n\t=?us-ascii?Q?4Ma+BiAfdMBqUX7PvZzWzXCbbgyiLEezn3Qc9uiIWidsnlWL/MmFLy0547Cv?=\n\t=?us-ascii?Q?yW51PZ5NTOITkTO/1TilZhFuoj1ogZzl6t3vXQxa5Lmm5ON66l9cXZ4cVnun?=\n\t=?us-ascii?Q?qyyKrN7dCy4gUhuyUlgyDMWI9muzjUSiAip3lHwefk/mSj8OdYmx3fCOsOxk?=\n\t=?us-ascii?Q?QG6jPYyAfUCqcwnlK4PQ+kmcgUkiyj9UmnSq0zSBquOY7uKFilrt7YBh3JQ8?=\n\t=?us-ascii?Q?7NaY4AMPJHxm+N9QtYfoQ8n7iiuyP8m9ZCvQNMzMKBK1F6zVrwUOq4lhWJtI?=\n\t=?us-ascii?Q?MXyj6cby7YS8=3D?=",
            "1; BN1PR0301MB0769;\n\t6:pk0+rj0p/IxHSiG2JpE3wRTmkRG4vby35WBtmBMFTgtc8QzouTUTXG8sFKezj6tEocB+ln5hdZrguwVMZcYUCobmJ/ANOTvmRYJ43uLEoHp+bDT3ZyBZNYxKuXrAqWNbSq5nbhTCbD/HHoFU3Mv0ZEsl6srfxgU7f/Qh7yCR9wyMNgry9L55Prav8j3KAJcBD4RZelVEMfsIyksyYYHsPJS2paZcPRNT1x8ljFVFFcass1w0Q6fK/K11SOi5lQRPHr+Ss0cVGGvz9WQWqi7M/Sc0KMyV4pFcM+ophxIzFJY=;\n\t5:HItpLyM9JkbCoUU6kx+dZfeOU8dakw67jHZDdegNrBatngdErp0Jf24JpV+MCDzrC4DfF2M6/Gv6BFw8DilQUYtVgbXODiQhE86QgF3s8OBqjrGxTZJ6wxAHrxkTqWdh1e4DfvgcyZ3C8AC3ddL10ZdxOTGleErwRlUM0d1wifc=;\n\t24:Y0gmYeJN2U5sNhQuDR/7+MfgRMlpSCegk6qZ4i8Qcq4ucrsRX7WifxDBFbwQSqZ8ct0DbWGqx51Ur80yaJVRcgxq2LAMt4OVAExZEpkq6II=;\n\t7:Yt0aZ6S158bT7pjl65/pn7ADFJnBymRpEPUgzzbu9jyxuexAxDig0fYBNriD5Eno58rp3sys6aFGkMeg3dFnHi869U3K/7JqGX0ajLFznFdF/VNU/92dA0/G8LpHX9VCThjismGPXKCMJ0IJZ1HgmDxblP7dnQg2+CsQCwVssmixQ/lMtgBmJGKqCIwo1cNuEcf7Jq4Sbs+sNNh5zbEXY7A9eJtNArOWXHtoTV+oj+9JSNC0eXpUlFgsr64MjyyN"
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-Office365-Filtering-Correlation-Id": "ee4a680d-cff9-4387-433e-08d3aa19f7bc",
        "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0301MB0769;",
        "X-Microsoft-Antispam-PRVS": "<BN1PR0301MB0769C1C9B00C7752D144CC8C90300@BN1PR0301MB0769.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(601004)(2401047)(13023025)(8121501046)(5005006)(13017025)(13015025)(13018025)(13024025)(10201501046)(3002001)(6055026);\n\tSRVR:BN1PR0301MB0769; BCL:0; PCL:0; RULEID:(400006);\n\tSRVR:BN1PR0301MB0769; ",
        "X-Forefront-PRVS": "0001227049",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "12 Jul 2016 06:01:29.4558\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Id": "5afe0b00-7697-4969-b663-5eab37d5f47e",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.168.50]; \n\tHelo=[tx30smr01.am.freescale.net]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN1PR0301MB0769",
        "Subject": "[dpdk-dev] [PATCH v6 12/17] pci: add a helper for device name",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <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": "eal is a better place than crypto / ethdev for naming resources.\nAdd a helper in eal and make use of it in crypto / ethdev.\n\nSigned-off-by: David Marchand <david.marchand@6wind.com>\nSigned-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>\n---\n lib/librte_cryptodev/rte_cryptodev.c    | 27 ++++-----------------------\n lib/librte_eal/common/include/rte_pci.h | 25 +++++++++++++++++++++++++\n lib/librte_ether/rte_ethdev.c           | 24 ++++--------------------\n 3 files changed, 33 insertions(+), 43 deletions(-)",
    "diff": "diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex d7be111..60c6384 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.c\n+++ b/lib/librte_cryptodev/rte_cryptodev.c\n@@ -367,23 +367,6 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)\n \treturn cryptodev;\n }\n \n-static inline int\n-rte_cryptodev_create_unique_device_name(char *name, size_t size,\n-\t\tstruct rte_pci_device *pci_dev)\n-{\n-\tint ret;\n-\n-\tif ((name == NULL) || (pci_dev == NULL))\n-\t\treturn -EINVAL;\n-\n-\tret = snprintf(name, size, \"%d:%d.%d\",\n-\t\t\tpci_dev->addr.bus, pci_dev->addr.devid,\n-\t\t\tpci_dev->addr.function);\n-\tif (ret < 0)\n-\t\treturn ret;\n-\treturn 0;\n-}\n-\n int\n rte_cryptodev_pmd_release_device(struct rte_cryptodev *cryptodev)\n {\n@@ -446,9 +429,8 @@ rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv,\n \tif (cryptodrv == NULL)\n \t\treturn -ENODEV;\n \n-\t/* Create unique Crypto device name using PCI address */\n-\trte_cryptodev_create_unique_device_name(cryptodev_name,\n-\t\t\tsizeof(cryptodev_name), pci_dev);\n+\trte_eal_pci_device_name(&pci_dev->addr, cryptodev_name,\n+\t\t\tsizeof(cryptodev_name));\n \n \tcryptodev = rte_cryptodev_pmd_allocate(cryptodev_name, rte_socket_id());\n \tif (cryptodev == NULL)\n@@ -503,9 +485,8 @@ rte_cryptodev_pci_remove(struct rte_pci_device *pci_dev)\n \tif (pci_dev == NULL)\n \t\treturn -EINVAL;\n \n-\t/* Create unique device name using PCI address */\n-\trte_cryptodev_create_unique_device_name(cryptodev_name,\n-\t\t\tsizeof(cryptodev_name), pci_dev);\n+\trte_eal_pci_device_name(&pci_dev->addr, cryptodev_name,\n+\t\t\tsizeof(cryptodev_name));\n \n \tcryptodev = rte_cryptodev_pmd_get_named_dev(cryptodev_name);\n \tif (cryptodev == NULL)\ndiff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h\nindex 3027adf..06508fa 100644\n--- a/lib/librte_eal/common/include/rte_pci.h\n+++ b/lib/librte_eal/common/include/rte_pci.h\n@@ -82,6 +82,7 @@ extern \"C\" {\n #include <stdint.h>\n #include <inttypes.h>\n \n+#include <rte_debug.h>\n #include <rte_interrupts.h>\n \n TAILQ_HEAD(pci_device_list, rte_pci_device); /**< PCI devices in D-linked Q. */\n@@ -95,6 +96,7 @@ const char *pci_get_sysfs_path(void);\n \n /** Formatting string for PCI device identifier: Ex: 0000:00:01.0 */\n #define PCI_PRI_FMT \"%.4\" PRIx16 \":%.2\" PRIx8 \":%.2\" PRIx8 \".%\" PRIx8\n+#define PCI_PRI_STR_SIZE sizeof(\"XXXX:XX:XX.X\")\n \n /** Short formatting string, without domain, for PCI device: Ex: 00:01.0 */\n #define PCI_SHORT_PRI_FMT \"%.2\" PRIx8 \":%.2\" PRIx8 \".%\" PRIx8\n@@ -308,6 +310,29 @@ eal_parse_pci_DomBDF(const char *input, struct rte_pci_addr *dev_addr)\n }\n #undef GET_PCIADDR_FIELD\n \n+/**\n+ * Utility function to write a pci device name, this device name can later be\n+ * used to retrieve the corresponding rte_pci_addr using above functions.\n+ *\n+ * @param addr\n+ *\tThe PCI Bus-Device-Function address\n+ * @param output\n+ *\tThe output buffer string\n+ * @param size\n+ *\tThe output buffer size\n+ * @return\n+ *  0 on success, negative on error.\n+ */\n+static inline void\n+rte_eal_pci_device_name(const struct rte_pci_addr *addr,\n+\t\t    char *output, size_t size)\n+{\n+\tRTE_VERIFY(size >= PCI_PRI_STR_SIZE);\n+\tRTE_VERIFY(snprintf(output, size, PCI_PRI_FMT,\n+\t\t\t    addr->domain, addr->bus,\n+\t\t\t    addr->devid, addr->function) >= 0);\n+}\n+\n /* Compare two PCI device addresses. */\n /**\n  * Utility function to compare two PCI device addresses.\ndiff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex 89c7b31..147b26f 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -220,20 +220,6 @@ rte_eth_dev_allocate(const char *name, enum rte_eth_dev_type type)\n \treturn eth_dev;\n }\n \n-static int\n-rte_eth_dev_create_unique_device_name(char *name, size_t size,\n-\t\tstruct rte_pci_device *pci_dev)\n-{\n-\tint ret;\n-\n-\tret = snprintf(name, size, \"%d:%d.%d\",\n-\t\t\tpci_dev->addr.bus, pci_dev->addr.devid,\n-\t\t\tpci_dev->addr.function);\n-\tif (ret < 0)\n-\t\treturn ret;\n-\treturn 0;\n-}\n-\n int\n rte_eth_dev_release_port(struct rte_eth_dev *eth_dev)\n {\n@@ -257,9 +243,8 @@ rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv,\n \n \teth_drv = (struct eth_driver *)pci_drv;\n \n-\t/* Create unique Ethernet device name using PCI address */\n-\trte_eth_dev_create_unique_device_name(ethdev_name,\n-\t\t\tsizeof(ethdev_name), pci_dev);\n+\trte_eal_pci_device_name(&pci_dev->addr, ethdev_name,\n+\t\t\tsizeof(ethdev_name));\n \n \teth_dev = rte_eth_dev_allocate(ethdev_name, RTE_ETH_DEV_PCI);\n \tif (eth_dev == NULL)\n@@ -310,9 +295,8 @@ rte_eth_dev_pci_remove(struct rte_pci_device *pci_dev)\n \tif (pci_dev == NULL)\n \t\treturn -EINVAL;\n \n-\t/* Create unique Ethernet device name using PCI address */\n-\trte_eth_dev_create_unique_device_name(ethdev_name,\n-\t\t\tsizeof(ethdev_name), pci_dev);\n+\trte_eal_pci_device_name(&pci_dev->addr, ethdev_name,\n+\t\t\tsizeof(ethdev_name));\n \n \teth_dev = rte_eth_dev_allocated(ethdev_name);\n \tif (eth_dev == NULL)\n",
    "prefixes": [
        "dpdk-dev",
        "v6",
        "12/17"
    ]
}