From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 03889A00C4 for ; Thu, 17 Nov 2022 09:33:43 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F334D42D24; 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 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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?B?Zml0SlNFZUVOV243eWtiekp1SVdoRUpxdGxyWUJpZmJHR0VDdHJoU25taWJM?= =?utf-8?B?NElxeXFDMXViMWJFbXhUQ2ZxQjRma2hSajFRWFhHbm5VMkJ0azZqSlVWTmlO?= =?utf-8?B?aTFlbmxOdlhhLzdvSC9HWEtDbXEzVXlJcmZoN0lHZ0hXdWJuK1NlSmRXVUc2?= =?utf-8?B?RTJxb1FNSklGaXZteEpmMmtNTVpGYi9Cc290UW5GbmRxVERoKzdzY1ZvbE52?= =?utf-8?B?NVJLaFdvYldDb1JDZmdQUmx1YUlJMUg4OXdzVEFiampYKzRoc2tJWERkMnVH?= =?utf-8?B?eCtnMlVnZTRVd0ZmYUJWaG9PZVVSZUE1ZGZNR2YvQnJLbWF1WUlYSFc4RUFJ?= =?utf-8?B?WEJQMm9UMzZmMTBZYnkyYjRySnhtVjcxNGZuMzMwNVFOeTZOdGlMcTNmcjVI?= =?utf-8?B?MjdPaHA2RG5HRGMzczFJMmhuVVN5emdybFJJbzJmSDZWODR2d1NtL1BoQ1Nr?= =?utf-8?B?L2h6MFBhd2JZd3ZvTjY3VzFKMXYzTjJ4OE50bVp4TmUvY0trN2xBa24vMkYx?= =?utf-8?B?Ykh5anpYUmFnUXBoU091UVpUUGYrS3RUenJaR3JrUmNDekxtVkdGbk0xb1gw?= =?utf-8?B?bG9DejdEd2FQdEN0Q1k4R05WOFFBZUZ4a1ZVdWF3K2phenltdFM2VitCY1Qr?= =?utf-8?B?MGxrN3FqRDdkRTJBRXBhOFFXdEFDR0R5WUNZclZMVmNmb0llSjBWenp0SVRr?= =?utf-8?B?VDhwRlN4STVHa3IyTHZSbXNTUnV5bVhaeSs4SWxXWVNIc2RRbDVRM2hFS3JK?= =?utf-8?B?S3FPVkZwQXdDU2NIZ3c2M3YvbVRlQzVrdkxWUG5CaTdIVjQyQzVKb04rTFRE?= =?utf-8?B?NnVhZEF3dm8vK2xqdzBYL3JkNDJuZDY1Zks1bFpuQXFnZ0RqdTFEZ3F2M2pq?= =?utf-8?B?di9hNUdUdmZSbnR1cGJ2UTRKbFJCTXVra051eDBSV3Q4eC96SDVuWlZlS3Nl?= =?utf-8?B?R1BMdzdTMVFOM2NZSFV5Z2tDRzZkS01QZ0IxclM5T0Q2M3RMTDdLZmNCVEhQ?= =?utf-8?B?bGdHVWh1QnNXaVcxbldZTng1b3FSSUhFbFZjMXlwSWx3YndyTG1BNnBNQm1E?= =?utf-8?B?cy9uZituU1plY2ZjODNwcEp0SGo5WEhtaldKNWxNTXF6NkNSNmFHMjNYTmhV?= =?utf-8?B?Nzh5dGNCWWxoYWozYWpHYXQvTmV2UmFFaFB5NXk0VUtVOGZsY2RIWVY1Z3lJ?= =?utf-8?B?SS9mY0kzWXlrbU9IelQ1elVPVkg0VTNBeFJYaXdCeTZuM1N6MGY1aXc3QmpQ?= =?utf-8?B?M2Rta0NRSmphMGJ6ZU96aTZnU0MveG50alJIR3FQRTNzWFlUanRORnRiNEFz?= =?utf-8?B?a3lJa3FrT3hIUWJDd0Y5UUVraC9iTVB3MWhjbGtrejdVT2MxbFZUcmNDTFRy?= =?utf-8?B?aVFiNzZUMVhKN0krMU00TGdEVXpnenJTcHVIQlVzMVJiWUtEYzgyY1JCaXE1?= =?utf-8?B?UkFhdW1kY05BSDJBQzdVOTRPZ2d2M0VtMGFJc1UyUk01dFVVeFVzOEovU2l5?= =?utf-8?B?VWV6SGZpbHdUNHc1L0QxdlB6N1Q3WkozQTZPbmFuV0V4cnB6b3JJeHNSR0tl?= =?utf-8?B?R0RXTi9jcVB5ZU9iTjdmTHFwYzdoekpJRGF6ZU5Jc2dZV3RvTTJzOGpURVha?= =?utf-8?B?c2N0aE9qMWp3K2grWE1aOWhxbzBUS2poam5sRHB2TDlva0MvcHJRZmcwaUJD?= =?utf-8?B?eldjMkdUOEhQRXFzZ21tM2FON2FmQytXaTh1SzdDUnN5YzliYTAzcy9YcU9Q?= =?utf-8?B?TnFRbzR3Z2dvMXpraTdLdWwyeTU1ZEcwOWhmeS9Yd09ISW1xVVhxQ25uUm8y?= =?utf-8?B?OHk5TWl3M2p1MnJCVVQraDBwTHVQZ1F5ck80UzdsQS83czM5azlqYjRTK01Q?= =?utf-8?B?TUI0T0U4MTZOdWFaYlJxTG9BUndkaTU1ell5SitiNERMckpWQXowa3dQbndh?= =?utf-8?B?UE4rbHMzRVlTbHltTzdtckdWeTlFTndQYm84Q0NBSVJRb1V5Uk5pTUV3N25V?= =?utf-8?B?d2h1SVlIdGlsSVNZdm9vK1ZJOG1mZzZmNFREWnNJRlpJa2ZiM0d1SG1SM3F6?= =?utf-8?B?Y1dGRkJjQ216blZvUUlldUNlcFZyOW05TURueE4vekNrSUVLeTdrazlZWEY0?= =?utf-8?B?TVJOSk9aL1F6Lyt2L1VkTGRaelAwQnVnVTlaSGxEVTJUU25MNU9udFdFSXRU?= =?utf-8?B?dFE9PQ==?= 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: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-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); -- 2.29.3