get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 15566,
    "url": "https://patches.dpdk.org/api/patches/15566/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1472641235-23626-11-git-send-email-shreyansh.jain@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": "<1472641235-23626-11-git-send-email-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1472641235-23626-11-git-send-email-shreyansh.jain@nxp.com",
    "date": "2016-08-31T11:00:31",
    "name": "[dpdk-dev,v2,10/14] ether: utilize container_of for pci_drv",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "4c6b3f4a51c362cc986c18bbd94c11dfce30e84c",
    "submitter": {
        "id": 497,
        "url": "https://patches.dpdk.org/api/people/497/?format=api",
        "name": "Shreyansh Jain",
        "email": "shreyansh.jain@nxp.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1472641235-23626-11-git-send-email-shreyansh.jain@nxp.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/15566/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/15566/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 2B22B3978;\n\tWed, 31 Aug 2016 13:02:08 +0200 (CEST)",
            "from NAM03-CO1-obe.outbound.protection.outlook.com\n\t(mail-co1nam03on0071.outbound.protection.outlook.com [104.47.40.71])\n\tby dpdk.org (Postfix) with ESMTP id 917F25584\n\tfor <dev@dpdk.org>; Wed, 31 Aug 2016 13:01:56 +0200 (CEST)",
            "from BN6PR03CA0072.namprd03.prod.outlook.com (10.173.137.34) by\n\tBN6PR03MB2433.namprd03.prod.outlook.com (10.168.223.11) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id\n\t15.1.587.13; Wed, 31 Aug 2016 11:01:53 +0000",
            "from BL2FFO11OLC012.protection.gbl (2a01:111:f400:7c09::142) by\n\tBN6PR03CA0072.outlook.office365.com (2603:10b6:404:4c::34) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384)\n\tid 15.1.599.9 via Frontend Transport; Wed, 31 Aug 2016 11:01:53 +0000",
            "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBL2FFO11OLC012.mail.protection.outlook.com (10.173.160.159) with\n\tMicrosoft\n\tSMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id\n\t15.1.587.6 via Frontend Transport; Wed, 31 Aug 2016 11:01:54 +0000",
            "from Tophie.ap.freescale.net ([10.232.14.87])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tu7VB0lab010481; Wed, 31 Aug 2016 04:01:52 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com;\n\tnxp.com; \n\tdkim=none (message not signed) header.d=none;",
        "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": "Shreyansh Jain <shreyansh.jain@nxp.com>, Jan Viktorin\n\t<viktorin@rehivetech.com>, Hemant Agrawal <hemant.agrawal@nxp.com>",
        "Date": "Wed, 31 Aug 2016 16:30:31 +0530",
        "Message-ID": "<1472641235-23626-11-git-send-email-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1472641235-23626-1-git-send-email-shreyansh.jain@nxp.com>",
        "References": "<1451682326-5834-1-git-send-email-viktorin@rehivetech.com>\n\t<1472641235-23626-1-git-send-email-shreyansh.jain@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131171149147114099;\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)(979002)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(92566002)(68736007)(33646002)(2950100001)(47776003)(8676002)(36756003)(19580395003)(11100500001)(50986999)(626004)(81156014)(76176999)(189998001)(586003)(5003940100001)(85426001)(77096005)(5660300001)(50226002)(50466002)(8936002)(229853001)(305945005)(86362001)(7846002)(19580405001)(106466001)(97736004)(48376002)(2351001)(110136002)(105606002)(87936001)(81166006)(8666005)(2906002)(104016004)(356003)(4326007)(7059030)(969003)(989001)(999001)(1009001)(1019001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2433;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BL2FFO11OLC012;\n\t1:z57ln0kkRfpEbybp25+7uhGLsSSi6XC5PqAaT7R6kxSCX8SxZzxmwx3Y3DxpqtvhOO3liXirO3Ceu0RE7K5W/NB4/6ATjY0Mp7JGuxoD1cEJGa7fJqra5Syr7/fvRyz8pqKqedX4IiDKozVBWQ3MLlBbiEEBQh3k9IwkRGM7m2vM3sYKD9a3t0WD5qtkTCRI5dPx7K4q21hrkBVg8dujjvNWC7KUX62aCByBAjhl/fFQQGGYQnJiKzMyiOxB7zSjVxUtkGk5O7ezwBS8st7WLB4WyxQIsFixxOpvbog3qrHPkX5qv6hBrts2EOONBz9wAwlbRM25S9sIFWAEN7Kxa4C1/VYYmIgcaHdfgwGznc7Pl4Dd2wV6ghsDtrwDcAB/el5VkJjHEvOAnN6bV32wKKS3MkQZkhpsD8ONCzTj/8fhhjYGm6Qow9JKS84kK/Top6mqYdqV/Xsu1uyOwRNSTrefkgcihdjKU8jc5NLcECFlQ5DRGiLdNqjS6c6ONSxD6ZcCu5Ze+sDL/oc29wvtEKeJB+GnzzT2MOaOIunR1TQtP+RCTG2RXwA9zgbQ7hrYpKPoKSDmFzqxFcsV43AVvhEMhKc4B4tjdsl1KbGg7ykPQ79gv9EsWGWai44/E1G1wBsYFLNDyJ0BVJ5/Jh27QjlxCxlgbESYYheI/O+PTkQSLq0ytN9ktmyqEAj/UQQ4/+/fra941Azy6Q3pgS463BFHNAV2Cv6WST9Ntbvst4I=",
            "1; BN6PR03MB2433;\n\t2:VcWv/0zuiOn70WU1E6kthB9t3vEgfQlk0MOgUK5yuNnJQX7mecpINOk1C2FUxFfPA7bm7YdLfagrZUKWnpTw9HjjpY7v6EsXX2ycPsGY6oQhLvjbDDfoSiStWKS74/FAl7sduo40QLHeNPYLvQ6BpnRpwP4jw0cBYTfGYkDV/pWm10VVrOphcS1fWgSPxdFA;\n\t3:zh+uRIf1uQ97PLpPwMn2z07is3dLTLX8bR1PFK681MRkS4NJX9QApdIb3HnNWe0L2280HVrCCzIGwxEpNECiE+CiHAGj90eiOxLODoUeacOVWqSHSaTsmdJvSWqaN/wSP+TUMBQLdmQ8/FbRJeA9gfaRcKLV+J2errUXFqAZBUnRzVw4iB7PNmoEk2jnZAuVjO/cA1Nb3s5qs9zkHV/JwzLP9hpKJNom0k/m0cTLpj4=;\n\t25:uM1DKON7mq4kak5xw3rWlnfHlSiHb43vkIRnT2qCCdyPydmEUD9eI+tzR/7GxdEKwp5ABOnBob+mBBoCsYYf1B2oWccxvZTLuluogp4SlsYM0tjMYjrJs1ZrFQWqnEv1WMBAWRWsgggv8lRa0xCe5gpjlbIC/Z3MOJ5um0sPp6jJxyPzbCKL6M4RqVImn3hhMypDJAwhoBHi0/ZXHw63WByx6e11e2iqeK9wAKl4N4jEI4qLJFP8hn7Azn8UMuNx65Re8YnSA8Y9/oZlQwXvC2aXw2IED2WfwmQb5CL73cETi3Rq2fhcqcrG+GAuGl0O4z7RbC0wgL5Wk7+GEW0fPzosYvgtRHJMAqdyGyoe/5x5Wr9r+ueRyX5BkdPKtq5UKySqb1ORL5CEGtETFBjH6yuBtk7xU8LDar4jcf2Uuek=",
            "1; BN6PR03MB2433;\n\t31:a1XPE9N7vq4/WtqjmyN8DHD0A8rxnUMqEjOnl9Umj/VOQmlYKZ1Ff4WyTXo6nw80EhCFqJbVvwcARKOUzGoirYjWMsblqykTMKM7MgVLAB852X7qfXaEhjSRqFpVBjuNsfHU2trhQLm9SzSvr/wICpSKExiMd8zJfhBRVebfx9He+Zgk2w97rkCMMBChCQRX7hCJCieh5YcArZSluXG60DQiFfduGC2ulxwAcgeRvbQ=;\n\t4:c29lrV8fB78U/vSz9WPh6zIlEg6IU2ixv/CrngCl0miCstoWxmoF7LJUNeSysIFQEWUuXmigF/tIiAf52s/t85XZ7RYpLK/iDccerBV9GKtYCrWEB7omho6DKRywKhOn+EZN+VzHU0uNs7IsNZitBvpK3S/W+5A+1bITIonhC1wqm2lQmbH02QsK3/GOpDWBNoi0tldL/l7R4n8Xjgkd09BPd5hA8/Pq3VzUCUq2rLtLUdltogCBuBHr9cqdXQqflJ10/4rHnE5tuJhKUqM2uh6ElnyZQcvK9gcuE3EDNXcop661SJ0sIlJQTY5SttTYo2Efef/tZpnpVMSDK+vPnJrjq+VhBpg35C4FEC63+wQPo3bQseQoxvAukN9FvFC1Ly1LzKpswLo+kMm59NRgdpCMIi8p/SkxhiKfNj0YaZGr+CK/UXl8VZoLgW4Cr2J/oLj3/CvY/bW95M3lRDAAd1ZnA6arjkdJ40wtD0tpOL6T5UIIciJCQvt12103VCT867SJzoBIIaNrd7K2pQudexY9ktQRJLiVUWg8DqrOY08=",
            "=?us-ascii?Q?1; BN6PR03MB2433;\n\t23:FMHrQ+zaaflWP7Z0c8H0QGIacRMOnOJqy5KkeOguW?=\n\t=?us-ascii?Q?kpV/2rOJ12GoO0tHsCcVd1cPS5nnNemOcpoqVz7vDKu1w9BbdeOsOtCz74Tz?=\n\t=?us-ascii?Q?fbGNvjBY8x6TKCuMRIglmAb6jGzvrmwC0QpXaN4ccN6DxN0IbBLXsOIMGMPL?=\n\t=?us-ascii?Q?sQA/ZdDCDAB1ZXqgLJSiqzhLejSF6j6MPR36BOqEfOD73Zgdu4mhWxewSIiX?=\n\t=?us-ascii?Q?lXqvluD97Sy6Eh8xSDzb+VN6D2qE6bFk7RrdlHBc96CSoABe0pXB3WCjeyjY?=\n\t=?us-ascii?Q?ZRmJM1i62+7arDnR31r3mkEP968TTDV7pbA93lUK9ymS6iaoMEXuNe6rT187?=\n\t=?us-ascii?Q?h1JM82t9/hGV+1F7qp1MHCOsttniZQ4hweyieKBg+tG4riR6MARzDMCFl9l8?=\n\t=?us-ascii?Q?D40YP7lELvoRdI/tvt0e+CuawcqtyE2VOldDmg8veudu6pb2+Oo5qY516HEB?=\n\t=?us-ascii?Q?NKBRB81dqD4vR2RsVZnoS5R/yi74SOJdEgEyAwgswz29cdKybhmHtM06K8df?=\n\t=?us-ascii?Q?mjoPEVtSEe3IIYROg4vqLG6r0h+hfSPWxdUzO9tT0DjST/D/ev/IxZ3qXQX2?=\n\t=?us-ascii?Q?UXbni1el2gZZ9PBCVm2w1VY4dvRIHs7s4VLfanMU86kRAd2fWRw/hs6+CG2U?=\n\t=?us-ascii?Q?0LFNFC2fo9BmbV7smkSpHbWkMGK/cr9Qun1On7eIUzrO8kGnUl2jpMuZm0fX?=\n\t=?us-ascii?Q?zVXORvtmEJCUKsmpHVo7Wg/4++znot6l6b5SJTxglNG1r28zQ+8qnbYJ8tq2?=\n\t=?us-ascii?Q?e9ja6vO6o8SB4e4CaiGNStqKDwx5+aQYd2+5ynA3O93WshmwLOY3qRvNGJQe?=\n\t=?us-ascii?Q?4TE+5Q+HQXcE/uNkVuqgOw/uaF2M3gwtD8UrhfpzRj18a4ULGTpqd1gqGcVv?=\n\t=?us-ascii?Q?f1fFeBWrYCVy7nD9IlqnoKmt4YMYKjkrDrlTb+E5FAwza0P2LQ/YnOf8CUtX?=\n\t=?us-ascii?Q?Ijd0R4emdpyAOfgiRGPnPNTOYBOlU4qNHCgrZsXtnJqyF0JGwWEz2Tt2Udjp?=\n\t=?us-ascii?Q?MG1kRNBnHqBFRTkNQcaTxJ2yE+96CvF449RdIpQUObaPrcGETV2qA7u26wmA?=\n\t=?us-ascii?Q?yENfehTzkC3D0Af2FMorxwWjRcaJw031IPX7q96f0RtVpL3mgs7HhjAf4SpQ?=\n\t=?us-ascii?Q?uwnp/9Jc0ar06BEw4ipKD0mbo4OzdYy3FVBgaPCJCgcPQAmeRRgAUZiCbgVr?=\n\t=?us-ascii?Q?2GXtBQYQQ2/ilMKcDSmRM9uRSotWA676gp4Smpks/0XeTANnvgwefCDqJ24z?=\n\t=?us-ascii?Q?5QfUHROVmUG0iRuvXXrc3wSxE52mibw0vnCVAcz?=",
            "1; BN6PR03MB2433;\n\t6:tgpe8IDMNTYfqkHCzL2cUIYjJZaDgDkbQrwLRlwEdmJwazmuLtuyyfxJ/iqIkBeImlLCSTkHB8C+eRkju7OnW0z/tjajR/zqICCIBp1gZC28g6rMP0bN3mB2l/KzpgTafzooKXQfP9VGg/5fhd+ErUn5LwYqAfO5kDUakG3sDcE+3v1MDAy2kIi/1DCKCdYS8PfG+j5827Uxu5k7aWoD5nucBBLEN41K7EvEGkZqaWEaVkaZLjCR0KTXk03AZpORA1cDVOY/iu6nj0RipUyyX7d5V4AAvE97d6HhddZVjqM=;\n\t5:VEbxc5TpRqvU/PRk/GhSo6v0PeYVWLS391ACJGo7hOWsQwx+5yEEXOYcHjV50i3SXEJTQ5Q6vPW8MapU7aRdpkRxX67SX+QTD/9ktOKZlP4umvo/tR9ro4nLBKr5WB8dVP/ky6KWK6vBNmGlEcMd34WTOyrTJAycPC2B681HssE=;\n\t24:Dwj04MTjnEvVIVRJA06E5gib0TTvTTC4WBYCog7rlpwDARMmbOf7vXE8EC2MhBtjPpwmzCBrOi2t2trp1NFbv4YwZx1GIqGKPeZKv+nma+s=;\n\t7:ucNvLFgAYeNi8wfsJaJyhvVqOYpP2V3yXNoIneTmoD0niPRCFSE0eJThEG4EPWBZ4WO4Obvjl6H6tz2nqpR+7A98f9+ZfNF+FRElGMuH9h2E7F+3z2BxF4egQ55ozUuJIGqND9YkpXU7IZUzDLFdoRlylcqtam2rfx9eDa2aLXO+De17wWxmbxYf5K4i9hTT++elHcAgFSBwMM91x/CFHeTmo0lIQWE/RE0iNY2CtqFBFVjXGfvTlqLtQEKx8Lv6"
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-Office365-Filtering-Correlation-Id": "c397232a-bf5e-4742-8a73-08d3d18e3828",
        "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN6PR03MB2433;",
        "X-Microsoft-Antispam-PRVS": "<BN6PR03MB24330780C11E5987B20CCA3290E30@BN6PR03MB2433.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6040176)(601004)(2401047)(13017025)(13015025)(13018025)(13023025)(13024025)(8121501046)(5005006)(10201501046)(3002001)(6055026);\n\tSRVR:BN6PR03MB2433; BCL:0; PCL:0; RULEID:(400006); SRVR:BN6PR03MB2433;",
        "X-Forefront-PRVS": "00514A2FE6",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Aug 2016 11:01:54.5398\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": "BN6PR03MB2433",
        "Subject": "[dpdk-dev] [PATCH v2 10/14] ether: utilize container_of for pci_drv",
        "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": "It is not necessary to place the rte_pci_driver at the beginning\nof the rte_eth_dev struct anymore as we use the container_of macro\nto get the parent pointer.\n\nSigned-off-by: Jan Viktorin <viktorin@rehivetech.com>\nSigned-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>\nSigned-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n lib/librte_ether/rte_ethdev.c | 4 ++--\n lib/librte_ether/rte_ethdev.h | 2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex d54ec9e..b10d985 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -242,7 +242,7 @@ rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv,\n \n \tint diag;\n \n-\teth_drv = (struct eth_driver *)pci_drv;\n+\teth_drv = container_of(pci_drv, struct eth_driver, pci_drv);\n \n \trte_eal_pci_device_name(&pci_dev->addr, ethdev_name,\n \t\t\tsizeof(ethdev_name));\n@@ -303,7 +303,7 @@ rte_eth_dev_pci_remove(struct rte_pci_device *pci_dev)\n \tif (eth_dev == NULL)\n \t\treturn -ENODEV;\n \n-\teth_drv = (const struct eth_driver *)pci_dev->driver;\n+\teth_drv = container_of(pci_dev->driver, struct eth_driver, pci_drv);\n \n \t/* Invoke PMD device uninit function */\n \tif (*eth_drv->eth_dev_uninit) {\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex 2a697ec..8320dc4 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -1842,7 +1842,7 @@ typedef int (*eth_dev_uninit_t)(struct rte_eth_dev *eth_dev);\n  * Each Ethernet driver acts as a PCI driver and is represented by a generic\n  * *eth_driver* structure that holds:\n  *\n- * - An *rte_pci_driver* structure (which must be the first field).\n+ * - An *rte_pci_driver* structure.\n  *\n  * - The *eth_dev_init* function invoked for each matching PCI device.\n  *\n",
    "prefixes": [
        "dpdk-dev",
        "v2",
        "10/14"
    ]
}