get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 26401,
    "url": "https://patches.dpdk.org/api/patches/26401/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1499179471-19145-35-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": "<1499179471-19145-35-git-send-email-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1499179471-19145-35-git-send-email-shreyansh.jain@nxp.com",
    "date": "2017-07-04T14:44:25",
    "name": "[dpdk-dev,v2,34/40] net/dpaa: add support for flow control",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f5e6e2df3607c9347b6eb82c022192a46c3decb6",
    "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/1499179471-19145-35-git-send-email-shreyansh.jain@nxp.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/26401/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/26401/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 5FE217D1F;\n\tTue,  4 Jul 2017 16:36:42 +0200 (CEST)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0060.outbound.protection.outlook.com [104.47.32.60])\n\tby dpdk.org (Postfix) with ESMTP id EDE25913B\n\tfor <dev@dpdk.org>; Tue,  4 Jul 2017 16:36:40 +0200 (CEST)",
            "from BN6PR03CA0011.namprd03.prod.outlook.com (10.168.230.149) by\n\tBY2PR03MB476.namprd03.prod.outlook.com (10.141.141.153) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.1220.11; Tue, 4 Jul 2017 14:36:39 +0000",
            "from BL2FFO11OLC012.protection.gbl (2a01:111:f400:7c09::145) by\n\tBN6PR03CA0011.outlook.office365.com (2603:10b6:404:23::21) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11\n\tvia Frontend Transport; Tue, 4 Jul 2017 14:36:38 +0000",
            "from az84smr01.freescale.net (192.88.158.2) 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.1199.9 via Frontend Transport; Tue, 4 Jul 2017 14:36:38 +0000",
            "from Tophie.ap.freescale.net ([10.232.14.39])\n\tby az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv64EZM7I016426; Tue, 4 Jul 2017 07:36:35 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.158.2)\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;",
        "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.158.2 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.158.2; helo=az84smr01.freescale.net;",
        "From": "Shreyansh Jain <shreyansh.jain@nxp.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<ferruh.yigit@intel.com>, <hemant.agrawal@nxp.com>",
        "Date": "Tue, 4 Jul 2017 20:14:25 +0530",
        "Message-ID": "<1499179471-19145-35-git-send-email-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1499179471-19145-1-git-send-email-shreyansh.jain@nxp.com>",
        "References": "<1497591668-3320-1-git-send-email-shreyansh.jain@nxp.com>\n\t<1499179471-19145-1-git-send-email-shreyansh.jain@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131436525992111965;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()",
        "X-Forefront-Antispam-Report": "CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(39400400002)(39840400002)(39450400003)(39410400002)(39850400002)(39860400002)(39380400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(2351001)(110136004)(77096006)(8656002)(53936002)(50466002)(54906002)(47776003)(38730400002)(50986999)(48376002)(76176999)(105606002)(6666003)(2906002)(305945005)(68736007)(106466001)(69596002)(36756003)(33646002)(498600001)(626005)(356003)(5660300001)(8936002)(86362001)(50226002)(104016004)(85426001)(5003940100001)(8676002)(81166006)(4326008)(6916009)(2950100002)(189998001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB476; H:az84smr01.freescale.net;\n\tFPR:; \n\tSPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "=?us-ascii?Q?1; BL2FFO11OLC012;\n\t1:R54ht74vSTelJk2sNaJEd82mUav9x8DQFnUQucLYL?=\n\tdlT7SJOci4KOlt2AXoVMHTMf+knWLRhUMQzsJ8YsOI79yaDmcFinvbh9X+w31ZbkRkByX1hQMKEkayP8HWY+R7e8uJV+AxTqxd9uGFkW3aa5WqdFJGM+6JEkS+BvNlH74pyI1mNo3TrwCr0S7HxtKDlS5E2H7McAbV2+NaM2CNxb7nHberq5vTwBOD90iBJrO1WXrpbP7Niw8JFbTlTRgChVYMk5VqJthPa1VMRdIsnN48g/E+sRw8dk8d7lKcPurFpvcEs9qFvHdR7AEZgkHsCdC+Hdigun1tjwCyp09KTZo0Rlc2RDIByM65eZw/W5lRFuTa1HsOnEnWEcgaHG7xkeZcd+1K/B8DVbvqkQWpnKTtEHzg/uPYIZQ9lAnMXsgbeqv8VSY77cG2q7FzJupAMDItEor/E2m7Nf/EVdBMYlwe6fYi8o1SdJNunfPl+LttcZNyC9VtTYrLMw02ej5twK/ycGhJ+E7GHf+b2CTMmP5sQKuaVtW5BpmSQboRzJRdGHKO8J2Jos697ZLfBiav63+pn4PdzFUUXvb5DuIe2fjYQz3xceWq/zWF9eLV/XJNyelHExrJK/D7OL7H4AhwWz5BiZF71Hqqw4nL1G2HI5QKwQyv+zOP+nkmJsIEABg9TmK8eVZNIfnZgZMSr1gwSe0S8mdT+i3W7udOBjfX4zaWTvOBB9ikLGLTQc67CBb2TqRguK339DK700SAECPSawnNdDzQVfDrMs93Kw2qTEpiL0XzNgJJxhSUnES8xc26V2yqMDTa+FgcCrUgpADvcPZaxvk3DIH1j2HQrrC2uCm5pgoFIdJK8cob4aH755o428qT2SYVWSQPjhJcQROwzkXz5W0Z6qTBugZKfYyMVR0sU/k90JEfYP6VMsySUAbqKeMILbl/ACWgWKbvqY0kPjgjNoj5ZtCtCEzF/Mp9ECOb/oU8fRx/uB0E4WiRdxXDev/EcJyj+6/7Va0coPfZZ6Uf+R6Gi6CAYlcj5dKvcb4T6xufgCRFasRGfbYyE1ltTfj1h9+tSvWz5U0LI5KlSw3yiEB19DOhLlGP1dExJiQ==",
            "1; BY2PR03MB476;\n\t3:Jjm954LOpRnU/Kzumb2jkT+Ae9N7Cx29/sDs+npygF70uooGGWIhCqlLvahkuE3rovQ+qd4HVDfXElkSYkT8UFguC/MCMjpMHgoGFu+DnMMgyxd2jt61CZXx5/OFyMJVSjppxPVbBMONNxp3BFENiDiuHxZyqOqE+uXsbXn97WB2nyiQ9pTOilwZAq1HYapPCojr64VRbRnMkoUylm9DO/QoDiC1EpaUZjAHpRMLdEwDReemBPue5uCJZDakncpIGQX+zq66sS40H23HUDtTD4OPzwbrZdCGRnuCbqnt3SND79RfzH8GBALKUse4MFAwNLQJ2xvnJ86n19IuXemGSBl92XuWLMUpGXtrv3iJxlj1DX9oNcz66iCehg8C+/0exEq7NcnKolx4QT5uW8f27Br0Xqv94/7Z5+qutLt2ixCch4bp9ufdiijHEjNu1gNdaEhKOOxK1vPAl8Bnn8yYlGnEGgbvRR2gRAZBKl1HmrvyCYV5igTEsqPTp36tq6rdiah++MC1ahaHx8C/Grzf2Un47F16QpFnqALOpMLYLTYdwUwRnAjRQwBkbz01HnJdO3g7pY0cFW0y7+EMOLWHEezzShfzAyanEYOU3K2kRHa+wV+IVs2s75Yt1eqFi7Y4qdsSQauVa5sWCi+dH0hYx9c06LHqV/GgLY9Ix0WO+E826v2dRKuRR03DTwpNC7GFuiQeK2eu4qGTMFo51xX3A3iiALutgV8hGoDLRME0hP+QpSd9ywErW7SRJEQ0u8H8LlLlSPciJTMbb9bFNgqZY+bEFNH8JZrFMMT+G3REtiUi/Eh7XhymPd/PeGCQQuv8RuBrj+HcLB2sSgC000SLl3cQG8GLUZNT+f0FQRGJqAVePdOZgftqhtRZ0J0N1ujb",
            "1; BY2PR03MB476;\n\t25:ZL25tB2GbRUMJQFQEGOw0oDx8uMDQbyOYO2nMf64QCkyMjvM/8rc39XPwvzwSFq8oiCNKRBGcvvYfuWPXWX/DsQKLTE/Mcp+aTJZM3wSK64BKICIB2onCnfOcupKK0OI0IqRquicVKANXFy2/rUovHdUiawB8QzA9PXYm8PISu+JKPffubydmEl2AFH6Y3xhF2XxZ6bc9AY2J8ea4n/HDtn6v9zn9WK3FtAeoVWkRHswF4bhvwDBjLCjarb4W+As5JJCqGcCqDgjqzmv1rQ6sl4mTPbIT+DtWkDUTq/RtB6sOMO7wY+ZiuJDRbgUES3FyKW7jwB83tPDkIaDzA5uvQq5swiw9b8jDIHMh3ixK9qNN2rjgF5uAfzB/ly/k5JECdbGI5VaA/KyTI80Q9pP9Gif4x5ptgBqtx2hVeD/BAEKW8ZItudoSlJHPFaczPNo0qDEhN/Scuubl2HRyrPGVgQyCkNi1WnEJFcHk+ktxdI0GiowX+L7O10k6cDAygjGtdwMOpzoUvJ17a90fvjFSn1iNQkoSiJTvHPmMdKS6D8MwxK1/vQehLpHO6ZSxngtmfGoG1QBak0sjBxz+OPj3VhICcoXFTgx7N7w/Q0LkYrkdFoxY9CPfjf/+6T4U9ye/JegT2n9f5NU3T5bRwj5EIZDh4y9TMdfewB/ZFUIn8ryw0qo6j0C+oHvm+L4RAy6S+Flwj96nfCQVrLARHYBtypFkybsVm2DUmdIatwKYp8tM1IumPvEwkfxMe0jq02rrTSpOcws+cAl8VkffSPgGzRlkrwDEhDEATXX8ZoSXl5Fb97yduCYooXjGylZBJ7ugHA5HASdj0HoA6sOczT6kjAG8ZP7zWMrn0HSoepxlz0sAslcM6JrZbHQ0Xz9jpQGPbYMJKh+e0WKU8PLcHzRRqS870LFnDSnaid3XkPHE2E=",
            "1; BY2PR03MB476;\n\t31:9A+SbDu3YAsN3EX+oHCmPSjrdtlLXg9sZigT7j4hzou7QKBykTzhJ/WAjdqVZP9EYr164bG5/1DOyksUrvfoAaj1k9MEmm27Y0tEkEVhFb317my9iopVFg460MZiuj0c3eil/e4CDXX+HIQfYzzCqN0iY3cAog5kqqI2TbyNlB3DaEApVSxDef29iDV8yoAEfP82JWHKqDoHmqpRV6mzhb6aGTO7gr3uFJ5qgxl2jCV8j2Q2s5jkIrz1/kM4tRNuBof21jEOAMJ3JcCz8x2nLe2Pf+0aySQkJ2UqYiwhbS76lsmTxNcVxQYidL66xSQdiFvBhzNfub9+dLg8bGgK08AvvORIPDUe+DZoIeFkeB9uZxcsyOmlDWm15Uo4QgrKAsqbhXp2ezRi6wN1Opz1NtbmHIc6xWNWpxNbJDs8sRcB1e2q4nYe+V/sx4HigGmACTk3RUeFF7A4Ndf+gNP+/An7euTi0/lzw58OjujbU6WXYzubRVxLBjhSuf4MQpE2gJKKAhSl6GP2ohZrKla7IxZBOKmb+Va/AWKP6ujlnnsJuL5dLUW0DKwyAtDt3RfI7WTrWvqEprHTIEuKRKQXHrrDFfrTM/HjOqbTMbVTNyOaLK5HPQ2/JyrQPo0FSRbFjdzbuVFlqnX7bh1JAWdCl9B2s9LIbuJc6YwlSif3Dw4Etxq3F/+dYmDDqFZdQcFUx9rRIYFdtp8gm3qQSVeWFA==",
            "=?us-ascii?Q?1; BY2PR03MB476;\n\t4:Tjp4a7i+E1b9s7ddcbv6wWZHH7AJxY8yInByuoZKIbv?=\n\tk2uwGTlS5SoesV74gmYPByf3n+74D5PpjJGoAxeZu0lRB6IOuWmR1Pcy4GGK0R7dy1HXsTKws27ztNTBcisKbaCVHPQEPaz4UCiUpnSMHfi8Qaz7eWmGLAJmNJXcZT14R/L0NEaXSinfl5xQbarjZsSWsVe/S50NB5/BbtCq6+FXLY/VqQlPCnJ913aTjxcJ7sTUuu/z6EhqvoEovDWM1wZyMvyTbK91S0HCOcxWUTYHT/9AW8heD6MIO5heGTTmHb4eRK5K2WszVNiH1dYs2zI3hUpGfhf1VEmOnE/mpoBPly87CPLn1NxQF5n42veyfF2VM986QqS0rZIL7EDKGBo2XxwVDUmdoHZWaP86RwgHKqZiTP+iSZYIbYuUTc+szPTzg4erQPg3T9U1aFhqJ1BTsNL0pqRbVJTG5djoQTKi6EJXDNOwAQDiz1hecfj4FMWS8/sK3+Tr/2OmiIYyECmhGegSBal8MlrTSV/c/Fd7knizi0CmC8LM6j+zY9nNzFNJLxCpkXgsHzA1Qq2vHn4LSC8+vzO+v8sCqJaEqTgOyby5IGtTP0NT7f4mspA9G8llgdhIeGipdAO6rcAXliunuA9HuKOt20EWQUHC1CG+GdDALsQmrRzW3DBDGAYoHU2OuK71kaLgYOdBSMPf5whVrPjIkoMgTRHEBzMRwwbkpDC+FUT8DNyfpzmkdRGCc6Q8+i60tQOcWxODejRHeEMFW8YigR7ruHfykaYqwFeb5SQ5SOBkBJox4VEYBXjpj8+9zznw95UZz7NrL7Jk+C/n83AbKNp7dfBQCIdqi5faWr3Lav2nayEVjDrTHqBEM22pSDS6Y2CQXHqviT89yrDlSSCPvOrv3svxHKpgKRMYHcadht6X6U96SAGu2pyweEgRi5dTGNPNoKYgDONiWCi2aJyTJJMHOlqG540RcOctauogNo50r9ViP3oSOm6emo1LMyEDgI372Sc0R+O9n6bKV1FCWHzP97rPI89qg1MHd21DbF08Y6tRv3K+Ue1ZVV2RTJYjIHpIsVE3pfzzOtmYjl9hjzvWZuCIkgObti/FpaaYqLq0sI8hU+Q4YCuidEhHufoza2I4PRDFt4SSKXPG9RUnXAqdwwEdabOkxmLSo0CVb3jUliXzZRypl9nzUu5Uc3zcLtTgHxPD34wGSxNqdQDSConRXmDJMklfuRdxlxyG8348sr3LjcamUdFXBOygCVhk6FbNF7EflT+GZ4qKgR6CDi8Yq0E2tyD+hITrUa2r7dK9g501H2fGbvkYwUVO+8dVfj07p7M8b5jF8cx3mULcE5Tf+teF8Nr4e4q7vsjBaLhv05a1rdRcj2Go=",
            "=?us-ascii?Q?1; BY2PR03MB476;\n\t23:pPDLsgUeQP5nG1NSf5t+2uVQ6yNCZeWyubyx8h/wVg?=\n\tRNUU36l05MvFusNeVdifN8Dh3z7Ssz2oh12gzbhRNcg3ixzQfDPGi25ovYnxFPqQm0eD93K1+qv/g//O4N4Aa1SK1dvOgrf9tKjCBgKCtTb5xRIvDPf7X/ezk95WuuJ1E6GnQgS1coILxRL0MZvSn6z89cJdh7u/tIfaErrKg6UykF9/ohtig+KED5b1eZpPqjMIeEjFqmla52qWWfTJP9Ag9racRGmWyadNlJLfO0tA9qRnxIrzLZwB4OiZdsWJlgSqfE+L/rrNXYmYxPI54lXWJMsc+TiKKQY0/EEyqiPCxPU35wsapCADUDkc83v22SvHHD1Q/XC9R+u+o85AcMu9msq1Qu8mV8YBx13Fi3ktDLLoEvlcUq2yS+dHsXwoOUKda/gwEsSb37pqkxGUVpMlOWuv2ddTMb3XxkjGOZEqyGoORSLVDn6sWu49+MiS46mj4t8/tbnkt2llxQ7xCsLa43W/PlwALwA2BTfy9jJfUYLAMtxKSacdeG7S3s3mwhS4IOxKnMemkGmyAik/ZObLBPunjUoXWgxljqtnm0bUm2k5k2RCGkgFbuI8khUVwhHMT/XbCED3UHlVcb0cuAL6NLFpMhnbNfzXNLS+FqoBZoKwqMZ7hFXzG5L7hArAy4mCNH6o0O4K/Xog/2i4WvWXh491aL+/7UB/eByRr30FP3+vpgdHRRgeqSuSuwaYx7MNu/FyExAh8zhQCI56GuGa0bLPg3+ZTcUCDvxNxWrSpwKy5B74S1Vo93aRL03+oryThPeOnR6Zg4aF0ags/sFe2M7csdpcc1J+OtjbvWZ6ltt0XMgypvvjxTKKWfsS/OrTrPdfEQijHQZSymzaUJ//jE8ed32nR8mUHVlKFtJgm5A1f+e4fMyEuvz68bBdBu/N5tuYgFr7UF2EuuUIa8SCmLZaU0BBJ4ZT+6PjT4K4a4Tu5gu8B9TvzhTrFp8JvLJ//tQyV4R/OAgkgX0mO0HREqwVoqkY4Q5YDYK0GnpHmg+12qe+qsBmtmZNK0ZIBEs8V/rp37giQ/3zH/ZVws7cYFWVwK6BRMmoS3SrcDe6tPZ8w4dG3OQ4bFEzygI0Wpoml9yPXoVJEtf7gLRsX4waAzJonK+E5DR+b04ylRSUTKQRNHIOx7FDx8iue3JGvletfLSmsSn56VPnvInkwUQIhpG3z/SekX14tBvd3CmRzKMEfCKaqqoIDg9qJv3D0gv9+I/FcQ3SK/z8zEURC3ATLsxyRi5VtREoc6h1z3/w==",
            "=?us-ascii?Q?1; BY2PR03MB476;\n\t6:vZQDY91H0AIzmlGLLm2nmyHCG5L5ht4n/ED6LT7621P?=\n\tMSGFzNJHxGN0WFXlniwbjB6Q3z/2+LgrlLwh2R4X4D5WSl737RDqPPF4qfihiezAnCyDQJhsQBAaJmTA0EeQjFQ2dv0+hKrPhuXCmgFNZ9jEfZWKbOxGqCojEZ3/Q2fxQQA7jiGKn+nbU6aA07APDIrBS83fQaZ3OlIwYWthQzL8wQs/MG784i9JkTL2K6BsF0V8hBDXZUoT9JqK9Ro9LAHykt9yk4/LoXPu8mo/VeIESjCYfnXW4jvf88gwxraaDk5qr3LwLVZ9sqt47v96fDhKQfPDN//ZIMBbj/bA4TkMHwdTJdpBHJ8icxgiMbr1Z7nfMWYYc86hvCnO6BsjyJE87099tx0zKWFCkF21UA7igVYD6MDEoArFlWsd3YQBqhaft6nTAyOhkOno0tJHgoH1BvqgK6IlirQ6GXlNRjrxwa72wq+5ygFiR8UeFH4KRskIMu5aFjJWEPRVlDnQ0BLDV4FdcFmc2viPcc0LG5dUSTafn+DSuRzdDst+YVegcRFG94PWdJEKnDDo3eAkHubX8wbhMwcJJJdiGx/ZorNJTJwQJIfu4e5pavQGnY5mbhtatXTdoXAsuxAAKBC7737x0reen5mW2OCE6SaVCbfFR/mI62VkqIJjiU4m90Yp3DEV19TvPAwx3Z5kgxMKKJrHTDiJuuH0vwFeoBCwa2VZ+4PXzNj5EiZwbo1bw0M4V2ps0DW9sTOMT5EjHDsjFcXqKo+blD/lerh8bNkzLIrExpzVspBt09Q2MzP78Iq40Am5L8NhIRTp0EIAQby+kp3Jfh2wzKJThxu4zyEF8G88T/3Ms0Gi2FOpxEcyDJudZ9kOm0gYBgnZTOjesi4QWV/GU8aL9m+AZ0X/FZgxf84+WMrFw9bM3GDYpG8u41hT1Zr75M7q6ancFh36Bd6lUKWgjMEh+NVw7ch8+1gwitsPgG/tCJ0vY/giOV+f9mGE=",
            "1; BY2PR03MB476;\n\t5:DJ8ntNp2fQ3zBHIGC6yJjnnZPH2rQHefqDDBCL1rIEnOP342mFBb1kjmcO2KN1yxJ+feI+70D5S4KGNlLOHHrpS6WnZAk3W3kIb5qkeXOBGDt3jfpS0TuAumGmXaUU+PehiqXtOQVWoKNnOb8dkv3B2RRNqjbAWl3nlAYQ1tMEkqaSLAJFGkimpkPmDuPyx4W/KfLTpjQ+mxZBmX4M85KoOSXd5GU68323E37wIxCiGFLAUKAm1cvB48YSGqCeqjUKanotD18Hw1SndbzwrA0pp6NJrGkwjN1/OcKjiEVtXzMpmCZTzsKDCg7r8YiXs4KWI3LjR89Tm8wP2EPDVb44MtlGXKg9bKiQ41YSGfXGqaSviVNrE9Vh+1iM6SdFZfhjvxbnVZuvd+qyEkYdMobPAr1eSaz8Ev3KStTVLJC/FY3N5l2r9rrvF3miRlGcWEBk0OZWzVMND6sVOd5c4lkg/kcZFAQBM2VMcHVhW2aXA8IBvl1XSQOgV2tT0NWmJhhLouvvmuwGK4dwYIkHVq0w==;\n\t24:z6PGrEnopPhKCKRI9rCIsMGZc7/SySQVbdRnHQtc2RgvC/BBPgmZKha5VM3i4dOz3FfiZ4ZyjA5SORi1qvOZjZrWeAt9rCJUazUaLAK+svo=",
            "1; BY2PR03MB476;\n\t7:NlWGh4Lolj1b5ZyGYEveEQDsYw3bBrM8wadH5c8zxonngNOfDLUZbuBOZDboPdIXHE0yw1xDQjgLGJcRqutJGfvU5lQGgo16cylcRnWxuxzlC9rOpMPw85Cc9JLEL30fU8FbWIt+D3/3TkPSCOTmvD9FAidL9lDU6oMTivjhymP/uYTg9/6YQJr2XeP/S39tWw5YsoaVfl49TpMDpPpFgbn9cFDkTAxctTJeVJzrHI3nUgRz+ipSViYjXTJBZZ5MUMMa6P9t1V9BFMJHh4Fd9oTaUUkcONp504fRrA1ntNA+an69zwOXFmAtnQOoQ0zgIFIWpMbRUxrNqtPk8JwdwnB7ZU64hq3DlzcdS8KHvPPMM3LMrauDVBngZHgpvM/Fo6zA0D0VHPBzH85vxHAqVse+YZbmtSPJtUoXeFzfhm/IogYOyYzhP+kQ4xBvHjukLdnZjREEMc4DaAQ9P5hDAvMnqfkC8lyXTsDyaCHou80kD+zP+7q0nUpP9IG8o03+c2s4SwXt/5MrGknAK0bdFv8G64CS/1PxaNEVkuQ5WjBnrFD1e/8Y3CNoQW3MFbO2Qkr0rP0Qes4z1n815w7nzPC3hCMw5CWBg7PjuK+24/RCfRTeMNoGZkzRdPCw7vTIpqHa9R/ZTMHa0gsaySC/8Uo7/Peb1EHtAP7U32S9se1yY754MIsDir2hwWuDciilrJrJxWX9fWPwuC1Rtdq8UT/TWJD6wc0M24MNVBTA5TJfcR6qmTnwRF6YMR/L18NGPuVFOWDSWjz8ae2dlOdn0KdDDAOxI4eEBhSDuqjIRZQ="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "11230e53-ec53-4ac2-6475-08d4c2ea14a9",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BY2PR03MB476; ",
        "X-MS-TrafficTypeDiagnostic": "BY2PR03MB476:",
        "X-Microsoft-Antispam-PRVS": "<BY2PR03MB4760276A462F9A456757FF890D70@BY2PR03MB476.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(133145235818549)(236129657087228)(185117386973197)(167848164394848);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(13016025)(5005006)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6096035)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123563025)(20161123559100)(20161123561025)(20161123565025)(20161123556025)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BY2PR03MB476; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BY2PR03MB476; ",
        "X-Forefront-PRVS": "0358535363",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "04 Jul 2017 14:36:38.8524\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.158.2]; \n\tHelo=[az84smr01.freescale.net]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BY2PR03MB476",
        "Subject": "[dpdk-dev] [PATCH v2 34/40] net/dpaa: add support for flow control",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\nSigned-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>\n---\n doc/guides/nics/features/dpaa.ini |   1 +\n drivers/net/dpaa/dpaa_ethdev.c    | 116 ++++++++++++++++++++++++++++++++++++++\n 2 files changed, 117 insertions(+)",
    "diff": "diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini\nindex c09efd8..1ba6b11 100644\n--- a/doc/guides/nics/features/dpaa.ini\n+++ b/doc/guides/nics/features/dpaa.ini\n@@ -11,6 +11,7 @@ MTU update           = Y\n Promiscuous mode     = Y\n Allmulticast mode    = Y\n Unicast MAC filter   = Y\n+Flow control         = Y\n Basic stats          = Y\n ARMv8                = Y\n Usage doc            = Y\ndiff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c\nindex f23e10d..f3d8650 100644\n--- a/drivers/net/dpaa/dpaa_ethdev.c\n+++ b/drivers/net/dpaa/dpaa_ethdev.c\n@@ -329,6 +329,85 @@ static int dpaa_link_up(struct rte_eth_dev *dev)\n }\n \n static int\n+dpaa_flow_ctrl_set(struct rte_eth_dev *dev,\n+\t\t   struct rte_eth_fc_conf *fc_conf)\n+{\n+\tstruct dpaa_if *dpaa_intf = dev->data->dev_private;\n+\tstruct rte_eth_fc_conf *net_fc;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tif (!(dpaa_intf->fc_conf)) {\n+\t\tdpaa_intf->fc_conf = rte_zmalloc(NULL,\n+\t\t\tsizeof(struct rte_eth_fc_conf), MAX_CACHELINE);\n+\t\tif (!dpaa_intf->fc_conf) {\n+\t\t\tDPAA_PMD_ERR(\"unable to save flow control info\");\n+\t\t\treturn -ENOMEM;\n+\t\t}\n+\t}\n+\tnet_fc = dpaa_intf->fc_conf;\n+\n+\tif (fc_conf->high_water < fc_conf->low_water) {\n+\t\tDPAA_PMD_ERR(\"Incorrect Flow Control Configuration\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tif (fc_conf->mode == RTE_FC_NONE) {\n+\t\treturn 0;\n+\t} else if (fc_conf->mode == RTE_FC_TX_PAUSE ||\n+\t\t fc_conf->mode == RTE_FC_FULL) {\n+\t\tfman_if_set_fc_threshold(dpaa_intf->fif, fc_conf->high_water,\n+\t\t\t\t\t fc_conf->low_water,\n+\t\t\t\tdpaa_intf->bp_info->bpid);\n+\t\tif (fc_conf->pause_time)\n+\t\t\tfman_if_set_fc_quanta(dpaa_intf->fif,\n+\t\t\t\t\t      fc_conf->pause_time);\n+\t}\n+\n+\t/* Save the information in dpaa device */\n+\tnet_fc->pause_time = fc_conf->pause_time;\n+\tnet_fc->high_water = fc_conf->high_water;\n+\tnet_fc->low_water = fc_conf->low_water;\n+\tnet_fc->send_xon = fc_conf->send_xon;\n+\tnet_fc->mac_ctrl_frame_fwd = fc_conf->mac_ctrl_frame_fwd;\n+\tnet_fc->mode = fc_conf->mode;\n+\tnet_fc->autoneg = fc_conf->autoneg;\n+\n+\treturn 0;\n+}\n+\n+static int\n+dpaa_flow_ctrl_get(struct rte_eth_dev *dev,\n+\t\t   struct rte_eth_fc_conf *fc_conf)\n+{\n+\tstruct dpaa_if *dpaa_intf = dev->data->dev_private;\n+\tstruct rte_eth_fc_conf *net_fc = dpaa_intf->fc_conf;\n+\tint ret;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tif (net_fc) {\n+\t\tfc_conf->pause_time = net_fc->pause_time;\n+\t\tfc_conf->high_water = net_fc->high_water;\n+\t\tfc_conf->low_water = net_fc->low_water;\n+\t\tfc_conf->send_xon = net_fc->send_xon;\n+\t\tfc_conf->mac_ctrl_frame_fwd = net_fc->mac_ctrl_frame_fwd;\n+\t\tfc_conf->mode = net_fc->mode;\n+\t\tfc_conf->autoneg = net_fc->autoneg;\n+\t\treturn 0;\n+\t}\n+\tret = fman_if_get_fc_threshold(dpaa_intf->fif);\n+\tif (ret) {\n+\t\tfc_conf->mode = RTE_FC_TX_PAUSE;\n+\t\tfc_conf->pause_time = fman_if_get_fc_quanta(dpaa_intf->fif);\n+\t} else {\n+\t\tfc_conf->mode = RTE_FC_NONE;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int\n dpaa_dev_add_mac_addr(struct rte_eth_dev *dev,\n \t\t\t     struct ether_addr *addr,\n \t\t\t     uint32_t index,\n@@ -391,6 +470,9 @@ static struct eth_dev_ops dpaa_devops = {\n \t.rx_queue_release\t  = dpaa_eth_rx_queue_release,\n \t.tx_queue_release\t  = dpaa_eth_tx_queue_release,\n \n+\t.flow_ctrl_get\t\t  = dpaa_flow_ctrl_get,\n+\t.flow_ctrl_set\t\t  = dpaa_flow_ctrl_set,\n+\n \t.link_update\t\t  = dpaa_eth_link_update,\n \t.stats_get\t\t  = dpaa_eth_stats_get,\n \t.stats_reset\t\t  = dpaa_eth_stats_reset,\n@@ -407,6 +489,33 @@ static struct eth_dev_ops dpaa_devops = {\n \n };\n \n+static int dpaa_fc_set_default(struct dpaa_if *dpaa_intf)\n+{\n+\tstruct rte_eth_fc_conf *fc_conf;\n+\tint ret;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tif (!(dpaa_intf->fc_conf)) {\n+\t\tdpaa_intf->fc_conf = rte_zmalloc(NULL,\n+\t\t\tsizeof(struct rte_eth_fc_conf), MAX_CACHELINE);\n+\t\tif (!dpaa_intf->fc_conf) {\n+\t\t\tDPAA_PMD_ERR(\"unable to save flow control info\");\n+\t\t\treturn -ENOMEM;\n+\t\t}\n+\t}\n+\tfc_conf = dpaa_intf->fc_conf;\n+\tret = fman_if_get_fc_threshold(dpaa_intf->fif);\n+\tif (ret) {\n+\t\tfc_conf->mode = RTE_FC_TX_PAUSE;\n+\t\tfc_conf->pause_time = fman_if_get_fc_quanta(dpaa_intf->fif);\n+\t} else {\n+\t\tfc_conf->mode = RTE_FC_NONE;\n+\t}\n+\n+\treturn 0;\n+}\n+\n /* Initialise an Rx FQ */\n static int dpaa_rx_queue_init(struct qman_fq *fq,\n \t\t\t      uint32_t fqid)\n@@ -558,6 +667,9 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev)\n \n \tDPAA_PMD_DEBUG(\"All frame queues created\");\n \n+\t/* Get the initial configuration for flow control */\n+\tdpaa_fc_set_default(dpaa_intf);\n+\n \t/* reset bpool list, initialize bpool dynamically */\n \tlist_for_each_entry_safe(bp, tmp_bp, &cfg->fman_if->bpool_list, node) {\n \t\tlist_del(&bp->node);\n@@ -663,6 +775,10 @@ dpaa_dev_uninit(struct rte_eth_dev *dev)\n \n \tdpaa_eth_dev_close(dev);\n \n+\t/* release configuration memory */\n+\tif (dpaa_intf->fc_conf)\n+\t\trte_free(dpaa_intf->fc_conf);\n+\n \t/* free the all queue memory */\n \tfor (i = 0; i < dpaa_intf->nb_rx_queues; i++)\n \t\tteardown_fq(&dpaa_intf->rx_queues[i]);\n",
    "prefixes": [
        "dpdk-dev",
        "v2",
        "34/40"
    ]
}