From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0089.outbound.protection.outlook.com [104.47.41.89]) by dpdk.org (Postfix) with ESMTP id CF9EEFA3A for ; Sun, 4 Dec 2016 13:44:36 +0100 (CET) Received: from BN3PR0301CA0072.namprd03.prod.outlook.com (10.160.152.168) by CY1PR0301MB0746.namprd03.prod.outlook.com (10.160.159.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.734.8; Sun, 4 Dec 2016 12:44:35 +0000 Received: from BL2FFO11FD022.protection.gbl (2a01:111:f400:7c09::139) by BN3PR0301CA0072.outlook.office365.com (2a01:111:e400:401e::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9 via Frontend Transport; Sun, 4 Dec 2016 12:44:35 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) 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.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 BL2FFO11FD022.mail.protection.outlook.com (10.173.161.101) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.734.4 via Frontend Transport; Sun, 4 Dec 2016 12:44:34 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:716; Count:10 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uB4ChXbQ032240; Sun, 4 Dec 2016 05:44:32 -0700 From: Hemant Agrawal To: CC: , , , Hemant Agrawal Date: Sun, 4 Dec 2016 23:47:18 +0530 Message-ID: <1480875447-23680-24-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> References: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> X-IncomingHeaderCount: 10 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131253290748811237; (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)(2980300002)(1109001)(1110001)(339900001)(336004)(199003)(189002)(104016004)(8676002)(97736004)(626004)(50986999)(76176999)(81166006)(81156014)(110136003)(2950100002)(6666003)(6916009)(5660300001)(68736007)(189998001)(47776003)(106466001)(36756003)(2351001)(39450400002)(356003)(77096006)(8666005)(305945005)(5003940100001)(2906002)(7846002)(38730400001)(8936002)(50226002)(85426001)(92566002)(39380400001)(39410400001)(39400400001)(33646002)(105606002)(50466002)(86362001)(48376002)(4326007)(5890100001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0746; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD022; 1:lVdqM8Dz5I/M9NVnuhToNJo2ZVQBEqna54bx4qVeSl7qYbCw5C5GJsbcTO4ks/+CC0+rPZ/v/zaEIiHoJPAkIThB1fPQ4AspeN5pppt4FAirI3jxoT1rJC8L0vaRrpRcwYXp1bLfIfUxl/YzZccMIdj/uVo2B4V6gpqlXy92TdYg1xDK80TcMS/g/driu/4ILOdzYZnzppXrneTduIiIYxg9ktlS6C0TOIACOLAqejjyGAXj272TCAuHDktafMuT5JLllVy/YxNEOVhgjep/kAYrw66hdkqAS2+RNjD4Lql6wcr0XEhVBYh+L+9TWNl3BE0Yr0+S11PbPyHRjGKSEplDK88xmUuqu6neOWA/wlQDIyo/CItzSKzOssi7Otj/aCbpFo/ur55nI4O24XOWrW938nfclNVIm9rJ70UE163RjNK0umqUq4QYSorFuVELPHo1Xa+coyJEd51NwJ9XWUf86+U6NcDfjUNnT/HSURaEpZePOblh8wP/x98CZPAkCpDZGtHzV5tZkzxYCT9WiQ5ckiJVIiwuInba+FFumO3ikus6yV0UymZKUPCWDuJdnNrZJrCDlsJbjuUdulsf6jWnWxLlw2WAzW/1xPJV+GcNv/pY4NXZM2g0sFhzQtw02XAGxbmvqqyhzRBlEecKufgaQWhQzLsR79Ataw7oAA2A5stQUUZEUa8h30LRY2yvJqvKZ2bd25f8Ipw1UzyCGyJe9X2IDq+rfQ1T2r6hdcTlyD9rCTn16LDw15cf51d0w8mOwnP0rE5QyLmkcCzYmQ== MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 2:XRMWdKBg68RykI5xEXcjKkeVpYzn+cTxtD42emQDarWQNqozr7xNgrfTS0rvcUoz2akT6TSgFpMXWypc9zN5UubIdBAL6RXe5d6JIvYDx/gEaAlbqY67tw3G3wbcBwLa5/nfxWwQccp8qZT/vtz61wcxHUjW/If/2cQWTiENriI=; 3:AAzV5gUx6+qndio0hcaGBKBIscwGKCjU+tW8VUpUqhyhzG0DubzhAYFPwle7WSQN7di6pM6ZZBCtm5CFD2ark4ExncP7a0/KBIzwYu8FRJ/+eZwcrmqUDk8wxnIRXphsj6AqHiP/jTc17+nE/OBmQhCdEVBzcH4LmqMB0XHDFvRjJ/wT/BXkzk86abX0gXJliu+DCEVCcSw85LK14GTbWInF+hFzY+XFh3m1arJ25WFNE0GBUyNKcVm2GWtc1BtlJnHvPPOu25SKbfxHYBqXwg==; 25:ehw3AIuZsg0lEoTX3WPYUo0DpUBhTztxn2LePH9mQmTh8r+ae2pMzsMoWIaIAn42xm/rBvMgzdqkdJqFak5/QgQxSitfGAi3ePjleovCVHZEF5Sww7O+4mC4ueE5+15sLV50BrbZHYhDRWmx1N4jRcGKJq6S5lx/MRFWIRsPN1l6gx2NtKdCpNH+OI0tCN62ZuLu2rrivLzn0rlqY61TgsMJ4FAJaWmJcpU+9waHrnOC0WMYCV0xAsYDbFV3Agvc1hIBFMfxQoqBQ+8Xt4yEj0o7KZc2k3Bh1Bf2U+KGx+lN5yRDrLJffrcz4uOOCU+XnQh5Ym/Sgg/2CzXca0sAlIPWTbNSwQWRdbBOPhtZBWtC1dRpawTdttGHYKnxY5GU1k/qsEMcd7CaSota4pdLMAWi+0rVaAc8pl4pVhYVd65b8v1qBfiWWaPZhFyBWR+hx+zSVVxBXWwdpGS+J2ex3Q== X-MS-Office365-Filtering-Correlation-Id: 2ba2f886-b590-4622-17e5-08d41c434d26 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0301MB0746; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 31:jbnxOeWUw/8mf0b9QtRncCgR50Q/h0zfewG2VSwnzPTw6ozEV5hqr6T3b727Q8VD0lGeDxmDN6yehGTCZPezNcVvjdaahGoGC3Mjtpyhrhr8CuwOcv0FPF8k8qtSV+ipaBnVhmzcd0IBsB+D32FSN0KB+ZwsUJNwM9jHG4Pi/XeXNqozlEMfa7KxCTLhWBBY8AdLrKMsdLlpt5DOYhKI7WWGXjOTR8mKEcS4Bg5C7fo3PsM+vuOCnfizIdNobtWzTBQD0YNb0heluY3WKpXfnA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13023025)(13024025)(13015025)(13017025)(13018025)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6096035)(20161123559025)(20161123556025)(20161123563025)(20161123561025)(20161123565025); SRVR:CY1PR0301MB0746; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB0746; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 4:3gE+2G7PZU5+OsnY2aMHHxEJqFjrI2HLpin1Man2SFLxDlq3CFh7U7tkxDpRXGFCsXEgHMnf1YiRTA9OhibwS9MHmtdO5P1w+KOQZpTdf5L9SDGPh8n+nLHLDD4pYB2eomW8mMOzlJU4Jo8jAYOe1SrywBtOjKLHGO2PiNESYRU0ruGl94AM8hp+0f+zit6h3rCgecjEqHZEkGctyKnemBWRCd/pRiCr+iqp5ZOW2c+QRGxuIzpG81WGTt/A7F42tGvDWHvuRIBf4IP3TW/n0AO3ynEoX5Aw7khkcs/Th8eTN9NkVdgSZsRCX1yadwsXRtWIjdE8MladwU1YsihPn5PmquTsMhvPw5lB0QeKHKmLBIspEqVyh1tErwxowpHE7ZLa7scZlYp6pb+fLlYy7xuzLMbd8YmCIDRdcv+n8H4ajTYfw2Ghv6V9nnZQfkAYic90e8DKbEcWHlI9mc5g2q/AV2kGXahYsJcwiy4ql7+zqroWgG77J4amgzBXuq/dRW4Y/EaG+l/HqakfMxkknC3X/Q/LOEtFFxFj3bs+Zv4fG7dxLoJlHdkaYTEdyCuOy0KgsklMGanUjjpWzz/BmrxgPK7CAt12GBI1NA/6mRzO0wBPdX3SwVrgT34PGm7++k/0RcT2g1gTHzcTHzorZIpmKeoGTGfdZGJkok/lfV81d48uhjvZClFHHKnVmhdCRLtg07qC5nAkUIZdH1L+GTEu2qOTGKFkBTSHnW+IfBDkSHZUn+3ovPZSG1j8q8My X-Forefront-PRVS: 014617085B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0746; 23:+Wg6sL1Z4LDXmKBrYiAEyl6OKEJRg85OdEN+KlI?= =?us-ascii?Q?7T+BzQYgsl9VCVEUfNACgTVxW18xumoUjuMzemKo6zE6Zh1/joqHC76AICeq?= =?us-ascii?Q?FMiILG8yse0WaOelM9H4CMr9g1Or3TcbrlhGw3kXVp7TDNbq+nOf6QvR7p1I?= =?us-ascii?Q?Mox6RE6+uwi1dDt454Ji21ybMm1Iu6gnF38jKAjFKdgN6y2t7Tx0+NU1dgft?= =?us-ascii?Q?ZQaQpR/32cfJfwlATshAhZVfCknTvJHNQ0yTvivc2K8suYzyWxqLuEcrNVla?= =?us-ascii?Q?GthVwvxY8WsxpAbTxDkzs6IIU2CEs5BfShom2nfeb5BsR6cN3EeBC7343wP4?= =?us-ascii?Q?Cp/PwGlgrARqGNDXg2JmbPmzIHEsI0VLAW96fEOAHnjPmdcgkacoAWiNST7m?= =?us-ascii?Q?b/oy/WGB1jm3iXNqV5Yi9RRWL5i0ntK4z1AgUarDHTP4EaXtECctRL0yrM5l?= =?us-ascii?Q?D1KbtWT/nP5rql42KBEMALYJwIa9nWMpWhx9rnZqFyEscJP8332sOHWeHbqo?= =?us-ascii?Q?dwAR5dTvTdgfrJmM4WQ5rzRurI8AwE16RY5oRnU1PWndKmMpI27bD6k/GeXw?= =?us-ascii?Q?vZI3Cf4ijUbE6C5hHuwP1YgXHOpwjEj2a92ueQw0be5r/kPU9DpF22smURrN?= =?us-ascii?Q?Qh9jccc9HvDS9PxATvPNXnQISZQt4aKaY8TaMKsh/BVKeDxz7bHDPTP/kC/3?= =?us-ascii?Q?FNAd336xbPMD4BSQK0v8Wh3kNG1skaS+VlJNiFLAKazWuS5R3BZhnu+cjhct?= =?us-ascii?Q?S0q57vNL3aXAVaM3Wb8Ua/hx8m6h48euauIuSDk2FW+ZfEalhHya5ZaiyQCy?= =?us-ascii?Q?K5/B6ZVglDIHpTpQ0J0vbMpHXYBDHgaryr3fdKXr/baGuwrFRzW35VrbSfd6?= =?us-ascii?Q?1VkhOn6hEsfbYfoTKlR4llEtkyzRVeKHQlHNQB79LGA5VdDaweomEQedZaLl?= =?us-ascii?Q?MV3o0Z1Z+Kb4p4TNPCg5fUQzGf4PIhWn97tYM9USzm5WXTlfz3XmF4V0GKK/?= =?us-ascii?Q?7UjuokzT8WErznGbBKLr1YFWuFlnydufh5eSJfi770AhURmMPe7XlmvY7VmH?= =?us-ascii?Q?+se/JFu3WP3UisU3cEEt//4BxNYVzZDU2MZwpC8wxwtY5LKEpGG1wTcN4j2C?= =?us-ascii?Q?7sEAAzn1Cqi4f55HX8UMADGYRLIGbApuPshb3bjR5mU7glzLuoQyavJ/ijDc?= =?us-ascii?Q?0YophAGJfy3wlNrBs9eazBolF2ZDKLninS4RRL0Oem5RwZTjaOuFT2WF492i?= =?us-ascii?Q?fBeUpai+2MniLi75oYZM=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 6:xDCFZte8ETvZQkZZp67HoyejNmuDR59Zcnsp2rPwvoTgb/rJArjPAWxLHmL1TdsEhCV9zwAJrUu/NAp13+IB8Uy3wjPirRIS1ZcFOR5gZKU/ZU4Fb16futVSHI7a6dmA4LCTV3vyxaRsv9EzXrZ/JrfJKmuJMhKEiLsjQMV4qsC9ixS5nJhfMmwTmAo/VVBUrXBU3YCMDAloTnTWN0bWeTpRF/t7nKu5Pka/KhdLrBNAlPYH84B6/9y4ndu/TawWTFgSKmFCt4TxwsfEDKBjmtR6g+tsbyIH9GswXdf0GntrZ8Td6DzqolqFBSmfaYYao2I42TisYpCjr/cXJrMJ6Q==; 5:sxpXfiD1rAGdFkA/Zr45Q4NMntdChLyjyjCyr3jVJDghTHhrFpevYXUJAB0oq5xkqluENQlte7d60Za807qvReDwx81hK5d9acuoDg12eLetjE0g+6gyZ3oN0k7JA5DY3TreCX0R2zXkgKlCZ08qR9nYgzceWax9hKe0JdAODOKnnzxL2Pzr1sirlunHWqQq; 24:AL3uC32HDIQMIJI9JPYT+JWtRCVnPOc1daI75OoNZ3W+jScanZnS8yTOdwI4G8dbEa1+9tZgd7KGcymi/NR420VJ68oEcor+PZ09BgSnCA4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 7:FrtYp+Dvhrush9YgWg1L4nOy20QsOLKbDre3/tjWc9lQDMTpkL00NVLSoBBQwaGA9G46F9gBdWnNu4rwuJ+gGSYsCt75f3QhT0oUOigRLWYt9/b4kGJcZsZrrgFeQ5Af4dRVjw6mzpdeG2+Y3KZvhmkcca2DJ5l/GWU5pX4xVcd8FPAxHkKoup2p2+ku5tPVK7tbzX4yrIF0rRnaT9/xuPKgKER4XvwLHPZ7qX/q1a5d5rsTGSTALVebVk9ZHF/FmYnDxC3+6nOK1SLmbcpx/lnfrzNE141IM7eEJbn5+HIGXXaxcHFPUg5XgAvXDlYfGc3NnthgC1EBGhkN5TmKTiKH4mF+X0Tzfw5qIlliKk0= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Dec 2016 12:44:34.7095 (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: CY1PR0301MB0746 Subject: [dpdk-dev] [PATCH 23/32] 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: Sun, 04 Dec 2016 12:44:37 -0000 Signed-off-by: Hemant Agrawal --- drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 56 +++++++++++++++++++++++++++++ drivers/net/dpaa2/base/dpaa2_hw_dpni.h | 6 ++++ drivers/net/dpaa2/base/dpaa2_hw_pvt.h | 10 ++++++ drivers/net/dpaa2/dpaa2_ethdev.c | 65 ++++++++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c index b26d5a7..0271cd2 100644 --- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c +++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c @@ -48,6 +48,7 @@ #include #include +#include static void dpaa2_distset_to_dpkg_profile_cfg( @@ -285,3 +286,58 @@ 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/base/dpaa2_hw_dpni.h b/drivers/net/dpaa2/base/dpaa2_hw_dpni.h index 70d52b6..6d97bc9 100644 --- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.h +++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.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 @@ -63,6 +66,7 @@ struct dpaa2_dev_priv { void *rx_vq[MAX_RX_QUEUES]; void *tx_vq[MAX_TX_QUEUES]; + struct dpaa2_bp_list *bp_list; /** 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/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 65c3384..9080e56 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -46,8 +46,12 @@ #include #include +/* DPAA2 Base interface files */ #include + +#include #include + /* DPDK Interfaces */ #include @@ -65,6 +69,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; dev_info->speed_capa = ETH_LINK_SPEED_1G | @@ -188,6 +194,7 @@ struct dpni_queue cfg; uint8_t options = 0; uint8_t flow_id; + uint32_t bpid; int ret; PMD_INIT_FUNC_TRACE(); @@ -195,6 +202,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, + 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 +403,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(); @@ -478,6 +494,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; return 0; } -- 1.9.1