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 27334A00C3 for ; Tue, 29 Nov 2022 02:21:45 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1F95240A7F; Tue, 29 Nov 2022 02:21:45 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2122.outbound.protection.outlook.com [40.107.237.122]) by mails.dpdk.org (Postfix) with ESMTP id 8FC7C40042; Tue, 29 Nov 2022 02:21:42 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iExFSeNd6jk5EuuwIeIEO7QSvf/ltL5Gkq8NpRlHWvBlUGGrTl8seWC+C14G5zmoRPU8P5ZzcnNxaCy0CvDldRAGrWyw/HLtZr/+pOjyrYv/Bl28rRdEXSywWP6lXHGKt6AWxqyAO8+x+RBGYDMwSFJk0Oe/nyhITOM1umqK8hGKVJeVx13wciLN2z3sjdlv2CgXvsfPZEUkZ+gz0mau1xHWPNtpTrBP9n6J/yZC92pxQH3tLxCx+uPv5OW87rlDlYCBZx5CsfU4z7Zh9uyRzlqudAWPC61xm1PVz9CrGPBtkJcpqwNhsbqLY6Dc6IKhAKbUQHso6wLw+Wm1YTb/7w== 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=AY0gIvNSxVN3n7QzT6PTDtZ++r9TKSRGfVvcmcHBQpQ=; b=T0SWP56RKJyQ7PLdx/v6FUV1NcDtwdoeluAeBT/CQDUJo7VXplXWsDKsuyOujUjGNFfsnScawDzqnX/tVLhDyqCNPPl+7by481w8IYk/hmMXXw456SXg1AEVfxw5zqxo1q/NT4BGf/8zHYme0I+XcOPyHA3aNF9X9Kiq2RBTKjKtIIHfIiDMPiD8HlRsrZ1zuAwAT+2wnkeYTWkP7X2x0UtFWsSmi36la2pDEPC2yba+O+HzG3Hctju7z2aTmb/AntWBFQJ0gcVGr2vjwn2SMSSPtE9xtn17ltroTNxRPLritrtwWB5W7E6/UlHLwhQR3vCNoSjAFgJwbAMj14K+Gg== 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=AY0gIvNSxVN3n7QzT6PTDtZ++r9TKSRGfVvcmcHBQpQ=; b=oU58PVPxEyQeJio0pb3aZwPn/kMIaGne26t6LhE8deJOh36FsVUcVk2xaQjaAatkszE3vOHWBPCkde1wW8Mn7AWmYHxKcFY4hKPAUIt85hlZ5qjPORyR8PRIL6goAehURDIXGFQbLML8T/0+qCSTvVmuJFone6nleVLNZjQwS9g= 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 MW5PR13MB5512.namprd13.prod.outlook.com (2603:10b6:303:191::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.22; Tue, 29 Nov 2022 01:21:39 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::5122:8c31:51f3:4ee7]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::5122:8c31:51f3:4ee7%4]) with mapi id 15.20.5857.021; Tue, 29 Nov 2022 01:21:38 +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 Subject: [PATCH v2] net/nfp: fix issue of data len exceeds descriptor limitation Date: Tue, 29 Nov 2022 09:21:22 +0800 Message-Id: <20221129012122.24394-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.29.3 In-Reply-To: <20221117083320.21815-1-chaoyong.he@corigine.com> References: <20221117083320.21815-1-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI2PR01CA0039.apcprd01.prod.exchangelabs.com (2603:1096:4:193::16) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MW5PR13MB5512:EE_ X-MS-Office365-Filtering-Correlation-Id: 866270b4-b9c1-4d85-3f9b-08dad1a8103e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pTcElDwfp8V6LxxzqwrRNWkrKN9B79+box2XWzExB+OtOyNdD2FcZEAz+ZEurm/oUes2BRT1NqMskZjZMqr/In1DC7IZNWP30rcq4bDveXAgr4QgJCOEq5eRnnFAGX29MfvN74fUj3Cun+06WLwq+qYDw2Z61MTDkgs+pCo0XAwEOmjE5DquxHp2WTjo0nIVajJgr2aITFnnt35LBVslQlltQ8jvaiEJBAW2FUHM4Em3yTBDSv0h9DhebWBdzVhNMA03NNLBja9hcCa/BLsD3xKjXh8t+BxtbSv1lCHYSH/DkHsBle0ceD1Fjf4ESyqqH2Gmg1DlQFvRNpM2ym/KHGxQFqrQjlUs5ceHNkmA1I7v7845nsIKiIucucnrWNBDD30/yooTgGli3ovAUYRZ9TmEGOdml8ZRBoMeuhNPnLQDxLbmg0rcb4cit5aDh4E9NfpnF8Vuth5UYSpZzCtqaKbkjlzEHWFipJSnYZF7Tle7Yx6U0tAGOFNXJ4opJ4yhp3fGmE02mY4wd+N5UBK5443x92ADq8L4Ucso2w9UytxKHfjTsazBAGbB26ukIebgqSuji/CHuW/2C2doCTDRfEbOk+1C2EZg0ZqwDVbSA0TxkfQ84U+Yk+XSkB28dQ1FFXQ3xckxIphy2nXFVS7jk4rwU0Z2VX1fVSvJOmugZMU0mhWbORf9O/3TTtJZ6awltyAKfeiurulNZnKo0o5zQN6KShhmq1U+PiQHBEmBfog= 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)(366004)(376002)(346002)(396003)(39840400004)(136003)(451199015)(36756003)(86362001)(8936002)(44832011)(5660300002)(8676002)(1076003)(2616005)(83380400001)(186003)(478600001)(6506007)(6486002)(66574015)(6512007)(26005)(4326008)(450100002)(6666004)(52116002)(66556008)(66476007)(38100700002)(66946007)(38350700002)(6916009)(41300700001)(316002)(2906002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UjNKOUF0VjVDV0kvNmxZS09jQ2poK3d4Q21WWjlxa29iRkx2bXUrMjJYS2o2?= =?utf-8?B?MVFzK2U3bHN0Z1R1ajcvVlpUa0pKc1R4S05OdXlrZU1rMEFDNnhMWGQ2b1Ux?= =?utf-8?B?aEd3TGxLaUZ0QlNKUzUzS0FEenk0VUJXZk50NzRoZERuTDZDd0hMelNIS210?= =?utf-8?B?NHZWZnhrcS94elVybTdQWEYwdHVXVDV2L3pCS0NDNEtJckhrUnZ4RXM2ZFVn?= =?utf-8?B?MjFieTNCK1NzNXMrbzlpOVdLOEhSSHo5M1ltb3plMWVidm9Hd1hXUytxRlhi?= =?utf-8?B?YVB0cWZDNnZOWCtGbC96S1RPUW5vWHR5c25rNGdZeDJ1b0pJdnQvMFdpZks5?= =?utf-8?B?MjkrY2lOaVM4M1g2UExNdmRzdHF5SW41K1FzZldZNTVjM2V2VUJ1MEFYZk1N?= =?utf-8?B?VWJ4dmwrNTJJeWQrdllsN3VWa0dGbkYxOEhxb2JqTzkvSHp2VEo1dWN0bmp0?= =?utf-8?B?eEZwL1JuVzMxdHU2M3BJNmZoRkxyMjh6VnFYcmV1NHRQQ1libnhNK3hVeGVI?= =?utf-8?B?TnR0OFRBMlNsVEc5aXpEc0lHUStzb0RkVi91Wmt3YW5KdUp0NGIwR3BzR2pD?= =?utf-8?B?RmVkbTMrNjZLQ3JUSS95NmpINEgvRG9tanc2QjBOUkFPNGdncU55d01jL0hm?= =?utf-8?B?ellFTGUzdWlhZStYMXJ3ZTJoYjRMMExmSEt6M3NPOE5FVXFBTGZtNEVVZ053?= =?utf-8?B?UEQ5d0JrWC9vcnh1OVo1L1FIckE0ZkNkOFRTNXd0SmtJV2FMRDFIcFBDd25a?= =?utf-8?B?ZUVpdk1zMDlEM205UHJOUVlUS3RMc0dmelNjbEoxRDhSaytWUkE4T3UxM2JI?= =?utf-8?B?OUYxU0VnZkF5VUFlV1k0WUJ4aDRRd2RZMjkrTG1xTlZhSFk4SSt5NDJzTnpv?= =?utf-8?B?bitxVDlDanVDV3VkbVR6dGJuU3VEdVQrbm83L29lb3pKSU5NN3ByaHFXUmVV?= =?utf-8?B?NXZHelFFNG1MOURrclYvVGZlVVpCaW5Fa0E1T01pUjdZRGRQSnBGQ3pVdDdw?= =?utf-8?B?UmhBTFpqejR4b00wNDJ5cFB2UWx0MkJ2WmdxenRna3ZFeUlCY21pMDdxWm5a?= =?utf-8?B?ZWFoV0VNVW1BRklBVjZtSUZzZ0hET1VKb3FYQXFNQ1QxeHE4cWRkQlNSdUFC?= =?utf-8?B?SFh6M1VUaVR4a05FSmY3ZUtkb3JQaDVjemk0VncxMTFrZjRna0kzQmcyclhq?= =?utf-8?B?VDZxS3FNei9qTk1kOTJqcVRwZkhVdndwWlJUVnZWbUNqWW8wdlk4NFVqZE5W?= =?utf-8?B?MjZSMzNwd2pjQ2xBelFMRHM1bnhJUVNiRSs2SDk3bFQ1eGt3cUFnZ3pXRzdW?= =?utf-8?B?KytQNDFBS2oybzZhdVppV3E1eDNRTWxycHVnanQ5d1ZaZG9NMVg1djNZTUZP?= =?utf-8?B?SDNvMGRGakNMVDU0Z292aVRnN2wzRU5RbjhybDNLTDN2K2dieitmNUkrTlZw?= =?utf-8?B?dGhjK095d1o1WGMrM1ZXNlJIR0FiRitKQWdkN1VXWVZCZGVFRzlqeGcvTTdo?= =?utf-8?B?NDQ4MjBHUXc4ZFdwZnNlWHR6VXFvUC9IcXpSR3IyUEdvdmNmWGV2MkpnSmtt?= =?utf-8?B?Szg3b1VXRm1peDZrbGZqYUF3VmxFUWcwWlJmVmFFbUNxNVhIb2hZeXdvSXlV?= =?utf-8?B?OThYUWxSZFQrQVV0M0lCQWVxME13enQvRkVNbXlzNTBOaHN6S0hPNmFITk5S?= =?utf-8?B?a21NQ1RuRE9NcFRYTHJVSjBHWEtRWTc2ZGhFNGVrQzMxRmlIQzNnTW5xZ1NZ?= =?utf-8?B?cHFzcXRmU1hpa3U5eG1DYXd1d1gzbXBTQ25HbHRFWXcxYUZNeWRFR2xQKzJP?= =?utf-8?B?SHdkZzFENVRpeUkvUENDaDJiY1NXaXUwVktqRWtUbmpYWTJHcmdlYkZVOXhr?= =?utf-8?B?WFIrclNYUDU0UDhZSEYveVpkRE9RdGRXc0FhSitUeW82VnhoeGFTaDU4Y1Bz?= =?utf-8?B?YTV5M3cxZHE4QkhkbVk3cWoxZUNHMXB2K0RTeGVDNEREUnhnTjRhYUFjWHVw?= =?utf-8?B?T2tEVFpGT1Ixa3JOUUZJZ2xWZldYUi9vY1VWaFlhMFpMTXJCYWpldytKajdT?= =?utf-8?B?bDMveTZleDE2dW5xZ2tNS1U3VnFCMzBscDl2M0dZa280alVDYmJCQlBCRGp3?= =?utf-8?B?MktlNVl6dEVqWjdEdEhRSWM2dkFoTU1CL3F1eU9EajMwSHNBOTBwSFRlM3pS?= =?utf-8?B?Wmc9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 866270b4-b9c1-4d85-3f9b-08dad1a8103e X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Nov 2022 01:21:38.6384 (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: 09tbp3uGHeWp6FVPBXpxUoyoCw74JRsGU1zjplh/rLdz6759cJRxCIm4pzUB+YaicUwSG8Kn+dNWwzYQbFVpTSvnw8mnbfMzAXNpqY66sMs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR13MB5512 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 and the packet will be dropped. Fill maximum dma_len in first tx descriptor to make sure the whole head is included in the first descriptor. In addition, add comments to better explain the code flow. 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 --- v2: * Rewrite the commit message. * Revise some logic according to the advice. --- drivers/net/nfp/nfp_rxtx.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index 01cffdfde0..990007c03d 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -1063,6 +1063,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) != @@ -1219,8 +1220,19 @@ 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 & NFDK_DESC_TX_DMA_LEN_HEAD will less + * than packet head len. + */ + dlen_type = (dma_len > NFDK_DESC_TX_DMA_LEN_HEAD ? + NFDK_DESC_TX_DMA_LEN_HEAD : dma_len) | (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); @@ -1230,10 +1242,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