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 2CC9245556; Thu, 4 Jul 2024 17:51:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ED99142F23; Thu, 4 Jul 2024 17:51:37 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2054.outbound.protection.outlook.com [40.107.237.54]) by mails.dpdk.org (Postfix) with ESMTP id 6C66C4042F for ; Thu, 4 Jul 2024 17:51:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ICBPi3S6GKsHdxwfLCVMGODuJgrl+hFT6FW6kD0GxjIBJvVAILYagDApeUz5qZmTo52PJ4Y9B8ctEnhv7i5X2cGqzppOIGyQPJ7Tk4vU8LjdxyhuAY+KWswz8tie6R9c+tK3pWYDMEAGozN9IqUHcoR6fgDpYP+wMt83bO5ckE98dpqm/mz2N4s0jIUyZXVp3Ez6FuytUhqUQBHnczjYNPWnzWoYLWBDpnKuwCpp2twdCQ4jE/exnTW5Es+xQXB3lL6pDdEM17wMA0fDwp/NgSDA4pH3UL/Tn+Gpb+X+KeLTP3pHliINl5mg3IFyDn9Ok1g6iDvtHkLP8rOl3xrX4Q== 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=gSxVo+1sJsv1cAwd2un1VJd2+BGMaGQzU5M8uTcB4NA=; b=MyVrqZfYssxSPt4sNUptL6+G7xE5KJhhAsq5Q2RulJ1IP/XVI0+CC/h7hgUZF0dRtoZN9fKaDaIXbqsY7QK1r3oHWz40wGLZ2OkL/Ukjr60u2A7WFaBVduimpUbio5ITzI5mQ5n5pQ1Mz1mo6lMmbCaOveVB5Jv/La7qpvyp0iIAsKBmMlC2gffUtK7pB7hytznLFKN/xoxFYcUWDPmeMapOm0VvJJOXJaMpwKrmQGumihcH0PYb5B/XJv+9XrFVqIFz+CG0Hg8UA83IKmWqXUxN47au14kVNHn0PTgObxdxFn+8pisT78MRe71RDRoMr94ShusOKn9QUf/+C/JRhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gSxVo+1sJsv1cAwd2un1VJd2+BGMaGQzU5M8uTcB4NA=; b=XeXvwKGzliLa5CfRY4J1x4u8cTlMCutMt7mEhRAbg1NNfxLkVVrW9I7Vj8wCt8Uvsk4PXnTvc4ceJn+s7UIcRwj+oYf258pAJVMMhv2KlTtsrwC2+yiksrtNUGKD3GDvtJhCaICvKA4vRDrR2JmVk2hQjpSseoY5Bus3zjmEb40= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by SN7PR12MB6765.namprd12.prod.outlook.com (2603:10b6:806:26b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.29; Thu, 4 Jul 2024 15:51:32 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::ebfb:2f9f:f9ca:82cd]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::ebfb:2f9f:f9ca:82cd%4]) with mapi id 15.20.7741.017; Thu, 4 Jul 2024 15:51:31 +0000 Message-ID: Date: Thu, 4 Jul 2024 16:51:27 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 2/4] gro: remove use of VLAs To: Konstantin Ananyev , Konstantin Ananyev , "dev@dpdk.org" Cc: "hujiayu.hu@foxmail.com" , "roretzla@linux.microsoft.com" , "bruce.richardson@intel.com" , "anatoly.burakov@intel.com" , "vladimir.medvedkin@intel.com" , "kumaraparamesh92@gmail.com" References: <20240523162604.2600-1-konstantin.v.ananyev@yandex.ru> <20240523162604.2600-3-konstantin.v.ananyev@yandex.ru> <0f149663-a2bd-4553-938e-de9e87cf6adb@amd.com> <81ca5265e17e4606923385bb815304ad@huawei.com> Content-Language: en-US From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 8Zk= In-Reply-To: <81ca5265e17e4606923385bb815304ad@huawei.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO2P265CA0484.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13a::9) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|SN7PR12MB6765:EE_ X-MS-Office365-Filtering-Correlation-Id: def4ae50-13f8-413f-6782-08dc9c412c92 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VzdqK3lvYzlrcVZ1b3ZBc3gwNXY5V2R4akNsWFhNTnk5aGk3VXBpK2IzMEhY?= =?utf-8?B?dS9reC9XTnUxcmJId0pHTkg0c3djOXFRK0NhcHFhT1pubGtzdURhNExwa3dZ?= =?utf-8?B?TzZsbmROUmtIR3JBK2FMeDcvZTQ1Y29TTW1jb1psQ01SWmplY2dGYVFRSTBh?= =?utf-8?B?WU1YcVRrdnFORWRZWnhCSGJUcjFzOG9DNGNJbHhwRXpZVGpRZWY3elpJdlI5?= =?utf-8?B?OWlmdHZXc2xYZll1THNlc0xRamEwRmpSQ1ZXdEdkV0VLa3JUem4vNXpueWdx?= =?utf-8?B?YWFycGtzKzF2dGNzVG80bGNMZHlRTURQbVAxZjNrekhnRjFaYWtBdWZGU2Y2?= =?utf-8?B?VUtValZuUWpiWjErSGVFRkJSMlRtNEc1c29hRXJUV1JMK0I0RTI3WTdBZVRL?= =?utf-8?B?SnA3RVlCK3l1OVd0eVVvVnc3YXlZbHdxbjkwMmlFNXh2U2RtZmxyREVMYXd4?= =?utf-8?B?SDNWK0RCZklkcHNQbThWdjRNcndoWEZBYUhTNllxaWdsU1BQeUNZb0M2UEdk?= =?utf-8?B?MW5zSGFxVzJaRWYvTnlLVkhZQzFyejRjQXAvV01od01JQnpINlRPbHFZUE5Q?= =?utf-8?B?b1pTVXBxYlNHclRyWXBiMkMrbjM2b3NOemg0TjY3YTdPMjltYno5Z285OTlk?= =?utf-8?B?UUFqb0hSZGlVYndWUGxMUVBuQkRtRzhnZlhBZVZTUGQzN0kvZWFzd0p2OVNT?= =?utf-8?B?NHR2ZUVtTXBBL2xlMjN0eXNycExiS00yeEtQVTdUM1FBZ2VwaGkwcEozelBG?= =?utf-8?B?cUc0dE5ZTXVnSWJxams4NHFYK004U1BzQVRKUjFRQTZSak5kQVVvTm1Ub05l?= =?utf-8?B?NmRMdS9wWUw2a2FTZU43Vy9Wcll5UkFaOW11dGxReDBFRUtxdjlVdy9NTWI3?= =?utf-8?B?NEJpRStnbkUrdTlYNzhPZTdrZDlMeGdKdnJFOXdWeGNWaVd5Z0NyUFJJUnhC?= =?utf-8?B?M1dxR2pEbEFFcCtDcitQWXRWdnZVUXh2bGwzcVFNOUNCWkRUMThiYkhHUnJ2?= =?utf-8?B?SUpwQ0FmeXNUdEVVOHZCd1N4QkliRVlCYW9PUjlzSUhXQ1lSTEx0L05KWHdh?= =?utf-8?B?N0tkYlBzY1dZMDhyd0UrUnVJOHZLdkFKQ0QrbGtmN1BWdGZzTld2RW51VUs1?= =?utf-8?B?c2pObGFaWmJVMktJSkVvVkRHN2I5VWtGekVxalQvVStTRmF3cFlHSXNWbm0x?= =?utf-8?B?MVBaM0FjSXp1aHFrYTFRL3pEU3VsdjN3Z2ZHTTdFQTc4bWFqZmpJbFZOUjZ3?= =?utf-8?B?RXFmbzluOTVzY0greWt2bkF4RWwranpTNlJCZ1dWUm1TRERVR0xML3lyWTlZ?= =?utf-8?B?V1Uxb1JQbng4OHNuaEE0aDlkTGxPc3dXeFpaVmRPbVQ5aUNJQnBEMGkzWUhV?= =?utf-8?B?QThrandTTnlZdW8zQXVhMll0RXpzV3lxOVVqWVF1eGpnekYyVDVVbjNtdXJk?= =?utf-8?B?Q3Rnc1BsYktMNHV6MFl0TGtYeEdSekVUM2twcUZ1M0xvbTY5b0FsTXd6WDBN?= =?utf-8?B?elNENVdYZHFCdnRPRExXRUN1eEpBTm1McEJBMUFjQUxWLzltei9EWkhHb1JT?= =?utf-8?B?bmpGNS9OOFVuc0JuWWNnZjNPclgwUzA1dHJLRXFoUkM2czhKWWdOVnFpZUdX?= =?utf-8?B?aVVKenFSNXMvY21FZ2lxd214NkZYVWRucWFRK3F5MVdGUi80ajVGSHY5TERE?= =?utf-8?B?TFlyVDhjd1pCL25wZmFqWTM1M3gxY3Z2dnR1OUZFcDdtWEpTNVUyR2xSQ3RP?= =?utf-8?B?M0JhTEhxc1dOQVF5V3pwRVZFTkRoQTA0UVhNTkhxV0pleGJYYk9aeGViLzZ5?= =?utf-8?B?TWEwZUxHT1VacVdTSnBoQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cjViVmFGNUM1YVpOYUt2WXMzWC9zdEczK2lJR1hJNnFCaFRnQS90TzNWUkJ5?= =?utf-8?B?Vk1qcDdRdzBKeDJuNWQvZ2E1enBkNUJqdVpsUEpod0Ruc2xBYnl4c1I0MHBj?= =?utf-8?B?QzFVM3daNS9McXVKOW0vY05PNFF3MXdOdWRjQndmRGVtMTlWVDFLQ2IwZHFO?= =?utf-8?B?R3RRaU5SRTQvK3NoVTR6SFEzZHVOS3pJbWZtcTZ1UnZUSlNlbGQ4WVJTYmhT?= =?utf-8?B?K1NOT25qMzk2ZXZTS0wvc1dFZU8vdDk4a0FBYWhpdmV1ak9RTm9XVnEvekc0?= =?utf-8?B?M1RjbGRCeENZZ3pjWGlUQUc2azVNbVd6WkNlTDJxT3F4K3dqWk0vMDRtbis3?= =?utf-8?B?ZDhvUXdzQlowbFZzZXNEdEk3RkFpQUJQdlM2SjJCb2V3ajAvdDhxSmpkTExy?= =?utf-8?B?aXFFcFZIcmZ4cThVVEFBQ3ZwRXphS1MrVDNRaTlUTmtvSjBoQWpaekJWVEpp?= =?utf-8?B?cGEweFdFQkpIUmRlenFYcy93T2FsNHNLYmhBS0RKODUwYkZDbUdobkQva0JI?= =?utf-8?B?UUhIdmI4Zit4WFBDVnpqNWhRSng1NWNwY0d0NG5QZ1lzTU1ZZ2g5b1lKMHhy?= =?utf-8?B?L2d3bHJHZTZlY0d3VGF1N1NSNWJ3RFhJK1lQNWNSeHR5cnY4UmJyZUlCOXZt?= =?utf-8?B?MHJkVjhidllTTk1IYTBXemJYa2ZYRUhxcnZTK0hnMXdpNGp5SktuNVA5SURr?= =?utf-8?B?RktGdjFZY280bGFkRGVtaXNrZzd3SDhScHVIdXNSbVFVVDlUVmVUNS9LWHdw?= =?utf-8?B?Q3c1M0dycUZiK2I1YlNGaFQ0UmZCeVVVWFR1QUFKdG1yQlJXY1BYdXhyRkQ4?= =?utf-8?B?cGhXRW8vOGU0ME9nczN3azBrUlphSitmWE92ZE13MGtoL0tmN0psZzdzejgx?= =?utf-8?B?VGVuL2FSSklEMVhRMlZ0c1g2cEFiYTF2ZUNyT0ZjV1JsMlI4QmNzdGVqRWM4?= =?utf-8?B?S2daaXdwN0d0THNzNHBDTmdmc2x1dTBiaW5abVk3eHE2cmlSc2dUTDJLcFVD?= =?utf-8?B?VzdJa2N4UitOUVdNT1FoOWdjYU96aG5WVW1IbGY2QnhWU3orWmhFOVZZRFdz?= =?utf-8?B?Vi9qQ0IwRlNoR243UXREL3B5MDFlRFM1WElxODMyeFh0SDJsTzBUeXFPeEc0?= =?utf-8?B?QTRESHlTcGRiMFYrU1NmSWtzL3N3MmVFVE16ZVJQNXhEZ0pINmFUMnltZXVi?= =?utf-8?B?UWhYbjROY21WLys4aDc4cSt5K1dIY3RHaURlOUxucFdSQTgwRldTam9Gd3M0?= =?utf-8?B?QXQ3L01aMUpzazZ6MGZhWi9GUUhEbFE3TGJ5TmhDV284SXJtNDBZMnpCZ1hL?= =?utf-8?B?MEJ5NzJiY0pWQ1dtTjlFV2hmWTZFOHQ4VEhIa0FVUGliMFk4SlFMc1JSMmtV?= =?utf-8?B?OFI1aTlXSWhSSkwxSzFhL1Jta1U2a2lKcnZUTjVwazZQY2N3ZTVXa2t6NWEr?= =?utf-8?B?THdPMERUazMvVHZ6RDhOVHpuN0VieGliNmN0cExScUNmMldaTVBnWW1LNEhB?= =?utf-8?B?eDlEWTJvNlRDQ2IrVlBGWkNKL1J2cURSaWRFMDlBaFZBUThROEQwWHJaaW02?= =?utf-8?B?bENDazdxbW5rOE5PY1lMTktIOHhCV0xYN1BSaXluWEhDb3ZrZDVOYjhRSmNl?= =?utf-8?B?QXFJUFlHK2o1KytoZWlueUQwWnl5MHIrcVZZV3NQQ0tzTWVnTUhwTHdDOThW?= =?utf-8?B?Q1VBUGtna0tXdW43eENGeFRCNnVTNHBtRHQ4TUUwbnFFSjlvZDdDUXRtZ1ps?= =?utf-8?B?RGVmSUhoVmI5ckc0M0R3dS82b09EWjFHaHhmMG45NkpONlUwSDFIUFVKSVow?= =?utf-8?B?YVFydHI4TkN5ZGpyWlRKeTh5djBOMktpbFpRb2FoQ2luWkdlNXpMRHRpRlVG?= =?utf-8?B?TzRkMkxKVVRvOGZrNW5OTnNNZzZmRGJXVFA5WWZZeW1Yek1BWk5xVG9wMVUv?= =?utf-8?B?Y2RTN1Q5ckpjY1A1RHFxMWhpeVNaNkdSb2ErbGV4VVAvUnM2VHV5SDJ3UUp4?= =?utf-8?B?TDhxWXFqNFBKWUg5OHZKT1U5WDFjaytoajFMSk5FZGJOOE1tbm5GN09vMUwx?= =?utf-8?B?RVZvZGJMSlhFNTRscUlmc0g3L0JOUnp0UVRycDJURnlZNmpWaUg3SU5keWlt?= =?utf-8?Q?CsYthvTHP+5eAJstZbUCJ73xG?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: def4ae50-13f8-413f-6782-08dc9c412c92 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 15:51:31.6926 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CRoxknJCl3ta2A+DQbR+la+IqHIEcvtU+QVCrMl0qHGHNxqIPjtP0cjnZK2o34Vb X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6765 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 On 7/4/2024 11:05 AM, Konstantin Ananyev wrote: > >>>>>>> >>>>>>> ../lib/gro/rte_gro.c:182:34: warning: variable length array used [-Wvla] >>>>>>> ../lib/gro/rte_gro.c:363:34: warning: variable length array used [-Wvla] >>>>>>> >>>>>>> In both cases the pattern is the same: we use unprocess_pkts[nb_pkts] to >>>>>>> collect un-used by GRO packets, and then copy them to the start of >>>>>>> input/output pkts[] array. >>>>>>> In both cases, we can safely copy pkts[i] into already >>>>>>> processed entry at the same array, i.e. into pkts[unprocess_num]. >>>>>>> Such change eliminates need of temporary VLA: unprocess_pkts[nb_pkts]. >>>>>>> >>>>>>> Signed-off-by: Konstantin Ananyev >>>>>>> --- >>>>>>> lib/gro/rte_gro.c | 40 ++++++++++++++-------------------------- >>>>>>> 1 file changed, 14 insertions(+), 26 deletions(-) >>>>>>> >>>>>>> diff --git a/lib/gro/rte_gro.c b/lib/gro/rte_gro.c >>>>>>> index db86117609..6d5aadf32a 100644 >>>>>>> --- a/lib/gro/rte_gro.c >>>>>>> +++ b/lib/gro/rte_gro.c >>>>>>> @@ -179,7 +179,6 @@ rte_gro_reassemble_burst(struct rte_mbuf **pkts, >>>>>>> struct gro_vxlan_udp4_item vxlan_udp_items[RTE_GRO_MAX_BURST_ITEM_NUM] >>>>>>> = {{{0}} }; >>>>>>> >>>>>>> - struct rte_mbuf *unprocess_pkts[nb_pkts]; >>>>>>> uint32_t item_num; >>>>>>> int32_t ret; >>>>>>> uint16_t i, unprocess_num = 0, nb_after_gro = nb_pkts; >>>>>>> @@ -275,7 +274,7 @@ rte_gro_reassemble_burst(struct rte_mbuf **pkts, >>>>>>> /* Merge successfully */ >>>>>>> nb_after_gro--; >>>>>>> else if (ret < 0) >>>>>>> - unprocess_pkts[unprocess_num++] = pkts[i]; >>>>>>> + pkts[unprocess_num++] = pkts[i]; >>>>>>> } else if (IS_IPV4_VXLAN_UDP4_PKT(pkts[i]->packet_type) && >>>>>>> do_vxlan_udp_gro) { >>>>>>> ret = gro_vxlan_udp4_reassemble(pkts[i], >>>>>>> @@ -284,7 +283,7 @@ rte_gro_reassemble_burst(struct rte_mbuf **pkts, >>>>>>> /* Merge successfully */ >>>>>>> nb_after_gro--; >>>>>>> else if (ret < 0) >>>>>>> - unprocess_pkts[unprocess_num++] = pkts[i]; >>>>>>> + pkts[unprocess_num++] = pkts[i]; >>>>>>> } else if (IS_IPV4_TCP_PKT(pkts[i]->packet_type) && >>>>>>> do_tcp4_gro) { >>>>>>> ret = gro_tcp4_reassemble(pkts[i], &tcp_tbl, 0); >>>>>>> @@ -292,7 +291,7 @@ rte_gro_reassemble_burst(struct rte_mbuf **pkts, >>>>>>> /* merge successfully */ >>>>>>> nb_after_gro--; >>>>>>> else if (ret < 0) >>>>>>> - unprocess_pkts[unprocess_num++] = pkts[i]; >>>>>>> + pkts[unprocess_num++] = pkts[i]; >>>>>>> } else if (IS_IPV4_UDP_PKT(pkts[i]->packet_type) && >>>>>>> do_udp4_gro) { >>>>>>> ret = gro_udp4_reassemble(pkts[i], &udp_tbl, 0); >>>>>>> @@ -300,7 +299,7 @@ rte_gro_reassemble_burst(struct rte_mbuf **pkts, >>>>>>> /* merge successfully */ >>>>>>> nb_after_gro--; >>>>>>> else if (ret < 0) >>>>>>> - unprocess_pkts[unprocess_num++] = pkts[i]; >>>>>>> + pkts[unprocess_num++] = pkts[i]; >>>>>>> } else if (IS_IPV6_TCP_PKT(pkts[i]->packet_type) && >>>>>>> do_tcp6_gro) { >>>>>>> ret = gro_tcp6_reassemble(pkts[i], &tcp6_tbl, 0); >>>>>>> @@ -308,21 +307,15 @@ rte_gro_reassemble_burst(struct rte_mbuf **pkts, >>>>>>> /* merge successfully */ >>>>>>> nb_after_gro--; >>>>>>> else if (ret < 0) >>>>>>> - unprocess_pkts[unprocess_num++] = pkts[i]; >>>>>>> + pkts[unprocess_num++] = pkts[i]; >>>>>>> } else >>>>>>> - unprocess_pkts[unprocess_num++] = pkts[i]; >>>>>>> + pkts[unprocess_num++] = pkts[i]; >>>>>>> } >>>>>>> >>>>>>> if ((nb_after_gro < nb_pkts) >>>>>>> || (unprocess_num < nb_pkts)) { >>>>>>> - i = 0; >>>>>>> - /* Copy unprocessed packets */ >>>>>>> - if (unprocess_num > 0) { >>>>>>> - memcpy(&pkts[i], unprocess_pkts, >>>>>>> - sizeof(struct rte_mbuf *) * >>>>>>> - unprocess_num); >>>>>>> - i = unprocess_num; >>>>>>> - } >>>>>>> + >>>>>>> + i = unprocess_num; >>>>>>> >>>>>>> /* Flush all packets from the tables */ >>>>>>> if (do_vxlan_tcp_gro) { >>>>>>> >>>>>> >>>>>> ack to re-use 'pkts[]' buffer for unprocessed packets, that should work. >>>>>> >>>>>> But as a more general GRO question, above 'rte_gro_reassemble_burst()' >>>>>> functions seems returns 'nb_after_gro' and as far as I can see that >>>>>> amount of mbufs sits in the 'pkts[]'. >>>>>> When packets flushed from tables, flushed packets are replaced to >>>>>> 'pkts[]' but still 'nb_after_gro' returned, there is no way for >>>>>> application to know that more than 'nb_after_gro' mbufs available in the >>>>>> 'pkts[]'. Shouldn't return value increased per flushed packet? >>>>>> >>>>>> Ahh, I can see it was the case before, but it is updated (perhaps >>>>>> broken) in commit: >>>>>> 74080d7dcf31 ("gro: support IPv6 for TCP") >>>>> >>>>> Actually my first thought was - we should return 'I' here. >>>>> but then looking at the code more carefully, I realized that it is correct: >>>>> nb_after_gro - would contain valid number of packets >>>>> (at least I wasn't able to find a case when it wouldn't). >>>>> Though yeh, it wasn't very obvious for me at first place, so might be >>>>> extra comment wouldn't hurt here. >>>>> >>>> >>>> In first half of the function, 'nb_after_gro' is number of packets not >>>> assembled and decided to pass back to user via 'pkts' buffer. >>>> >>>> In second half, timed out packets are decided to turn back to user >>>> (flushed), as they are not reassembled, and these packets are added to >>>> 'pkts' array for user, but 'nb_after_gro' not increased. So how user can >>>> know about it? >>>> >>>> Basically, I think we should return 'i', what am I missing, can you >>>> please detail? >>> >>> Actually, as I understand the logic is different from what you described above. >>> At the start nb_after_gro equals to total number of input packets: >>> nb_after_gro = nb_pkts; >>> Then later, for each packet that was merged with some other packet it decrements: >>> ret = gro_..._reassemble(pkts[i], ...); >>> if (ret > 0) >>> /* Merge successfully */ >>> nb_after_gro--; >>> >>> So at the end nb_after_gro contains number of input packets minus number >>> of packets that were merged. >>> >> >> We have same understanding up to this point, this is what I described as >> 'first half of the function' above. >> >> My concern is about the flushing timed out packets. They are copied back >> to 'pkts' array, but 'nb_after_gro' is not updated for these packets. > > It is probably easier to discuss it on some example. > Let say we have 4 input packets: > > both p0 and p1 belongs to the same TCP flow and can be merged. > p2 belongs to different tcp flow > p3 is raw ip packet (not subject fro GRO). > Then after first half we'll have: > > tcp_tbl={..., merged(p0, p1), ... p2} > unprocess_pkts[]={p3} /* I am talking about original code for now */ > unprocess_num=1 > nb_after_gro==3 /* correct return value */ > > Now it starts to re-assemble pkts[] > First copy all unprocessed packets. > Then as all our GRO tables are temporal (local vars) we have to flush > all their contents back into pkts[]. > So it becomes: > pkts[]={p3, merged(p0,p1), p2} > return value: 3 > > Above is clear, thanks for explanation. My mistake was assuming 'gro_..._timeout_flush()' can return timed out packets from previous bursts, but this seems not the case. These functions works only in the scope of current burst and timeout is _not_ really used at all. So, returning 'nb_after_gro' is OK, and it should be same with 'i' anyway. >> What is the purpose of copying packets back to 'pkts' array? >> >> >>> Which, as I undersrand should be equal to 'I' value. >>> So, no change here is necessary, I think. >>> Except probably some extra comment to avoid confusion. >>> >>> >>> >