From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0056.outbound.protection.outlook.com [104.47.36.56]) by dpdk.org (Postfix) with ESMTP id F1A1C56A1 for ; Sun, 9 Apr 2017 10:09:48 +0200 (CEST) Received: from BN6PR03CA0007.namprd03.prod.outlook.com (10.168.230.145) by BY2PR03MB393.namprd03.prod.outlook.com (10.141.141.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17; Sun, 9 Apr 2017 08:09:45 +0000 Received: from BY2FFO11FD008.protection.gbl (2a01:111:f400:7c0c::128) by BN6PR03CA0007.outlook.office365.com (2603:10b6:404:23::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17 via Frontend Transport; Sun, 9 Apr 2017 08:09:44 +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; 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 BY2FFO11FD008.mail.protection.outlook.com (10.1.14.159) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Sun, 9 Apr 2017 08:09:44 +0000 Received: from DTS-02.ap.freescale.net (DTS-02.ap.freescale.net [10.232.132.223]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v3989Aom015502; Sun, 9 Apr 2017 01:09:41 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Sun, 9 Apr 2017 13:41:10 +0530 Message-ID: <1491725483-6619-10-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1491725483-6619-1-git-send-email-hemant.agrawal@nxp.com> References: <1490362538-20854-1-git-send-email-hemant.agrawal@nxp.com> <1491725483-6619-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131361989844687046; (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)(336005)(39450400003)(39380400002)(39850400002)(39860400002)(39840400002)(39400400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(54906002)(575784001)(86362001)(5890100001)(53936002)(77096006)(4326008)(2950100002)(6666003)(6916009)(47776003)(8656002)(50986999)(76176999)(305945005)(5003940100001)(48376002)(50466002)(356003)(36756003)(2906002)(5660300001)(33646002)(104016004)(2351001)(189998001)(81166006)(8936002)(50226002)(8676002)(85426001)(38730400002)(105606002)(110136004)(106466001)(473944003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB393; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD008; 1:DEG0SNrGXEILz5bB/7ag4K7uynjuCCjdv8w7tKF/N0Qg4SRxztr1XvhDRfJDGEX+I7D8OIfPsEYGcTtJayAa0iPPevP1DhiZ0QEnHHgk++la4JdN8tJGRXMgVxdRHHipBnuC2+qmhdJ4xXhksSf8T1tWV2emkveP5MMQb2sTlN9b9rvwXutYQVGttG816+Gvbb3tQJLEaKR3wllt7pZusY3UCL4MmxlplmD5QdKsVPcRZtO/Fw5LREn8p95hOle0Alsw6QNe8mQCqzzCwznTpJCJjbp9p2nx+pfoQ2nQCuLxfULRqXUF2QNBCPNFkr0zM8PuAmLe4Il+TRprmz7dvB4UZMd0kgNmyZGwxKJTVp2NXlkoj63dxVha+LyjSKPzKWiJmtum7fNMSm4dEydCDIC8ZMTHpSDDI+2nThcB3s2eLiTtc4ByxkOPWR81KgLjbOVTXifg/C4htiGiKurxKydEaLdZWUG4i6mbnzZqChEg8P9O5TFrUXqu1Vy2BPxU8lQQrdrcPVksUjI+2kD5UEnzdSKrRYNxDScZ+xtgLWb3H+FetiL55fOTYxat6lSLXJW/yr7UwqDv6Jz1h/WnOf+aqY8OuYZOLIcUx+3uVP9af5gVytJZiTBWb0SUo45rMRfqYhkB5/Td07WZrxoPDSX6iHh0XiDJZMbjz07xMbs= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 423260af-07d4-499c-58c6-08d47f1fc825 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY2PR03MB393; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393; 3:AlA6IyXGliK5EMv4jJ8IiWov6zqhxl7YS0nIx+EM4nLUsDswFas9vbssvy9e9LRIdXQ1kHpQY/+VSZ0TOUr4MxWgDdZ38GUAclXFRKFcLPsRPK7SRU88ecVhi0NhqOr2ONCSRXeIg62JHrxzRSX3+ccGlR4Gh0EEQg9PRxjGz8+cHmoK7Gjn4yG9NAfYL5HZGz0cA+ssR0ESFrWTagoHJ4ykBCaMFE5K6wdvmF3zSdH4IW6SXSx8u/MOOvuWr/ipsIA4eYQXgvLKnyTiF55qYdZ7zhW2DZteLMH90cgSiKGpsips6cDmANe1+metc+aSi0h5WguKUT7IwdI2oeASXjUkbqHibKq+l66m6XPzd8pXZ6C+UyiPTWWuXkxYKJKo4FBIjB+xp2MatLmlrmtkan4R2U1ND6JpQPIriZz79cK22Pf49PGWMLzNv7imZ5wu; 25:RQfPRteNY2t+z7KUK7ATEQgfSUfkUIzZ2a2R7FKMF1jaC2c1Jon92r38QRkHgapyONDcSZumEc+yRO+IkwxjgFAl2VlHJRhadbsZlvS14qR5tw6oYk1lr3mxp1i4WhtjeoFUwq4v9XTuU6xeHBHBrg+/dHVuRRO5W4XVvGjx/tYi79SqSW9CEl4lojXKoK6e2RiVbr1HHDiX29XvEfm6rzE16a5OqcSSTUz+BsMHsqGM66kChNhGs10Kjt9YihYk/DnZUCvJLR2BSexhTVRFR0c9M3popqxKa2nbZ/1PHCEozkmBDizzaVN2g5xt6G9TTipAwqP/MnVft4l3Khv85xSI4XYjHxR1m5rbFG822RufqMx3Ae8gN87AcegtqCk7vcBj/bBBQpdaLznbGK0IOaiQIC8bBfLpxEGpfEyashSw8ABz3ToKbOwylel5pF6u0iEaQZW/dIvqa9eH7ArU7g== X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393; 31:SXwQZYKenqBgbUD8uDGM7PfLVCXz/Ur36YGKfZrMeiS6BmV5f3KKY9rI5eZMqEI5HyYQ2oXb3JrKeUeB2uNwrG5Lqv9z62LVuQLeTWfbdYuL9FMSxyKnXGJYU6hQCMbyIhWr00TwlCV3JjlEoelq5In0UjjjN3j9Ca4tL7kzwrEbrztl0oeQA29BWJqctuTKanWbNi2N4JOfWzCDRvjWC7YcGV6GELscsmaWtoCwYCdknaZqwtd2krvLd+kWEyabRn0VbJtYkxMQdUJo/aeu+p0qZk6kgewTVdzBPK2Na4s= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(8121501046)(5005006)(13017025)(13015025)(13018025)(13024025)(13023025)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123556025)(201703131430075)(201703131448075)(201703131433075)(201703161259075)(20161123561025)(20161123565025); SRVR:BY2PR03MB393; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR03MB393; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393; 4:wJimX8XN36osvb7zoSqvsGqBzv9gg3mDr/orOeCw/UGnsVtu2eTnqOsFPIkjWl6JhpwSrgpInDSclC5hbBCZhz3IpkDRT3g34xaRC9UJFFsbrnxbciRmdbqvhAzwOqbfAT1oayoUhatFJZZrrJpvekGZgDsgI2/BYA0NA0YGUTIc7lfO+9rq+jaxLBgIJt6BAofDR5tyArzGhnzBALMJakR+Cywy9vNgUNFHEm3wE9eIZ8+GzQyOz6xUaNXFZPSFKrth2h994IOO2B+aRnZJwbd3sEoTKBPtSYVFlscjYDLqTd6W+L5EJomTtbXRRfrCPCtC1TZlz7a8GSg9hSh46qbb5V8S/U6EtZVknjyg+Ukoo5lfb9s814fR+V+E/mde330v3psS90dkJEKtrq4yWoQ/ygOrbSDpJgj7PikF/KXYaof0W9mohDoT1G6wzByYpCh4oDRLb9ooh/h/uiAWwIzCgRUbh6luzDptxCYi2qhq6c5S4pSLYW+v5yPB0ajSf3Q9WpGQRD3byIN9SSAWz5iZn9aUMSiD6JMmZsnm+nIvIk67PY76LycNZe3OB58GsM5/RqBySpvUor4xqh/3W+CmElVblf0FDDHB45uSwQAr8I3m9kthtxTxgpYnRLWGmFVaV6k5UWDXA5B/eBZGwVwcrwwvH1YdPVjMeKqFZth5sSjN/twgwl8C4qbUWjTgjm3HGKqZQsWVvq3rDUUOh1MR7nU6r2dhMqLFMLJOfwWxjOR2Iag5V9+1wRClq8p2XJL/aRoGEstHE7KMNhMF5ETUreuy9L/bApdnXu2A58jBtdmry9BfPynMthibyVsR34/lRVqpJ8poPA9Orou66G1OCkAJoVd1ENkzhNxKAhuvacupTcJVCuWBRFe+85K8lRn3T6rWt4wwn0wrN33NwKewfcRn4KFnpf3ZfkAOrJA= X-Forefront-PRVS: 02723F29C4 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB393; 23:0jBoORkKOrEIO4wT/eOVxNI8/FiQ5CX9kl52K2kDzH?= =?us-ascii?Q?VSTLLZutQ3x/FUg5ZiQZNv0bbCj5Y1RovPnOHwWpZTnzzXaKAWurUAt0z5lS?= =?us-ascii?Q?bo/7/C3bNBl9RxJ2lxzKotRqD482l2Aa7CxUitOWrAAHKKaJNOvYSQFAfR8r?= =?us-ascii?Q?agQmj9h9HzWyGWJeZLUR780NmYoQr2EHKmQInMu6arAQ+lXyWTkO4G+ydBtg?= =?us-ascii?Q?QWgj43tqbOKfDB5/wv0H+0GujxRJOxkFYnKUa9fav4YjV+5+7Zgl42voJYSQ?= =?us-ascii?Q?1mlyOOrmSHbS18i5azLAzTguR5FomreadXAh30wrv2uqCDsQI+4+xeB8u+kp?= =?us-ascii?Q?Ei02eA27iuquNrz/lZNnFOgOYmfrPHqYpxebaiRPWWlYNJ++ocuo3iMeutG7?= =?us-ascii?Q?61F+uh+IMUTpTefXiCkOecJUAQg6c4746LEZ0aKoxnmEQ+BZWxf9ok7MdfjX?= =?us-ascii?Q?b+4R2aDzBsO+0GQNrVcIy+JEq/W1F+Yr9tWf/nOWr7fw51kDaAKTFCfm0Eod?= =?us-ascii?Q?aHbJo1RrQPn59snf0gngvzVQvPeJxbQ9DwPg4uQ0W52ayp0UgO26cwcYgHoy?= =?us-ascii?Q?w0zMyCbFIj04QOSs4ez85pSCH+tzWW6fqxZGF/qliFoMICRkmeiH961d1Ftl?= =?us-ascii?Q?E3wgwt5T4A00eqKpt5MqA2DAZtdGxoztS7S/ps6l98+CW7HCquHkEYcAjJwK?= =?us-ascii?Q?sy9jPg587yUYPR7P5J9kS0/gvxm9Y0c2qI3JDFCOrNwENN1gL9sTFXwxjhiy?= =?us-ascii?Q?4zgfrXRfN4Zd48rPvTpntQ6LFv9G0QchPyDkYa4nUnBTukVOZkoUw4heGOry?= =?us-ascii?Q?rPZKIxM0qZb8VnG9jWP+846GFHCiGQy48KFwwa0IhU8xHtQz83X8fkZpACtQ?= =?us-ascii?Q?w36ZA5oHtSywH1wqkk6MWpU/bnMQF4vBSxTY5WzrH6wEElQhJL9eBj876sA9?= =?us-ascii?Q?BVbOZayZL/NC45QVVTLz6HExFCI5Yuhvw49LClBRjJ4fU09d7GLlEsqXwexc?= =?us-ascii?Q?S0yXmi3zGMIud6WUddT0cq+ea8YgF16Pw3Ce/NQmU1phnFhL4zjSzFbOehkt?= =?us-ascii?Q?+pce/gNqRhN4JUjRvah50ZS1gs++CnGg5DVobCqqb7OIPxy0O7OVF0Wh1Ajh?= =?us-ascii?Q?iQhmPuT2v126eZuf9o+e7zkJwyQvXP0vfiTWdQaGhbmrV3vQAi81b7RafNL2?= =?us-ascii?Q?zXAEIEqraU/SbqaK252ZQ6l/L68mScKr+Wr0gJwH56Ngk1c77QURmS3sW2sD?= =?us-ascii?Q?SacBWe58WPW7nTsukjRtHnJt4vv8Db3ZJDymZhXXffhLGTlWYbAaIqoRTRUg?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393; 6:0ZHt9uq7tizJ2WJshnDS5fCB1G6wq5RJwpXO2LTwW8xBkHgCKWjzs0abAGsbYTIHrQpa5gRwoyswL9B07uWweIUI0t2YbxWHIGztfrilsxSPWUCkaM/MJksyNrjYpBiKgVivk8LBVct38Gc1jQ3WIpVKk86OYbR5LiGnyy3RG61YAkVLC+Cpqdc4BxpeVLCb4XkA9MpkgePD3SAFHC77QQ1hwXY+Vz2cHP3M8DXimLkuYVDSEmqiiAXVtiDyKBYriJ0sEwXTyDapZmMVj5f6WLVvAKIYHqtbFrQaruBJjWRdx2ltIf9P9u0cpO8PRRnuaeb7FcuxdyEcHu1nHnyY8EC1LctWiOZMcNzRLNqkNco/v5Aoag8h7wBtJH/xGwC1y3wQ8Tu2UKtfWhdNP/OtRxn20kekpFkd1QV/VezgCw2+K7UMsax5RTGKSp2akpAvzeDJCyOKzFQMQn/29BhSmg==; 5:AOmrtjLVX9w/m5RYEJV0iteWI4Cvy6jWMHsUdp7GP2xRyeSfQeIcH0XCiUDThOQ4HQlW6KBUfRyn1cBgCVOTLbvat7eRWWewdlS0DbIL3GEk9CN1zMR8BLdaufdzKKCTiVaau9HY0C3TkTmqXYB9R9hz6yIcGsqbCuJYWS+XhWsl22DUcVT4zC+vSY6sIcBu; 24:4WCfoPem9bMOd+zXcQ6eOKlLdMyMgj/bNZB5evNo7/vGEvMtSKyhC4zVL8XiKeXneZIE0Vf4my+fSDpWO72e+uoUhi42579MrhvGjGnSUQ0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393; 7:Snha3DBkXYGS10JrG9v0ipinfrAgiMoXxRcV0dEXm8OBLQLtLkYoIKM91GVnl/60xQuYD85t261pQV6zmn4qACu9flRCqDaKEATEdG9fHgPyUh37V/QwcO4MQac+ZtEXo3glCqm2MyuUImWUun4x4xEvKJPgwQzPbOPhavRQXcEsOlI0pbDTz69pzt07vekByIqkH+a64fu0dsNLVNBkQ9cWm0G8IGAlu6iY5plp+ZL6rT3/TLGG6Gc70YmLXjnW5hYFk1PTp6nLNRBobWCjellfbrLFB0fIKujuLIWSKcMc8XI8BZnP3Zptn8YRbTUuvPSUDNnGEq4Lhs8u9A64RQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2017 08:09:44.2815 (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: BY2PR03MB393 Subject: [dpdk-dev] [PATCH v11 09/22] 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, 09 Apr 2017 08:09:49 -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 | 2 ++ 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, 127 insertions(+) diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile index 7f88e9b..1f66c0b 100644 --- a/drivers/net/dpaa2/Makefile +++ b/drivers/net/dpaa2/Makefile @@ -50,6 +50,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/qbman/include CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/mc CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/portal +CFLAGS += -I$(RTE_SDK)/drivers/mempool/dpaa2 CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal # versioning export map @@ -63,5 +64,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += dpaa2_ethdev.c SRCS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += mc/dpni.c LDLIBS += -lrte_bus_fslmc +LDLIBS += -lrte_mempool_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 @@ 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 6462e0b..e1bdeef 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 @@ 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; @@ -187,6 +190,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(); @@ -194,6 +198,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, + 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 @@ 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(); @@ -475,6 +488,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 = 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; /**