From patchwork Thu Nov 17 08:33:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 119928 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1CF4BA00C2; Thu, 17 Nov 2022 09:33:42 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11A3442D13; Thu, 17 Nov 2022 09:33:42 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2119.outbound.protection.outlook.com [40.107.243.119]) by mails.dpdk.org (Postfix) with ESMTP id 0594B42C4D; Thu, 17 Nov 2022 09:33:41 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YN0HUu8B8NrpwvfGqeEDv2EWx9xQIJA0NpNJoMH8plL6r9X0sHGooVTq43ghciPBnmZDTr5tX6vBC8zthjYEAchy3/4LrgkxgVmT5/qQFgx+t2KWpyH6tBiBRMu8qXiko9yWxsZ7kcCaS5oloJdoYPdCaM4DSsFlcZ0cQ4BuM5vt2rY6ZFjMITVehe6jeUcFA8yl0pSf8BNA4pOtYhRWbFdXjFxPXyL3hwEO3nSIyPJ0wb0iSZ7jabr3m1kLzFbTMU+pEiTI7cRd814znC/ODRlY/MJRXd1cDOuVGzIKwEAfzc4qXXn0044c0nFWSCaML7Fw1TqyFP4a7YTmTHCZlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wrnS7vd6tHfV6T++mPQy0xSigTYPbnLTAGJhd3rvayk=; b=Mt0fYpS6uUU3/0Z8uKL32grtv5Os3g3NEOP0aWCHAPB4fk4PtLUak3eI558ZK4/PvW23qHH6JPVnJtaBkgRnbba3m/f9rbKHJOAHFOl/G6y8Wgxy1YvVIMVlSam0CyMCBAITs9aB/De1ubeJUXme1H6Ats+t2rJP+UxByRB0We7YmYlfUVfO3Togbofi7FPt9GwYHOvppXkGv7oi+GpnsnVe7914K1xIhEfPpvoaEzA5GQBnB9BqotkhHF4zjGvfOw1RfdmadjPO2nQfgBypyo10sunWcoW3NYjKhXyoos4CxmbAUZX1Dbahw5hHouaZHsFIMJHxj3EA+gSF3JyS1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wrnS7vd6tHfV6T++mPQy0xSigTYPbnLTAGJhd3rvayk=; b=f0e4TB4ykEkAMhjdOFgnrHTZBjuqkswnb9Dlv5uu0naCPNhVt4PP5dWc6e0KCVyS2Ws7eC7k/4Rd6Dgp6iqoet4InOjycH5uJU/YnV0aoPLBiJOkuPNOGKmDAIqkA+Nl9RhF6UUzu08h48WxbaPbdGR6Woefp5PDhlbdGec5dpE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by DS7PR13MB4687.namprd13.prod.outlook.com (2603:10b6:5:3a5::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.17; Thu, 17 Nov 2022 08:33:37 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b%4]) with mapi id 15.20.5813.018; Thu, 17 Nov 2022 08:33:36 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Long Wu , jin.liu@corigine.com, stable@dpdk.org, Chaoyong He Subject: [PATCH] net/nfp: fix issue of data len exceeds descriptor limitation Date: Thu, 17 Nov 2022 16:33:20 +0800 Message-Id: <20221117083320.21815-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.29.3 X-ClientProxiedBy: SI2PR02CA0013.apcprd02.prod.outlook.com (2603:1096:4:194::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DS7PR13MB4687:EE_ X-MS-Office365-Filtering-Correlation-Id: 3234b4a7-a834-402f-1e10-08dac8766bbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TyM/YddwIPhgWAQX3b+adEK+tl4syq6JjrNX9/dfuYg7w/edILRgmabQXR+0MAWD4cBJMtG/6lejrspclMzk0QV+1kP/uvnK2Dg2k5wRpHY6pkqAEH4aX7RQTgIXhvhV7fmmtPhC6VE/0BhgjyH0ztpJz9OmPUx1/XGHkEG+GvSevE5ZylB83sYQBu2SxoHSVqdsTjiu1JouUdn7CDUM9BAVgnYiz2d1ZBjHo+vJzUGtVlU8iuP9jkxCV5kwy2sIFhkSbEp6I0KqQiZz9kCTREhcMWk+ZWdOCvI0o2nX5reO2vvFwW8gV+IZFpjinJSlq1FoJMgelvCrOikLHeC3PQUFou2Wi4zAXzQOZ494ZuWSeMTUeAVcT3FDprJHIGK4dvTLazozF0oxx6zqBPl3edW2fdHXXFnByNe4jSqowxZo1XXhTprrOkdSFtAlGl6RFwhz27lNbkfRn2boVo1v7G6ljt2T/qEc1e//UDcnK5KX445ut3Q6t+ARle6nJAHcTBpijQDfXJvGdAUq0bNVPJCtOUMH3vBPTtTHDHB/vykB26mNo494X66JzaudhUQg2HNVjUvv+RGk0JuJfvwfLSv6sVf0QYbdmJH5i3OJjXyBsbTxq1Dq241dXZZjBGo++KKxOB+Ius01MQXv8FQCYJfbCejvBc0e9//tva8Jrg0IxgeHXMMgfKgvfxDhtOQxeeRZ/j5S4Loageq3ZUPLABz0ozHDjOXrrOLUYQfTOSk= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(396003)(376002)(136003)(39840400004)(346002)(366004)(451199015)(83380400001)(1076003)(186003)(6512007)(478600001)(2616005)(6486002)(66574015)(52116002)(36756003)(6916009)(54906003)(26005)(316002)(86362001)(6506007)(107886003)(38100700002)(38350700002)(6666004)(44832011)(66946007)(2906002)(8676002)(4326008)(41300700001)(450100002)(66556008)(66476007)(5660300002)(8936002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?fitJSEeENWn7ykbzJuIWhEJqtlrY?= =?utf-8?q?BifbGGECtrhSnmibL4IqyqC1ub1bEmxTCfqB4fkhRj1QXXGnnU2Btk6jJUVNiNi1e?= =?utf-8?q?nlNvXa/7oH/GXKCmq3UyIrfh7IGgHWubn+SeJdWUG6E2qoQMJIFivmxJf2kMMZFb/?= =?utf-8?q?BsotQnFndqTDh+7scVolNv5RKhWobWCoRCfgPRluaII1H89wsTAbjjX+4hskIXDd2?= =?utf-8?q?uGx+g2Uge4UwFfaBVhoOeUReA5dfMGf/BrKmauYIXHW8EAIXBP2oT36f10Yby2b4r?= =?utf-8?q?JxmV714fn3305QNy6NtiLq3fr5H27Ohp6DnGDc3s1I2hnUSyzgrlRIo2fH6V84vwS?= =?utf-8?q?m/PhCSk/hz0PawbYwvoN67W1J1v3N2x8NtmZxNe/cKk7lAkn/2F1bHyjzXRagQphS?= =?utf-8?q?OuQZTPf+KtTzrZGrkRcCzLmVGFnM1oX0loCz7DwaPtCtCY8GNV8QAeFxkVUuaw+ja?= =?utf-8?q?zymtS6V+BcT+0lk7qjD7dE2AEpa8QWtACGDyYCYrVLVcfoIeJ0VzztITkT8pFSxI5?= =?utf-8?q?Gkr2LvRmsSRuymXZy+8IlWYSHsdQl5Q3hEKrJKqOVFpAwCScHgw63v/mTeC5kvLVP?= =?utf-8?q?nBi7HV42C5JoN+LTD6uadAwvo/+ljw0X/rd42nd65fK5lZnAqggDju1Dgqv3jjv/a?= =?utf-8?q?5GTvfRntupbvQ4JlRBMukkNux0RWt8x/zH5nZVeKseGPLw7S1QN3cYHUygkCG6dKM?= =?utf-8?q?PgB1rS9OD63tLL7KfcBTHPlgGUhuBsWiW1nWYNx5oqRIHElVc1ypIlwbwrLmA6pMB?= =?utf-8?q?mDs/nf+nSZecfc83ppJtHj9XHmjWJ5lMMqz6CR6aG23XNhU78ytcBYlhaj3ajGat/?= =?utf-8?q?NevRaEhPy5y4UKU8flcdHYV5gyII/fcI3YykmOHzT5zUOVH4U3AxRXiwBy6n3Sz0f?= =?utf-8?q?5iw7BjP3dmkCQJja0bzeOzi6gSC/xntjRHGqPE3sXYTjtNFtb4AskyIkqkOxHQbCw?= =?utf-8?q?F9QEkh/bMPw1hclkkz7UOc1lVTrcCLTriQb76T1XJ7I+1M4LgDUzgzrSpuHBUs1Rb?= =?utf-8?q?YKDc82cRBiq5RAaumdcNAH2AC7U94Oggv3Em0aIsU2RM5tUUxUs8J/SiyUezHfilw?= =?utf-8?q?T4w5/D1vPz7T7ZJ3A6OnanWExrpzorIxsRGKeGDWN/cqPyeObN7fLqpc7hzJIDaze?= =?utf-8?q?NIsgYWtoM2s8jTEXZscthOj1jw+h+XMZ9hqo0TKjhjnlDpvL9okC/prQfg0iBCzWc?= =?utf-8?q?2GT8HPEqsgmm3aN7afC+Wi8uK7CRsyc9ba03s/XqOPNqQo4wggo1zki7Kul2y55dG?= =?utf-8?q?09hfy/XwOHImqUXqCnnRo28y9Miw3ju2rBUT+h0pLuPgQyrO4S7lA/7s39k9jb4S+?= =?utf-8?q?MPMB4OE816NuaZbRqLoARwdi55zYyJ+b4DLrJVAz0kwPnwaPN+ls3EYSlymO7mrGV?= =?utf-8?q?y9ENwPbo8CCAIRQoUyRNiMEw7nUwhuIYHtilISYvoo+VI8mfg6f4TDZsIFZIkfb3G?= =?utf-8?q?uHmR3qzcWFFBcCmznVoQIeuCepVr9m9MDnxN/zCkIEKy7kk9YXF4MRNJOZ/Qz/+v/?= =?utf-8?q?UdLdZzP0BugU9ZHlDU2TSnL5OntWEItTtQ=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3234b4a7-a834-402f-1e10-08dac8766bbe X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2022 08:33:36.7538 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QNoROUqXT8EgYEI2ztCcpWAiDHmG/LP0PMm90cUtnyCNHIR9SID7QaN0wHBWECoAXmy7fJl6tfwU2qFKGZwG665lNU9SIns5uNXDN69rRjg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR13MB4687 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Long Wu If dma_len is larger than "NFDK_DESC_TX_DMA_LEN_HEAD", the value of dma_len bitwise and NFDK_DESC_TX_DMA_LEN_HEAD maybe less than packet head length. Fill maximum dma_len in first tx descriptor to make sure the whole head is included in the first descriptor. In addition, add some explanation for NFDK code more readable. Fixes: c73dced48c8c ("net/nfp: add NFDk Tx") Cc: jin.liu@corigine.com Cc: stable@dpdk.org Signed-off-by: Long Wu Reviewed-by: Niklas Söderlund Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_rxtx.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index b8c874d315..ed88d740fa 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -1064,6 +1064,7 @@ nfp_net_nfdk_tx_maybe_close_block(struct nfp_net_txq *txq, struct rte_mbuf *pkt) if (unlikely(n_descs > NFDK_TX_DESC_GATHER_MAX)) return -EINVAL; + /* Under count by 1 (don't count meta) for the round down to work out */ n_descs += !!(pkt->ol_flags & RTE_MBUF_F_TX_TCP_SEG); if (round_down(txq->wr_p, NFDK_TX_DESC_BLOCK_CNT) != @@ -1180,6 +1181,7 @@ nfp_net_nfdk_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk /* Sending packets */ while ((npkts < nb_pkts) && free_descs) { uint32_t type, dma_len, dlen_type, tmp_dlen; + uint32_t tmp_hlen; int nop_descs, used_descs; pkt = *(tx_pkts + npkts); @@ -1218,8 +1220,23 @@ nfp_net_nfdk_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk } else { type = NFDK_DESC_TX_TYPE_GATHER; } + + /* Implicitly truncates to chunk in below logic */ dma_len -= 1; - dlen_type = (NFDK_DESC_TX_DMA_LEN_HEAD & dma_len) | + + /* + * We will do our best to pass as much data as we can in descriptor + * and we need to make sure the first descriptor includes whole + * head since there is limitation in firmware side. Sometimes the + * value of dma_len bitwise and NFDK_DESC_TX_DMA_LEN_HEAD will less + * than packet head len. + */ + if (dma_len > NFDK_DESC_TX_DMA_LEN_HEAD) + tmp_hlen = NFDK_DESC_TX_DMA_LEN_HEAD; + else + tmp_hlen = dma_len; + + dlen_type = (NFDK_DESC_TX_DMA_LEN_HEAD & tmp_hlen) | (NFDK_DESC_TX_TYPE_HEAD & (type << 12)); ktxds->dma_len_type = rte_cpu_to_le_16(dlen_type); dma_addr = rte_mbuf_data_iova(pkt); @@ -1229,10 +1246,18 @@ nfp_net_nfdk_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk ktxds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff); ktxds++; + /* + * Preserve the original dlen_type, this way below the EOP logic + * can use dlen_type. + */ tmp_dlen = dlen_type & NFDK_DESC_TX_DMA_LEN_HEAD; dma_len -= tmp_dlen; dma_addr += tmp_dlen + 1; + /* + * The rest of the data (if any) will be in larger dma descritors + * and is handled with the dma_len loop. + */ while (pkt) { if (*lmbuf) rte_pktmbuf_free_seg(*lmbuf);