From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0042.outbound.protection.outlook.com [104.47.34.42]) by dpdk.org (Postfix) with ESMTP id D5C04F934 for ; Thu, 29 Dec 2016 06:15:29 +0100 (CET) Received: from BLUPR0301CA0006.namprd03.prod.outlook.com (10.162.113.144) by BN1PR0301MB0737.namprd03.prod.outlook.com (10.160.78.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.817.10; Thu, 29 Dec 2016 05:15:25 +0000 Received: from BL2FFO11FD024.protection.gbl (2a01:111:f400:7c09::191) by BLUPR0301CA0006.outlook.office365.com (2a01:111:e400:5259::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.817.10 via Frontend Transport; Thu, 29 Dec 2016 05:15:25 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD024.mail.protection.outlook.com (10.173.161.103) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.789.10 via Frontend Transport; Thu, 29 Dec 2016 05:15:25 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.87]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uBT5DOI3010218; Wed, 28 Dec 2016 22:15:21 -0700 From: Shreyansh Jain To: CC: , , , , , Hemant Agrawal Date: Thu, 29 Dec 2016 10:46:40 +0530 Message-ID: <1482988612-6638-22-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1482988612-6638-1-git-send-email-shreyansh.jain@nxp.com> References: <1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com> <1482988612-6638-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131274621256229735; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39860400002)(39840400002)(39400400002)(39850400002)(39450400003)(39380400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(36756003)(76176999)(50986999)(356003)(8656002)(50226002)(97736004)(305945005)(5660300001)(38730400001)(5890100001)(110136003)(92566002)(33646002)(626004)(47776003)(104016004)(68736007)(5003940100001)(2906002)(50466002)(4326007)(48376002)(85426001)(69596002)(106466001)(6666003)(86362001)(8936002)(6916009)(2950100002)(77096006)(189998001)(8676002)(105606002)(81166006)(81156014)(2351001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0737; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD024; 1:5YSFXin4bVvsHv5CRVUyQ7QiQ6i9YcOViykqxw4m3YbCGTzfN8JAWViMuGKxHWIk+m1tFLAEt1ZqfpX915jD0+HR+chTjmv+hhq1ajlTJbXIONEtkZoi10SxKqtN1hGXFXGiSqoOVi7GYdwUVoPqGtf4MrKysnsi9A5Q7H2V6IlP5fYGGpypFT4cQB8622OEyEQeDB9sCJZAffzkjtrHKqkBja+Rc7ZgbfZxAQvL7hNVPQ6QOUwwR2oBkJj8db/94f8O67yvF1EqWlNir8Z0LqPq8q9BB1YKc9egNggGX20FPM97zDil9ctkkyH6Y7uzt23OGCd8aob1lPw2lDqjhLnwonel065Mn0h7OBKW+fuae2e9onf4DyZ96pVqoPvG1gV1T5yYgqYxYfIKXhfp+E/t+kXYjLJPQlK0FbKu5vR44EFxfYBg6Xcb5OSodEHUeRCnS8J0uxtkJGxiqQc9JEpWvokjmhn5LNw7OozEkqHV7h+lqluQLEjH/ohj3KrH2kZX1kzEHTwG5+SfHtkP8Dbl+pNU7Ny+PKusFlbchB4JMLwqNR2Ra8Mbs2gziGguG3eHMr67lago6hZmQSVyjj2D4IFJ6Df1kGSNx1ExFkg8ZykGf2tC1vxgOa60KXz5ViS1iTP/hXIM+LIPTvVaQAMNkMB65pkgzheHg6jCPoiQkzNB5BdaFLk66bA7CTaatQ4aTZIa5WEq+7o4fOxW7badusXkBYZWazGUvmEdzjfBqNT5kmB4fOpGPLhDImITL++XKrhak2EHNGd9Ty8eVQ== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 05d53d9a-a828-4cb6-0207-08d42fa9b275 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN1PR0301MB0737; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737; 3:dO4qjYpHoZfj/dcFfEHfbgLbbTN+qmoxoTzgs6z9513mXoHuIe0JZyqI7L4sFt2WIsG0NvBUMJ389SCM7WJ6OZM1ysxLxuXDLGOgG2gtPV/jigT/YKxmn4kEtBOcOvAkIRNFsAeNpgTGtqtXIk/Gw2DAsoOgGqncAaOrMc1OTdXxFLYXzOCO+N9w2kSLmj3aLoCYP2D+6V0jKu+Sck9ETFUBFMeg061LECIVC6GcGjllF1iPHQ7VF1VX4SStXK/Iz3lUSAxaDTMyS40yj0owPEEKbeWVyzZvGDgkoAKd+3+k9EC+Z7YdNgSAbSsZQ02JurrBiJolOcoa8P6ywbYBX5yrpIaaIZIUaK4e6SM+y94=; 25:BEP4vSRbaPLhIZP+mbO8j18QuiLkASz9IQxTtUtOqvfs8kxDHHcNzADZzqULdqIkcUThlA58uJ8hHEInoZxZ4J3i3IA7nm3SsztHDjxQIl4f2cUGFIHNAAQd/copbTHSl2CdnuNzprbBFm7cgjROvjYmEwkvuQN9jRmeCLQNcANiJFLlOM+ToXAEyVa+zdQO+njDjH/aLDsTlKi0ufaD8+edxIAmf2VSmXY/HI+2WLzQnvSOrzPLk5LHEWaGnuJeMH6yOu3+SnsGjPTB/RLU0fTkSbVrb7c+J6KT93l4BI8P8dcS/Xxmy0rjmrVO1rVFgt0lE/Q+HIXMNu6TXEof+KHEUvSxZFLe3+3WBswNi5/Z3S1OiFj/ixBFq5jyTWGmyJ2DZhFtoYL5uMJr8iMOaxY8GmkbEVny6qRoKUMau30VWYfTRnpG1b4/jd3CZWwoK6N7Ld7FlOq49ykPjE3W0g== X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737; 31:xpXh5uhTKTj4PDbC0nPJGaxT60tHmkJYdUvx9IbLGUbbmNjQwrKttNTFeKHcc9olClKX8h9c7/Dz9Wh53ZMQG83daVLpG+yt5I2K5/tSr80444HSvU+XnvHTLYfcjDJM4t4iAcy2jqMbhEUyIMJNID4Jb1JPHaQXgjXhqdsbz5ICvps/1Nj6dX3uzAmJ4bwScnbQZymsgjR03CgSWFlELtf3jvK9ZwI9hjhu4x3+oqkWsOcrdVWdVouIubf6POuMEPKcpHXSXfuHFNiS+979nQ== 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)(13024025)(13023025)(13015025)(13017025)(13018025)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123565025)(20161123563025); SRVR:BN1PR0301MB0737; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR0301MB0737; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737; 4:G680zJrijT8bslE9iiQFD/vZcyPIix0o96nGmDffO3JPOTAFZOOn8LvDoZr7L2doQsepw4Mtdd/bnSdulSbeZXs1UhY8tRoTE7qXap1kzFiQmLnG/JcLiQw1IbObGOqK+QMYj0G8iEADn9knskEf9HxwnEaqf1xJ91Vm3td3tFBPnTaOI6bmAE9LgZ2zN2CyPtU4f/EPDZX8agWADwdbatr4V65shi2D4OQvldKBBQ1fv+M3qRg9hb4KYl+8FMT4UsteIMpz6al5GGzmHZXLysxiqSG8x3QccoCej96F/GIDlDAVlVtIJsKsrhJA2Idnv+yjhBaKzzKS5tFM5dkgSEDnbKVjPjFrIolBRMFkL/sCmIrJT26L39qPAAkDTQPpHh/RQpSoJUz87AsLEwJUGP5lZw1eLp6g5FcLk5EEh4TGnHD0fwk9YYO8CyjGOmG0y3Nq+a7uhgsystSHcpPjLqCeZYFxR4hF0fLvY2bizTKtPIFL8m7Ky2fUzsUDmgVwJJOjFbb95BCCjKJdt1Lu9ZWXyI35FMqoVWnDL4U4Yzibk5MRCXA/kPgqQCfx5v6FJPyX/EZ2aYhjhRgh6nh3t2Z4peeQ7S3/SvENH1uifnNxjGnVx9Rxv4Jkv1BWobOM0t/v9ieCu2tAZBP4r4CqoIh5jN8TT16ilum4lKgJ+s/emmPSOwBOemdixcGrZIPB25NGILBpwhnDCOd+IkjKKPAG0rTfrIdXw9SOEjpkxymF4opi2eAD+rt24oplv8O56lNh0PuGXFqdcMePuHmeow== X-Forefront-PRVS: 01713B2841 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0737; 23:lhSoGpmBp1rIKMISYSSS454SN3tDrk7e+c/krgm?= =?us-ascii?Q?oVvskzYwDRav7BHGS0kN1FTbaV0vO6PoQOrMSNw21tG5UzxCBku3dRd3UaqX?= =?us-ascii?Q?UCT4FrIyXCbrb0k4/9ewmcu3WQQ1lqswEEgfSRzQwoUD2mbiMEJfit/aTIqW?= =?us-ascii?Q?laItfEOjZ0doSrzJU34/LnUHnBLQHuwvlVLDc7hW7Ow/9qm02wY8ykP1Qtk3?= =?us-ascii?Q?sKpyueyiYAadhuvn3PEEOyuWgJPc2OQ8+m7QLnj29WnhTj/rrE4XTnbrX0s7?= =?us-ascii?Q?5TxC5Gp6VKrpI6EY9yld+vw+A+fkmlNeVYAfJlsGQBLb+LS2M13gHOfVWEfI?= =?us-ascii?Q?2WxIZqSWKSgKus9p5RAHu+MuG37p/n9wqqXB4xd/8b2XSNhXR2QQcewxuGHr?= =?us-ascii?Q?TNo1ugn/j2IQQJj3ArPD/A46wtwsvUfs8x4+A4abyIzqhUclsKRYgmDy23BR?= =?us-ascii?Q?VKwnJdCGkmhnYPPeQKMLYQP5Jn/1KwYXKa6s+aEf0W1rPlDQeGlGtdNWEyWx?= =?us-ascii?Q?1xM3FvQxkXohcb5LGyDDeWPv8BGh9CUw+ez1nePsow6w26Ygz/G1xUpEoRIu?= =?us-ascii?Q?Ko5pd20OcC7MGTVoZF3yl9xhIhOg+76wjYNkfeLfHRKmETnJ710K7UvBleon?= =?us-ascii?Q?GPlNclMXgYejhMr6YnUozGa5GAHJnkhbffa1AtzpVAwUHDWi5zJeesp9j4vo?= =?us-ascii?Q?nq9bG6sKlKehxiNLTaEEcObY5jERMH24Ytf7pXbHLF6Iowzc3fgyDD35l1AF?= =?us-ascii?Q?U9/5EeAf/j6TytKVe41AqRvIxHsbYyVsSwt0tQFjZCy5Sk8hWOLxlakofoC4?= =?us-ascii?Q?O64QzdQC/8QHUaXKCjWZ1YehonyZBTU1YMypPWLGemmIEkwnKL3oSYyaqTD5?= =?us-ascii?Q?5v5/SqAEk4enMuKzHqErT5NPOBjkCmjT21HAYqfc4/VDFKLM/CTFIXM7xow/?= =?us-ascii?Q?e533nRZXnkFgTKXaft2bHP4Yv2gj6xcCF6gTN6WYLr6L9zRZ8utIEuBG987L?= =?us-ascii?Q?+R4SWGhbiTEJdX7DuYg9FQfMADNrMly2jUzEO1U/awL9ZnGbx2NsfiTyQkYj?= =?us-ascii?Q?HUfj1EP+elSVAw+xUfhErFIsLPeeyMAQIL6hjXIffy2TStutVDYgpyP/pwlq?= =?us-ascii?Q?htYSN21UqhzWT5it40f8vew+nM9m6h7tp5F9wsWZdchGkigq0xXO3M/HR1ze?= =?us-ascii?Q?a2sfdKlmqB0wNQmHJ6LLUfVhDQOf6OnpWw+ESWlpIt+zyNLmT297elxJbuVC?= =?us-ascii?Q?CsWA1/YK6YwwRTFWQg7twUowElLw/NZVhZ5ydmBesEulkZG4UyRKzJsnQsdw?= =?us-ascii?Q?TuG8A2hWLvrFlPccsvLMpSRdL+cV1ifStEAxEczh5t6B5?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737; 6:D5v05EhxEPMFJESn2EBVGrqLjSPc7G4340FAmFxYl7RL0h3NGFuZPA/GdEWxZ6a4D2d28s5N9k3b+S2XBLRhzruRHDip7JPF6cXUhsU0zUqSdJySuXHUSwsevH43DeuFAzTO9+VLLSX7Go7LLH9B1tf6+g/LhCPLcKnA6J+CbzU4EuCiGDS44c8dazGWaKBM8h1OTPp4h4VRRyaku66snkzz9Cjjcd4VuSoPQj7jKnhfEQRH0KXhTakPwXWpaod37le6d6w5L7tce8Qtx718AZdFiQRV0X9CFeFXQgEthDHewNRrOLpWsLfNrmk0+ougp3+bHmBDB9M+qjYYysrUbhDpKV9jJNG8Ffc2K7glMY9obVjDzJ/GkXqttLKrbTESiJ5FE/7/D2X7tLWWQGRrWbJSyb3Wg/oijIUEp2e7gKlXMk+5btIhpTbF2NPbDpQE; 5:jpv/QwFhUFI2uNhjqGdO9N2uQzHbtOWMXu1wD2apYoz5NYQoGxOUY1Xq6rJK7BLFrXPrDXtvI97jotC45FFL8pCD/kyaIUzrft6AwKvC48Jczo0uBxLDiig9gEMztMGV+CTh0tPG9VJrXX+ZdqX5/yrQrwfr9PUzYs4TcCGKLAkMmJHP9rBiAMINKmXYiWck; 24:BaJxZob95guibriehBXVduFhFgk2n3I+eQmOyg4xZwtrKpJp61Ip47MfvIZzvscGwXmecL5uvisqlnsZ6GW/NScTCTYuereNEvF1/D/26t4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737; 7:rqqMynNOJ48SitWzWBAZbpFgpnNDXLUzzEB5D9BAlY6PSPqJehMIN+B+0to2M/96AwXS6OxFaZvq4tDtsOIsbpQARkIr1OE80jtmzYdZvKjWwDHNn9nRYaexGiJz/9mX/ZqzRDQ1KAd5FVci33wDkvXwqiJjOE7MeSMR4TOJnCave0PWWsrPi8DmgZsP4BHzxTFVa9Kj0Ijuqd0qL6NjxkKY4eLA/Eu/FaamkY9BWjkaUVS43oNtD6cLh2fsKP3g+B3FPz12ysTrY5sdPVyw4PPXqLXuE4aOg3x3dV83gr5ny9poKSCbffa6fh+dAHN/KLuWRyFJXLlFOgy39Bh+WN4ZQ5aWJ/ZjfNo6cDFjUm8TcX3U9WrMPVh9BxtorfA35XYfrGQEduL+HZ97kIxd7Bs7b81LLI/tdN4PJjeNLdgWmGALFn9Nzp+En/TDxfxxwn5tBRmmI2YmJJTiFJAjnQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Dec 2016 05:15:25.3889 (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.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0301MB0737 Subject: [dpdk-dev] [PATCH v3 21/33] 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: Thu, 29 Dec 2016 05:15:30 -0000 From: Hemant Agrawal This patch configures a MC-DPNI based DPAA2 PMD network port with a DPBP based buffer pool. Signed-off-by: Hemant Agrawal --- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 10 ++++++ drivers/net/dpaa2/Makefile | 3 ++ drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 57 ++++++++++++++++++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.c | 62 +++++++++++++++++++++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.h | 6 ++++ 5 files changed, 138 insertions(+) diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 660537d..b4f243b 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -50,6 +50,16 @@ #define DPAA2_MBUF_MAX_ACQ_REL 7 #define MAX_BPID 256 +#define DPAA2_MBUF_HW_ANNOTATION 64 +#define DPAA2_FD_PTA_SIZE 64 + +#if (DPAA2_MBUF_HW_ANNOTATION + DPAA2_FD_PTA_SIZE) > RTE_PKTMBUF_HEADROOM +#error "Annotation requirement is more than RTE_PKTMBUF_HEADROOM" +#endif + +/* we will re-use the HEADROOM for annotation in RX */ +#define DPAA2_HW_BUF_RESERVE 0 +#define DPAA2_PACKET_LAYOUT_ALIGN 64 /*changing from 256 */ struct dpaa2_dpio_dev { TAILQ_ENTRY(dpaa2_dpio_dev) next; diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile index 657ee2a..ca51402 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,7 +63,9 @@ 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) += lib/librte_pmd_dpaa2_qbman DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += lib/librte_pmd_fslmcbus +DEPDIRS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += lib/librte_pmd_dpaa2_pool 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 @@ dpaa2_distset_to_dpkg_profile_cfg( } 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 ccd2c2a..ae04cc3 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" @@ -64,6 +65,8 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) 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; @@ -188,6 +191,7 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev, struct dpni_queue cfg; uint8_t options = 0; uint8_t flow_id; + uint32_t bpid; int ret; PMD_INIT_FUNC_TRACE(); @@ -195,6 +199,13 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev, 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, + 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. */ @@ -389,7 +400,9 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev) 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(); @@ -478,6 +491,55 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev) 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 = drivername; 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; /**