get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 13554,
    "url": "https://patches.dpdk.org/api/patches/13554/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1465826143-22159-8-git-send-email-jerin.jacob@caviumnetworks.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": "<1465826143-22159-8-git-send-email-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1465826143-22159-8-git-send-email-jerin.jacob@caviumnetworks.com",
    "date": "2016-06-13T13:55:31",
    "name": "[dpdk-dev,v4,07/19] net/thunderx: add rx_queue_setup/release support",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "b515a9c52e0158d5258a010cf2d26ce9672ff636",
    "submitter": {
        "id": 305,
        "url": "https://patches.dpdk.org/api/people/305/?format=api",
        "name": "Jerin Jacob",
        "email": "jerin.jacob@caviumnetworks.com"
    },
    "delegate": {
        "id": 10,
        "url": "https://patches.dpdk.org/api/users/10/?format=api",
        "username": "bruce",
        "first_name": "Bruce",
        "last_name": "Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1465826143-22159-8-git-send-email-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/13554/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/13554/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 05F8358D4;\n\tMon, 13 Jun 2016 15:57:16 +0200 (CEST)",
            "from na01-by2-obe.outbound.protection.outlook.com\n\t(mail-by2on0080.outbound.protection.outlook.com [207.46.100.80])\n\tby dpdk.org (Postfix) with ESMTP id C909837AF\n\tfor <dev@dpdk.org>; Mon, 13 Jun 2016 15:57:12 +0200 (CEST)",
            "from localhost.localdomain.localdomain (171.48.21.3) by\n\tBN3PR0701MB1717.namprd07.prod.outlook.com (10.163.39.16) with\n\tMicrosoft SMTP\n\tServer (TLS) id 15.1.517.8; Mon, 13 Jun 2016 13:57:04 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=L3SD4/dJLda+8vyRFXQzFNRKjmd54mSiETIIjCDYkSs=;\n\tb=CXTvHPdBfmtp27DUvXlxV1+6XuVH1goHKJjWL9yA36hyhfTAlcU+4SWCvFSKdX6w4F+PR16QpwkSnA1+cQJN2kZSciv9XQ6tAjqx1uo+0N2T4q/kSLyMIAWrou9cPMBdJp/H+Msol0e3dpuAEZ9yFoXGpilVVranlBUFAafOkWY=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Jerin.Jacob@cavium.com; ",
        "From": "Jerin Jacob <jerin.jacob@caviumnetworks.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,\n\t<ferruh.yigit@intel.com>, Jerin Jacob <jerin.jacob@caviumnetworks.com>,\n\tMaciej Czekaj <maciej.czekaj@caviumnetworks.com>, Kamil Rytarowski\n\t<Kamil.Rytarowski@caviumnetworks.com>,\n\tZyta Szpak <zyta.szpak@semihalf.com>, \n\tSlawomir Rosek <slawomir.rosek@semihalf.com>, Radoslaw Biernacki\n\t<rad@semihalf.com>",
        "Date": "Mon, 13 Jun 2016 19:25:31 +0530",
        "Message-ID": "<1465826143-22159-8-git-send-email-jerin.jacob@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.5.5",
        "In-Reply-To": "<1465826143-22159-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "References": "<1465317632-11471-2-git-send-email-jerin.jacob@caviumnetworks.com>\n\t<1465826143-22159-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[171.48.21.3]",
        "X-ClientProxiedBy": "BM1PR01CA0031.INDPRD01.PROD.OUTLOOK.COM (10.163.198.166)\n\tTo\n\tBN3PR0701MB1717.namprd07.prod.outlook.com (10.163.39.16)",
        "X-MS-Office365-Filtering-Correlation-Id": "82e42048-7377-4c2e-528d-08d393929bd7",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN3PR0701MB1717;\n\t2:Ujk0/7zM/yPwWDYs/7p7hIXVP6Nkvt3YHObI2EZudOjxOM0aYMAlesOuYqb2jLKcPrnPVUS1kLC03AFtm7NlpKLlE6Q2s8V7rxChsjXIHaHgOMASjWqHUgAHHwNMfUPXaNqi+mBUGr8vo/PADSLxsrygdQaGlo4AcEuX7E+gKSOeh+5GlkbBaq8Eb1WN8Z3b;\n\t3:zV5v9BUjriN5Key8qRlhuxJc1idFpjyI4HJ/m6Y8LzVJn35S6d8+VscI0iyW/FUzT4wbGzUF8dNxGuiPvUEPj8dkcNVcjWMxx3eF07ni8f3HgWHij2+kYGhCGy1owgp5",
            "1; BN3PR0701MB1717;\n\t25:CimVRYdiw1nTtDc90nDf3mayDn6Q9V1BDTZDnvf8/j+w6ysH/pmx1jGBxvxkR7sa+1QOSFxSOzVN/Pd+esmcC3gFq+PPkbZ/KmnJmG2ivhkxoZq01Rb+qjDe+TMAopE4jXBdZV+HXyuBcE7n6ez2/RxdzOLcFlOGYX7VZnYkQwpBZ8XM6tYmFDedZLQmgopPV2QaemN2lnnYTUfqhLtUi4BLdGY30w9MOn3yH8PUADcqFd+JpR3L/OfyxdrkjzwXhlWGwmTSyZ+q73TNzo9qHvWlGtLyv+ws0/jWHxw6OtOV07yf7jKXArrDhZyQ9GNwkifCcdzrAtm4Q9x8ae6U62Xjzvtb4Y7CP9ms2NtVSUV8mQPpCJD2XoFKBVH/AMrU+GM0XQXErV+yScpsBQwS2qhFoNIVKyvVM6cATZghsVKfMwWqYudhSqCIMFezsCe1rVb+MGVL/0DuL/Qu3yFm65yyjT+tqPhNClFBC+WGV0i1KriNM07M0abtXaDVf+FrlzTHcuhElxSLOB/gdSAfXPIICDQlox/PpwM9ioaUxg9vDHyk7IkY/Xr/uLleElGDcGZfVa63/LfXanPE5s5dPqOH0uhH804JvqGYArbSwCy7F8mrXLV+t3fkjLwqhOFMXAz9ZQTWxR5VoSqCyGfrHdAM2lfsrwvP0D9d778McfxOfkSFmCOtdrBXimkf8UaUtaUlsBhG07WWrwVjvur1184VltaDItS+VTqsmCp7KP7UTtMIsS/4QVyJb06yVu4W",
            "1; BN3PR0701MB1717;\n\t20:VG2flzamz51MCEPK5s89yWWaj/++DwohPQoqHSBiyoi3AkruzNeo+AqGR/VizlIky40lyE1mXtMUZCJbaaOOof9wNoQS20C54+kZIyMVX0jyvl34pWj8Q8tCusLIXjZoOiddnBy3Nlx+gYXEIQTBIvEnN61Ko8gThnCN/Ly0vnyfyLuI794QDUsrU7kt4UM09e/Hvd4KrHXXyRk4i41VzV9blbR8CH7//JPZj07zta/WtDBtRIh8lBI2PBUaZr99R4vtrrXvLTaP/WER9NTy/8UCqqbqeVyUCafIpwhVQXnQKGPGfVdZlVXyh945rlviCSRjqFS0KYKwS2wlCXHsp03QWecU7S8q2KlFQiMfpiQYwI6tcpJTjx622dQ4BwrGa56bgjj/gXg4JJrFM0tLcn68L+8oFTgo6uvE9ND1NKKsON1Vp06OzvjTy7Rznqg4jlYzfl9Y43yEPEpn7ezHmwYh7q2t3wUhdhu2+x79Sw6Ryoeg4p9JhLfrFeUQG3bUmc4dXUK/Ho7I+S35BiCmjtOqfSCT/RN5T2JPr61BYijPHrHjzbapFinZNTeGNxQTHFoi4gy9GU4Tt0ETvclDj2WPVuPMm3EysOHFrHqqbr0=",
            "1; BN3PR0701MB1717;\n\t4:aEdF6xBPqKh3usqdWrXHwjKzA5IoQcJ78NqkPkHZKSZEVP3fKUT/SQHWiLw3JQk9rkaBXzprS9xFQANaZn3joWA0QDtLCdGFYz0HjFwgPo4YDhB23P2H3jM+6RgjFoyZbyAcOA1bsPHNiDtaUMccfIyDZ+MCD6EBSwVhEwT4HV/tFDHMcKXCUMlK3uJGUqCUrdLZvJzF9eWLNdunP9hYNnOeZJD5wqMbWRxX5yh1p0uNUBZzbicvQxlz9opSKV680CVzgpvh2pM2SMMT0OWDmwp7RnpGFQYyR7/MLBHumzcDcj3o9os90WBffPrDmWYp8EW2IaILQ1U96CwD4R6NPWUdQy20xhScH8gIxvmSpBysey9ArVdp7pdBS1ZnWulTfmwAL3gzAxyz4Vc0mz3SLCFTjZhYtsT2/tnueZui42c=",
            "=?us-ascii?Q?1; BN3PR0701MB1717;\n\t23:3jMDiloN41tiklzq6v7+kF5n5/PRNbDJ/2r4dvf?=\n\t=?us-ascii?Q?k7LJisLdzkGtadVj7KZt1aux6Yytt/3bdPg1w0p2CiOm/CsdmEdo/z8v9zih?=\n\t=?us-ascii?Q?B6zTIT3cvRaAVZOZPMIJAMVQpKFZzQyqaKOdSxh9alI6iAbDWPHVa/gkIWVA?=\n\t=?us-ascii?Q?gVph81UZXo84Knhu8H+AwCDSSiBn2p3Psj76DEl0QhVjxZKT5NK6/n2p2wBg?=\n\t=?us-ascii?Q?xa2G+wjx9Vik6k6wiAJNCUxZWuROyyU1doQXC4eChG0kn4LdVUtmPa94SzVD?=\n\t=?us-ascii?Q?q10cUpVoPMoi2Vq2nAxKrDbLjDCiEXL4/e5Od6vsN3ijjeDqN806Ncrth6/S?=\n\t=?us-ascii?Q?MJTSgpdPYQCAaYz1Qy4DAKTpC8SoYeV83F5Q3I9Q0uMEnMpwVJCANq0AtkYR?=\n\t=?us-ascii?Q?2/cMAbZCTNVomlV9NtI6QVOoFnUUGwl8muRy2F2JsYqShywgnRoHLqmFWYHa?=\n\t=?us-ascii?Q?/JVF8uZlWY6KvzwcX+3g4q+CfhZCOZWqvUFT5nofP/8Qxgv62bnWFGuM8rIY?=\n\t=?us-ascii?Q?QSsS/c9I5bQ3XK8sP0EHWJNCjgCpL1Qs8w7QBD891LfSCHAJTJX+nPBDXGU+?=\n\t=?us-ascii?Q?DWrgg4Rt8LSAyVBHWgmSnTqmBpyFgz0Al3zpyhQpJDLq1zUGLwhdRTW4fq3z?=\n\t=?us-ascii?Q?lwCWU7o1xUn4gu+5vwrNALwEkFQ5VrBKmBj/OnJKToi9BgbSIUWaHhzW2X2x?=\n\t=?us-ascii?Q?SH3J/DTJaxZpyed0i5f+al3JidNmO2eDXukBJexzSMdm9yPrqW/t9Z0HECVA?=\n\t=?us-ascii?Q?cKBZ2oDz6EjM/xOotW+FZHOZ1xAFGvcdIA1HDEvDJwDGc6tBTl6+7G4C7xZ4?=\n\t=?us-ascii?Q?w1RcVMu0594SiSPHXitw7CH2pBSine+GqjYY9hKnuOOp7P/z5XZ/riKriDEk?=\n\t=?us-ascii?Q?SP4+0vObtwSq9Kb2F4MijtfulmhYuiwiwWh89Q8k20Pq3dq3IkCj4EdSM69N?=\n\t=?us-ascii?Q?I5AvI0LVLC3El62AMX9JeVEKTpUdRx7fj6j23/1wYfYXLFP4yaMzJgpRl+LQ?=\n\t=?us-ascii?Q?BqA4FEe48lGloAqtBMBkmGyQL2V8BiIz7G3YcA31Ob/XEfqKTT9FYQlcBR71?=\n\t=?us-ascii?Q?LnxqrUZjogSIs8ZYPgO2/TtDS4vEjtTsgMGgqQOy900RoH3It6ShZzZDVV0E?=\n\t=?us-ascii?Q?FDER3iwFfjd4UjcdmlzRrobIu94yfbR54pwFvGZGrs8f2u3QCqn7Vww=3D?=\n\t=?us-ascii?Q?=3D?=",
            "1; BN3PR0701MB1717;\n\t6:Fvs0XZckzpGLpJjupvoK/+XFHwKBK4O3Icwfw0sppyDhKjSKWov5xtnmysnuyb0vWCKnGGyKJauz36xTigKEqYIvPdrFv9WB8Z9Mr7fyQxosCFtXax/9v7IA2NBQaEbOorvE7yqR7EaCbV3Q/AgTtAtvk6+5b9McuMlyXks7+LMunAy75dao/btWK6jzkS55EJ8Dd99csWtZR2OcXJc4SohaZyXRLkvGPyPB+i3FWQ/BYCPDfX3OssZ3ZiwXSurTVKnKmT8Qxsbp54e6qtlWgTiQNnisOq4JtqRjddhRh2g=;\n\t5:GdrlqYHEdtoqpt2pgYxAXlFV0G/tpGziFMhxtVnx+zWYjSr6o3A6Wa8NqPs7fWnSHkA6KU3TEIrmpxmSFuQRwolFbjlz+IlMaEbBt9UIFoBTveslWSKSGULYieaHriLgW/mRcou7IbEOCYiRraKqyA==;\n\t24:TavxeIPtQ9+K4/zI3WE2NWjiX1N3YCnbRKWMka42Imph3Y/rkO7oZqDv1Xvcck5Iv2Gfe8LMI/cn65SONjZAHL/Y6zzfRS0Cp9HZ5x+7D/U=;\n\t7:FTuDuJSmLsOlWVEwu0I9yBiRHGVDam4Grt3Bla15V0Pa6ho9ljgelQMlpI9RuK4ZvKajOZQAiElvktzmkwuXPqzFpa2BpXUb5l1UDtPvAIq0/8RWMdhE06Td2rYEoreUaNx0BF4N3r79XLYlBcMqPGYLlah6IapTPjZb98nP2Grp5VxIfwVHYc+l2w26I0HLsQamWa8U6tt91qt1q5Bz7ktBomZJvSodBhKoFAb5p8Q="
        ],
        "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0701MB1717;",
        "X-Microsoft-Antispam-PRVS": "<BN3PR0701MB1717A5394464C881FF9A6B9581530@BN3PR0701MB1717.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(228905959029699);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); \n\tSRVR:BN3PR0701MB1717; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1717; ",
        "X-Forefront-PRVS": "0972DEC1D9",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(979002)(6009001)(6069001)(7916002)(189002)(199003)(50466002)(48376002)(101416001)(42186005)(50986999)(92566002)(76176999)(105586002)(106356001)(33646002)(2351001)(5004730100002)(47776003)(66066001)(36756003)(586003)(3846002)(6116002)(19580405001)(19580395003)(77096005)(8676002)(2906002)(81156014)(81166006)(4326007)(189998001)(97736004)(2950100001)(110136002)(5008740100001)(229853001)(5003940100001)(50226002)(68736007)(969003)(989001)(999001)(1009001)(1019001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1717;\n\tH:localhost.localdomain.localdomain; FPR:; SPF:None; PTR:InfoNoRecords;\n\tMX:1; A:1; CAT:NONE; LANG:en; CAT:NONE; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "13 Jun 2016 13:57:04.0389\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN3PR0701MB1717",
        "Subject": "[dpdk-dev] [PATCH v4 07/19] net/thunderx: add\n\trx_queue_setup/release support",
        "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": "Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nSigned-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>\nSigned-off-by: Kamil Rytarowski <Kamil.Rytarowski@caviumnetworks.com>\nSigned-off-by: Zyta Szpak <zyta.szpak@semihalf.com>\nSigned-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>\nSigned-off-by: Radoslaw Biernacki <rad@semihalf.com>\nReviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>\n---\n drivers/net/thunderx/nicvf_ethdev.c | 136 ++++++++++++++++++++++++++++++++++++\n drivers/net/thunderx/nicvf_ethdev.h |   2 +\n 2 files changed, 138 insertions(+)",
    "diff": "diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c\nindex 109c6cb..4652438 100644\n--- a/drivers/net/thunderx/nicvf_ethdev.c\n+++ b/drivers/net/thunderx/nicvf_ethdev.c\n@@ -168,6 +168,140 @@ nicvf_dev_get_regs(struct rte_eth_dev *dev, struct rte_dev_reg_info *regs)\n \treturn -ENOTSUP;\n }\n \n+static int\n+nicvf_qset_cq_alloc(struct nicvf *nic, struct nicvf_rxq *rxq, uint16_t qidx,\n+\t\t    uint32_t desc_cnt)\n+{\n+\tconst struct rte_memzone *rz;\n+\tuint32_t ring_size = desc_cnt * sizeof(union cq_entry_t);\n+\n+\trz = rte_eth_dma_zone_reserve(nic->eth_dev, \"cq_ring\", qidx, ring_size,\n+\t\t\t\t\tNICVF_CQ_BASE_ALIGN_BYTES, nic->node);\n+\tif (rz == NULL) {\n+\t\tPMD_INIT_LOG(ERR, \"Failed to allocate mem for cq hw ring\");\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\tmemset(rz->addr, 0, ring_size);\n+\n+\trxq->phys = rz->phys_addr;\n+\trxq->desc = rz->addr;\n+\trxq->qlen_mask = desc_cnt - 1;\n+\n+\treturn 0;\n+}\n+\n+static void\n+nicvf_rx_queue_reset(struct nicvf_rxq *rxq)\n+{\n+\trxq->head = 0;\n+\trxq->available_space = 0;\n+\trxq->recv_buffers = 0;\n+}\n+\n+static void\n+nicvf_dev_rx_queue_release(void *rx_queue)\n+{\n+\tstruct nicvf_rxq *rxq = rx_queue;\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\tif (rxq)\n+\t\trte_free(rxq);\n+}\n+\n+static int\n+nicvf_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,\n+\t\t\t uint16_t nb_desc, unsigned int socket_id,\n+\t\t\t const struct rte_eth_rxconf *rx_conf,\n+\t\t\t struct rte_mempool *mp)\n+{\n+\tuint16_t rx_free_thresh;\n+\tstruct nicvf_rxq *rxq;\n+\tstruct nicvf *nic = nicvf_pmd_priv(dev);\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\t/* Socket id check */\n+\tif (socket_id != (unsigned int)SOCKET_ID_ANY && socket_id != nic->node)\n+\t\tPMD_DRV_LOG(WARNING, \"socket_id expected %d, configured %d\",\n+\t\tsocket_id, nic->node);\n+\n+\t/* Mempool memory should be contiguous */\n+\tif (mp->nb_mem_chunks != 1) {\n+\t\tPMD_INIT_LOG(ERR, \"Non contiguous mempool, check huge page sz\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t/* Rx deferred start is not supported */\n+\tif (rx_conf->rx_deferred_start) {\n+\t\tPMD_INIT_LOG(ERR, \"Rx deferred start not supported\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t/* Roundup nb_desc to available qsize and validate max number of desc */\n+\tnb_desc = nicvf_qsize_cq_roundup(nb_desc);\n+\tif (nb_desc == 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Value nb_desc beyond available hw cq qsize\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t/* Check rx_free_thresh upper bound */\n+\trx_free_thresh = (uint16_t)((rx_conf->rx_free_thresh) ?\n+\t\t\t\trx_conf->rx_free_thresh :\n+\t\t\t\tNICVF_DEFAULT_RX_FREE_THRESH);\n+\tif (rx_free_thresh > NICVF_MAX_RX_FREE_THRESH ||\n+\t\trx_free_thresh >= nb_desc * .75) {\n+\t\tPMD_INIT_LOG(ERR, \"rx_free_thresh greater than expected %d\",\n+\t\t\t\trx_free_thresh);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t/* Free memory prior to re-allocation if needed */\n+\tif (dev->data->rx_queues[qidx] != NULL) {\n+\t\tPMD_RX_LOG(DEBUG, \"Freeing memory prior to re-allocation %d\",\n+\t\t\t\tqidx);\n+\t\tnicvf_dev_rx_queue_release(dev->data->rx_queues[qidx]);\n+\t\tdev->data->rx_queues[qidx] = NULL;\n+\t}\n+\n+\t/* Allocate rxq memory */\n+\trxq = rte_zmalloc_socket(\"ethdev rx queue\", sizeof(struct nicvf_rxq),\n+\t\t\t\t\tRTE_CACHE_LINE_SIZE, nic->node);\n+\tif (rxq == NULL) {\n+\t\tPMD_INIT_LOG(ERR, \"Failed to allocate rxq=%d\", qidx);\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\trxq->nic = nic;\n+\trxq->pool = mp;\n+\trxq->queue_id = qidx;\n+\trxq->port_id = dev->data->port_id;\n+\trxq->rx_free_thresh = rx_free_thresh;\n+\trxq->rx_drop_en = rx_conf->rx_drop_en;\n+\trxq->cq_status = nicvf_qset_base(nic, qidx) + NIC_QSET_CQ_0_7_STATUS;\n+\trxq->cq_door = nicvf_qset_base(nic, qidx) + NIC_QSET_CQ_0_7_DOOR;\n+\trxq->precharge_cnt = 0;\n+\trxq->rbptr_offset = NICVF_CQE_RBPTR_WORD;\n+\n+\t/* Alloc completion queue */\n+\tif (nicvf_qset_cq_alloc(nic, rxq, rxq->queue_id, nb_desc)) {\n+\t\tPMD_INIT_LOG(ERR, \"failed to allocate cq %u\", rxq->queue_id);\n+\t\tnicvf_dev_rx_queue_release(rxq);\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\tnicvf_rx_queue_reset(rxq);\n+\n+\tPMD_RX_LOG(DEBUG, \"[%d] rxq=%p pool=%s nb_desc=(%d/%d) phy=%\" PRIx64,\n+\t\t\tqidx, rxq, mp->name, nb_desc,\n+\t\t\trte_mempool_count(mp), rxq->phys);\n+\n+\tdev->data->rx_queues[qidx] = rxq;\n+\tdev->data->rx_queue_state[qidx] = RTE_ETH_QUEUE_STATE_STOPPED;\n+\treturn 0;\n+}\n+\n static void\n nicvf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n {\n@@ -294,6 +428,8 @@ static const struct eth_dev_ops nicvf_eth_dev_ops = {\n \t.dev_configure            = nicvf_dev_configure,\n \t.link_update              = nicvf_dev_link_update,\n \t.dev_infos_get            = nicvf_dev_info_get,\n+\t.rx_queue_setup           = nicvf_dev_rx_queue_setup,\n+\t.rx_queue_release         = nicvf_dev_rx_queue_release,\n \t.get_reg_length           = nicvf_dev_get_reg_length,\n \t.get_reg                  = nicvf_dev_get_regs,\n };\ndiff --git a/drivers/net/thunderx/nicvf_ethdev.h b/drivers/net/thunderx/nicvf_ethdev.h\nindex e31657d..afb875a 100644\n--- a/drivers/net/thunderx/nicvf_ethdev.h\n+++ b/drivers/net/thunderx/nicvf_ethdev.h\n@@ -59,6 +59,8 @@\n #define NICVF_DEFAULT_RX_FREE_THRESH    224\n #define NICVF_DEFAULT_TX_FREE_THRESH    224\n #define NICVF_TX_FREE_MPOOL_THRESH      16\n+#define NICVF_MAX_RX_FREE_THRESH        1024\n+#define NICVF_MAX_TX_FREE_THRESH        1024\n \n static inline struct nicvf *\n nicvf_pmd_priv(struct rte_eth_dev *eth_dev)\n",
    "prefixes": [
        "dpdk-dev",
        "v4",
        "07/19"
    ]
}