From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0071.outbound.protection.outlook.com [104.47.38.71]) by dpdk.org (Postfix) with ESMTP id B718EF977 for ; Wed, 15 Feb 2017 20:07:07 +0100 (CET) Received: from BY2PR03CA043.namprd03.prod.outlook.com (10.141.249.16) by BY2PR03MB1942.namprd03.prod.outlook.com (10.164.114.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Wed, 15 Feb 2017 19:07:05 +0000 Received: from BY2FFO11OLC011.protection.gbl (2a01:111:f400:7c0c::132) by BY2PR03CA043.outlook.office365.com (2a01:111:e400:2c5d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13 via Frontend Transport; Wed, 15 Feb 2017 19:07:05 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; caviumnetworks.com; dkim=none (message not signed) header.d=none;caviumnetworks.com; dmarc=fail action=none header.from=nxp.com;caviumnetworks.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11OLC011.mail.protection.outlook.com (10.1.15.22) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.904.16 via Frontend Transport; Wed, 15 Feb 2017 19:07:05 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v1FJ5fLv020023; Wed, 15 Feb 2017 12:07:01 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Thu, 16 Feb 2017 06:09:26 +0530 Message-ID: <1487205586-6785-28-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com> References: <1485172803-17288-1-git-send-email-hemant.agrawal@nxp.com> <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131316592255605982; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39400400002)(39860400002)(39410400002)(39840400002)(39850400002)(39380400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(8676002)(33646002)(2950100002)(6666003)(104016004)(6916009)(305945005)(85426001)(105606002)(47776003)(54906002)(97736004)(626004)(8656002)(189998001)(389900002)(5660300001)(110136004)(77096006)(36756003)(92566002)(38730400002)(48376002)(81166006)(2906002)(5890100001)(356003)(106466001)(50466002)(68736007)(2351001)(4326007)(8936002)(53936002)(86362001)(5003940100001)(76176999)(50226002)(50986999)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB1942; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC011; 1:H3KBFwNMHl1aF45XDiLTkiXLNEkhBPJJur5dQoOTS1dQKJ/IWsmHndEl6KenokEI8rEODP6XNCwJtHEjcNkY0wP4r8+H5jSc5IDG1BkZ8StGE87QuFblOKnKz8y9Vcorb0izL+YERXl/49MbFWlRj61GLyoCDpnn/I0S1SmGlYr5hxCz4R0mRcDKNaEO/T2vNSdyLUx8r350NRV/gubD/sMA/Ysbh1jexVvvM8VtwzWmiU8vVffBWbpmZXjLFm+HsOUqf7mvBfEESU3ry2NG6xt0+mDtP5F1Rej4l+mv5gT5P6zig39nrSG6IQU6oxiIF5e0Jw6zaCppqlsVYrvb2s+NvOBSkjHno3Ur6ZOLlf/FG7nLRr2ClxLyztf9XXe0oyLYHby+bfE9CsKP+obOqc4015e1CsmN8HAWrJvb2gvXM3Y5DAr9+TGoKA/tjK5mIFgu2+p5gqCGxuPWz0eEY+8UrxACFiS0AFiw6tzKiM2CdIgtZnaGiYvcLONw3tdblFSc+kwbWiDDoTbOQhRomCt6PQWKge/GSaA3mP6pgF4mezqMC2sxH38umbcX0m16nW+Bx7wo8c9l5T13TbAxAHvJhzA3p1t9xb8rdLi0/uw61o5ZyiOsgDFCiGqdMObNTAWUqBMSfMHrIEUQLl5lTw== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 051e7fec-a789-44f9-30a2-08d455d5d4e4 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BY2PR03MB1942; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB1942; 3:W9OLr/xUpa49JHrJjdL2534ykate4YBtwo6OP5F7iDjZxHCF1uH3bM9gr327HJYrd23qcfwy/ipHkmFpGWPr0U43eOm+TMSsoIzmYry8mchz0XdL8SLgWiX+hWKy9TYAaWtP/VLjoUnsMlUZotIJwv9Xa2Oq9xK07gw9eFYx+N7LYFttVadJHpjxq708xRph842ZZeY0SODuOJHCV7T/UMIstZeG3ifAOpckYZR2PcSVazzxZvGgI9JuZgGLp4Ko5kOOrFjqOts3Lv5gXey2ImM0EIPb5jnoF1TOOkxhMj30FbHs6Wwby9D7W3aqaHkzwLw5zW56Rsx+AGnxOcLqNr/5Qjq3fcIDeclQ+qHXMoEnPiEDIalkdcxLxSu8f1mU; 25:QmFt4RAUMa+bTGEP2WMkeQ52uTuMNeza7D/XTiflJVqKbQ/yh3ALCFOZbfKGTpJ33CvxtOj30Piprb+QpK5cOLTKhwqHB47CDCsqcFzoy44VMD4zkGB1PEqCQu5w6ZraEbhY0IAFet9T9K+E8ewT83UoA/kD4Arfk0UvwFcfv6FP2zE9JRC/Yh1TBGmIqvxWUhy4guWiqr9nj9eQxaVuDR5Q9+cS6H7sf9bplu6xfClv/nVjQrjRXKalyZ/I8bm+cV6QIk4J5+m0YzLzXR1hM96zGnqCZFhsN1/KUqetdJeqJrUnPkFy0ub+aBZvyRi7PZCpJXgxIVaQj+elkKy0KkCxioQJ0XPSp0+x0wP18Re3bpzJaSSz3VlFTtVmvoiF7+8Wj1nY22ZhPzAN8vOrhTeG/3EWsXkiTBzHwJerMbvj2DyqlkXzb+0lo0rBQ2SE0GiDlLgysQAQte+WT6vC0w== X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB1942; 31:8YI9PN7LGdKLdAjTURhPrpNquLuqN87GJbLtlHHHm+giAmgEahJqA9UAKF16VawQssNG6W+L4PLgRwuc+fc9bQ7cZjDstN8kWdReeKdl+MzV9gCDeHDeA3YGl/GFTi0SLfwY5MDRcl6HGIjHwRK3xB7jvqk0ixC77L0hQ4+1xSIhcrR/4G1co5RxR4LBZvuavmdnk+u8KVcWIxOs/WwOqZzkkWTTwMVo7ZGxt7hTCwOG92YMN0DuS+tylqScvuMZg89Ty6ZVjZIT3obePYQ87MFfYr/J/3poY/3g8BMEaeo= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13018025)(13024025)(13023025)(13015025)(13017025)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123556025)(20161123559025)(20161123563025)(20161123561025); SRVR:BY2PR03MB1942; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR03MB1942; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB1942; 4:CB6U5piyvEBcMrO6y/B9qnRx4BnA5oWuzx0oSnUsqgEf/CuH/P2WNBWQWcLSy8O6UaDFnvbzYMZrPPuKsFvKCAEChQh+Z7Lzs7iGeT7WKnwZhMJYFq76N6ZNJlrXV2nz3LHlj7hXC+TegzK3LCchU5Fmw79usfX2UJ3Kmz7Ww3pXtJ5cpgES+9FuB6d2PIMtvq05fk8gSExkTTzfp5dNVqjbtKeIG9D8jmdBzsKiAYIk0RMPWZ7NIT5DEn4m8l/BnXXfqYyqnvjUdfVMPjZGUvZDqO9rqWzV36YWSpd6iKTFdBFm9Ojdx928OATa3U9IymQP9EXG8ZAWRKp3elkvSRfXccx92oCsdmrf3UUycqX7WlZFPXMesdlhl2yacel8f3sNwObWcLlY6Sqbj60+NWG07CgYCEcaX9Yjo3EbHzMHyENultpzku5OZmAVY/mLpqUzd0CppfbilJxBDhWe4FK9YK3i0uEmaGjMt0ZR1Xao1B8BdZPg6aZgx+4SsZzyPJEvfs9Xuu+mUBmeRJJxA9T8D2h3/pOgOUZ3LFGEAbKZhxsdb5/4yn3wNmKbOmfAcnmqKfVkE2XtYf0juszj5HKYT7LrFFcHCyAuMCJcQoGjZyBQX9Dq1aV1SobPDieN3aODo9KvWVIvICv4Uv9/sQbPLM06BbNe+8dp81syy0uQkXIZ+RSIUgXtzwkqQl+yUM10H8q8iPCrZ6WUa8wzEHS+IYxOBIWbYasZ7V5zzKP6yVR0wCRmpIydqKrE3S/oCseFRCjuMbWAM3Uzi4P+wA== X-Forefront-PRVS: 021975AE46 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB1942; 23:08aA0bZ0Sga+zaYoaAd+d6exmxU+x2PMZxLuiDHac?= =?us-ascii?Q?WS/D3BkJf8xnmGDupAUQsASZ4RwqV69GeA3hgXa0jGJyhicIqMJtrMMDMqV0?= =?us-ascii?Q?EsWv4dMwQE8pO8DLm85bDxI0JE2slkglhubYcJdFmXjzo98BUx+fH9bs+YF8?= =?us-ascii?Q?Lh2cgbBHtqWNOVAUAw+eWP1heOH75sb9dUIN2gP7UQ18G4StoEhNgZ/f68Bu?= =?us-ascii?Q?PhBhluXgLUwR4IGz8gJvFxaYuuf8ZUQ5jiCOWt6xkF/dX+vJFz/svctQcLgI?= =?us-ascii?Q?Qg+K5dtPlwxnxfxENuG13WnSWir7Dq5F8GdJcbYOoJwNm0pxpBLQLIE71BYc?= =?us-ascii?Q?xKGbsYvfrl9dpmaeUH5ss5hO0h9dARH0NVI8aniUo6w6AGrXWelTccbDroR2?= =?us-ascii?Q?0ckUIdOb2qMRZEGfrsfjby+odKnWDxONslnVBzpVkQ6gbgmpLtOGJhjNfSrf?= =?us-ascii?Q?zJIvM1Inv6ZxEPahpTCpWO08LtN+Tl0GnFiqXjEoCITotcR0WRwwzQiohQBV?= =?us-ascii?Q?ANVJEkBY4c2i8Qnm5zVRrRjwP6iUWUmOP2Rb+EKGe1uAljitFsSPovKSyuaX?= =?us-ascii?Q?7B3U31OCVi01M/lAtsMmJMyY/ceXQ3hbRPQxNUEmmbSmAtpyYkl/y2n+lO1L?= =?us-ascii?Q?oKFOM5a3MzDbTApERzfLi7rNWKTkUYixWGzLRJfZ/33+kfiGd94Ix72L5Jzb?= =?us-ascii?Q?Pxo+eEwqwYvhfJcKQ6JlW7UQzDDJPw+bJsofJ+T4sgx2LWEIFtz6gTnhnd9q?= =?us-ascii?Q?Hh/KnRl6kfATE1P8vGfhLkaIeq4783nupFSs17R+KurPQ8FdcAuvTTC2FApj?= =?us-ascii?Q?Nq07gyzat7y1tg/T/XAwXL2V2pFIyfhA60drtD59B1uS30EQHjEiiz6ct4GX?= =?us-ascii?Q?hU0zEssQ+6Jmq8m6RSuO3j3l2kFh+0YZEqDci/tYZ4R8v4GaxdpGVuz90SxI?= =?us-ascii?Q?RIoZZR74CHO9DaEtsj1Ixf8Zpvz55F8kW/n9L1kRLBuc0ovh4MFgEqcsIieb?= =?us-ascii?Q?iN6zqMpHpjChyrVPSTLeMm12SJ6lfu5jIAWdXZEgNlidAd9nkPs284OOtW95?= =?us-ascii?Q?afJcJJbdNpo7c7Zm2Qj9ti8FBwWtG+T9yEGweupEEfnN7OeSlgvVtZlUQrYz?= =?us-ascii?Q?gk5UqrERLtMFwPHAwylLkYvFMtytx3nNUYAlN0VplWwlr/guHvn5bVIzsVUC?= =?us-ascii?Q?+L8AHE5KiONAIZOLQfiuzxS4w4y9lNoV2FRtjb2EjOp6gvN2xWItQJpx6Aju?= =?us-ascii?Q?z4HSJCK/LamDgPWs8en3c89CIa/7Zso1cXkrqK4upcQRUqxqm4r/r+Reg8OO?= =?us-ascii?Q?5P+HcaM55cdaUJLGk27/znsVUbhQ007LXRIHl6E0uOWxdfNVDQoczd0BNk05?= =?us-ascii?Q?SBQKA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB1942; 6:o2XB3VOR0opE1IvplogxQ6IIIpByevBAWt5FxFUdSXqXTXUC0AdNjFk15CTtSSWtmvyxk2Lk+kwCdHYSqgaCnBiT+aG89+AaKM5NG1LkT2jFJwu4RlCNOfnL7LcwfhHzE7/YOthMcuvnUPTJGD5xL+3wYZOuVJEb+Ga2Jg75jAHJCi1SEUVWal0TC4AxueWjYDzU8wV3mUNMWjBJU6hsw7wNndDQ06ZB9o+BxtPbN74hlwQqb0hblCqs4i3fabdwVW6TpffQOVRZnhIL0YWTbpUNHhkn+Kw0VsQp5gJhFH8W718WTUCFDNSBlapI4nY3ucxRQF9RSshH1qV002MxsHrlOhiQf5uNlTiiTA9Yehhbv6h0eLaBN6GDSLcNXTQ2Bi7TG+TH/zC2/ZhZ1fD6G7vdLCSrwOJeTJ6RUjUI5Io=; 5:72YevztzSP1rgEePgChnO3o7M1bmFNZ95ZEvTI7YWRkYXrhAxL24v8RLk66+1XJMdD5yLH+vS79ldjSojaBrnAX6wEgAjgyfm19f5p11Y3kMmrCjyLm5l9QR+hRSvCQhrxMZwlq/wIhABG6+9/qpCob8mfF0W25vnaFupOuaFjkNB1q2ao7JGXoYRDcs9UBc; 24:U1z7djgtSVRkQObkE4PA37RpmfROjoGCtrRX44xkQHl1SgGMwMRSkUCG94WP43vtRs3d85C5QqcGkgXKLM8RNCzJa8BXqy3BxqpiTvnGmSM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB1942; 7:+BErdBmFgBfpyLHpXlKmvJ1T/KW6oYoASiAGax0GbMDKLyCQi5kvxHuOTOQwdVWGRsEbR6lyx0kAJTu+vEkoGHBESu8zN11rJu4HW4PxF1DEZt2rA9/c1gIQcTwqZx02Af1uouRMvoIqgax2BiOhEPsynSd9dxk94ptxnEtG9c7p0lW2sqdSgxyeJ64NvD/aVLNLdrtaD9GPjD3QcwpL0XTWkYUSOCZlqh6ejsH/bAJltrzBFzBTbvO2FkEDzQNSQExd0fFva7I6S90euaIp3m5LNEVJmOUY/Y8ne6UKRFeydVMwCxR5jyblIjl0Zp/6cZHHuPc1KJlCL0U142QIZw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2017 19:07:05.0302 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB1942 Subject: [dpdk-dev] [PATCHv7 27/47] net/dpaa2: attach the buffer pool to dpni X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Feb 2017 19:07:08 -0000 This patch configures a MC-DPNI based DPAA2 PMD network port with a DPBP based buffer pool. Signed-off-by: Hemant Agrawal --- drivers/net/dpaa2/Makefile | 4 +++ drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 57 +++++++++++++++++++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.c | 62 ++++++++++++++++++++++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.h | 6 ++++ 4 files changed, 129 insertions(+) diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile index abd1fc8..dc4d98a 100644 --- a/drivers/net/dpaa2/Makefile +++ b/drivers/net/dpaa2/Makefile @@ -49,6 +49,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/mc CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/portal CFLAGS += -I$(RTE_SDK)/drivers/common/dpaa2/qbman/include +CFLAGS += -I$(RTE_SDK)/drivers/pool/dpaa2 CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal # versioning export map @@ -62,10 +63,13 @@ SRCS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += dpaa2_ethdev.c # library dependencies DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += lib/librte_eal lib/librte_ether +DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += lib/librte_mempool lib/librte_mbuf DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += drivers/common/dpaa2 DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += drivers/bus/fslmc +DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += drivers/pool/dpaa2 LDLIBS += -lrte_common_dpaa2_qbman LDLIBS += -lrte_bus_fslmc +LDLIBS += -lrte_pool_dpaa2 include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c index c95c083..08f53b3 100644 --- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c +++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c @@ -46,6 +46,7 @@ #include #include +#include #include "../dpaa2_ethdev.h" @@ -285,3 +286,59 @@ int dpaa2_remove_flow_dist( } kg_cfg->num_extracts = i; } + +int +dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv, + void *blist) +{ + /* Function to attach a DPNI with a buffer pool list. Buffer pool list + * handle is passed in blist. + */ + int32_t retcode; + struct fsl_mc_io *dpni = priv->hw; + struct dpni_pools_cfg bpool_cfg; + struct dpaa2_bp_list *bp_list = (struct dpaa2_bp_list *)blist; + struct dpni_buffer_layout layout; + int tot_size; + + /* ... rx buffer layout . + * Check alignment for buffer layouts first + */ + + /* ... rx buffer layout ... */ + tot_size = DPAA2_HW_BUF_RESERVE + RTE_PKTMBUF_HEADROOM; + tot_size = RTE_ALIGN_CEIL(tot_size, + DPAA2_PACKET_LAYOUT_ALIGN); + + memset(&layout, 0, sizeof(struct dpni_buffer_layout)); + layout.options = DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM; + + layout.data_head_room = + tot_size - DPAA2_FD_PTA_SIZE - DPAA2_MBUF_HW_ANNOTATION; + retcode = dpni_set_buffer_layout(dpni, CMD_PRI_LOW, priv->token, + DPNI_QUEUE_RX, &layout); + if (retcode) { + PMD_INIT_LOG(ERR, "Err(%d) in setting rx buffer layout\n", + retcode); + return retcode; + } + + /*Attach buffer pool to the network interface as described by the user*/ + bpool_cfg.num_dpbp = 1; + bpool_cfg.pools[0].dpbp_id = bp_list->buf_pool.dpbp_node->dpbp_id; + bpool_cfg.pools[0].backup_pool = 0; + bpool_cfg.pools[0].buffer_size = + RTE_ALIGN_CEIL(bp_list->buf_pool.size, + 256 /*DPAA2_PACKET_LAYOUT_ALIGN*/); + + retcode = dpni_set_pools(dpni, CMD_PRI_LOW, priv->token, &bpool_cfg); + if (retcode != 0) { + PMD_INIT_LOG(ERR, "Error in attaching the buffer pool list" + " bpid = %d Error code = %d\n", + bpool_cfg.pools[0].dpbp_id, retcode); + return retcode; + } + + priv->bp_list = bp_list; + return 0; +} diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index ab9dfe6..906a4d9 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -48,6 +48,7 @@ #include #include #include +#include #include "dpaa2_ethdev.h" @@ -63,6 +64,8 @@ dev_info->if_index = priv->hw_id; dev_info->max_mac_addrs = priv->max_mac_filters; + dev_info->max_rx_pktlen = DPAA2_MAX_RX_PKT_LEN; + dev_info->min_rx_bufsize = DPAA2_MIN_RX_BUF_SIZE; dev_info->max_rx_queues = (uint16_t)priv->nb_rx_queues; dev_info->max_tx_queues = (uint16_t)priv->nb_tx_queues; @@ -187,6 +190,7 @@ struct dpni_queue cfg; uint8_t options = 0; uint8_t flow_id; + uint32_t bpid; int ret; PMD_INIT_FUNC_TRACE(); @@ -194,6 +198,13 @@ PMD_INIT_LOG(DEBUG, "dev =%p, queue =%d, pool = %p, conf =%p", dev, rx_queue_id, mb_pool, rx_conf); + if (!priv->bp_list || priv->bp_list->mp != mb_pool) { + bpid = mempool_to_bpid(mb_pool); + ret = dpaa2_attach_bp_list(priv, + rte_dpaa2_bpid_info[bpid].bp_list); + if (ret) + return ret; + } dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[rx_queue_id]; dpaa2_q->mb_pool = mb_pool; /**< mbuf pool to populate RX ring. */ @@ -388,7 +399,9 @@ struct fsl_mc_io *dpni_dev; struct dpni_attr attr; struct dpaa2_dev_priv *priv = eth_dev->data->dev_private; + struct dpni_buffer_layout layout; int i, ret, hw_id; + int tot_size; PMD_INIT_FUNC_TRACE(); @@ -475,6 +488,55 @@ return -ret; } + /* ... rx buffer layout ... */ + tot_size = DPAA2_HW_BUF_RESERVE + RTE_PKTMBUF_HEADROOM; + tot_size = RTE_ALIGN_CEIL(tot_size, + DPAA2_PACKET_LAYOUT_ALIGN); + + memset(&layout, 0, sizeof(struct dpni_buffer_layout)); + layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS | + DPNI_BUF_LAYOUT_OPT_PARSER_RESULT | + DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM | + DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE; + + layout.pass_frame_status = 1; + layout.data_head_room = tot_size + - DPAA2_FD_PTA_SIZE - DPAA2_MBUF_HW_ANNOTATION; + layout.private_data_size = DPAA2_FD_PTA_SIZE; + layout.pass_parser_result = 1; + PMD_INIT_LOG(DEBUG, "Tot_size = %d, head room = %d, private = %d", + tot_size, layout.data_head_room, layout.private_data_size); + ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token, + DPNI_QUEUE_RX, &layout); + if (ret) { + PMD_INIT_LOG(ERR, "Err(%d) in setting rx buffer layout", ret); + return -1; + } + + /* ... tx buffer layout ... */ + memset(&layout, 0, sizeof(struct dpni_buffer_layout)); + layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS; + layout.pass_frame_status = 1; + ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token, + DPNI_QUEUE_TX, &layout); + if (ret) { + PMD_INIT_LOG(ERR, "Error (%d) in setting tx buffer" + " layout", ret); + return -1; + } + + /* ... tx-conf and error buffer layout ... */ + memset(&layout, 0, sizeof(struct dpni_buffer_layout)); + layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS; + layout.pass_frame_status = 1; + ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token, + DPNI_QUEUE_TX_CONFIRM, &layout); + if (ret) { + PMD_INIT_LOG(ERR, "Error (%d) in setting tx-conf buffer" + " layout", ret); + return -1; + } + eth_dev->dev_ops = &dpaa2_ethdev_ops; eth_dev->data->drv_name = rte_dpaa2_pmd.driver.name; diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h index 2d13137..a56b525 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.h +++ b/drivers/net/dpaa2/dpaa2_ethdev.h @@ -37,6 +37,9 @@ #include #include +#define DPAA2_MIN_RX_BUF_SIZE 512 +#define DPAA2_MAX_RX_PKT_LEN 10240 /*WRIOP support*/ + #define MAX_TCS DPNI_MAX_TC #define MAX_RX_QUEUES 16 #define MAX_TX_QUEUES 16 @@ -57,6 +60,7 @@ struct dpaa2_dev_priv { void *rx_vq[MAX_RX_QUEUES]; void *tx_vq[MAX_TX_QUEUES]; + struct dpaa2_bp_list *bp_list; /**