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 2836EA034F; Mon, 7 Feb 2022 15:57:09 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C00DC410F3; Mon, 7 Feb 2022 15:57:08 +0100 (CET) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 0552F410EA for ; Mon, 7 Feb 2022 15:57:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644245827; x=1675781827; h=message-id:date:to:cc:references:from:subject: in-reply-to:content-transfer-encoding:mime-version; bh=W+MCEgzbaplIGD3S8r2/selyzr54TsjeSjKdvdWNpyQ=; b=O7E696b2PccVdWILJamGSljuKUuG3tTdP7H2pZ/QdHrSiGBNktSeIdZn ZKs86vmMmsVGR8JktAgGE7yyTS7iBy3ILJTcXKyP9cRCRdMoRvJwWfm8q HUzu0kkRWDOPQTbxo+Tas96wZg1ZpaZEzxSdEWG4piRn0Sc07QABczeOH VSfn0ZqbkGM6RjhjOS9MTsNNCUf/BW/VtoruNlFl0aOIt6xQFphnwylEq HueZjJStzGbPTlvyu7fUqZ1U8uQp22BovjozO/b89lz2shS3O8zllEP41 nC6tjk+p++rXm3dLOoujApER/eT1VGVOW0ZnTz9xA62mwG97IWSsEHuuQ Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10250"; a="229378979" X-IronPort-AV: E=Sophos;i="5.88,350,1635231600"; d="scan'208";a="229378979" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2022 06:57:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,350,1635231600"; d="scan'208";a="536233575" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga007.fm.intel.com with ESMTP; 07 Feb 2022 06:57:02 -0800 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Mon, 7 Feb 2022 06:57:01 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Mon, 7 Feb 2022 06:57:01 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.106) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Mon, 7 Feb 2022 06:57:01 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GtJ9mZ1TV4cCNuzgZ/z4ZQIlRjRUBSUUwURY7sUJ0Fg5m5QzI28g3pafZS1CDbUjucLVPULAsR/DEsUpBDMU+CdYDmtOzaS2YthSmJdIPN3hkmeiausL3XIG5cKEw8vcrlIoGa1IFyW/DWKVkMwRlRsMupkZIjGXyBDJNbFvUWwV8Es3czGPiRkrXgF56PwcRCUM/T2wiXLgwavEF3E/5eOUkULhE7uyIGgQ4jOOiffWZQQxW64qMFYr4mzC9IxNd9l+2aNrDBdjGg/KNS7qJnCYu49ltgn5G1OMHmFbd83il0aCW5x3wvRvzjzTEJVLQAQmqrY2HtjAlsLsFvIr9g== 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=aHJPwXjP2rrNOf3pi8dwFrrr/BSeiadJIjTgOBylQsc=; b=jmin0DeHvNRBDUkXmcwFpRxkf4ntQtGjeRTIbsMizPOis241HgvaU8QWP7lTaWViTrGiP0eMVO4wEE12hLyjMDseHRSsZBjpPp2VRHFh95bxl0H/xM3gUyyfxJOM1KnCq05OGD+yQfVw7THkDtzFDhC/59YAhfAUU0xhipQsvHt9jOsmPwqGBfykTqsHo0Cpujr7oXfV65/HHAzGvLLGuoqloVd9qogx7K3vUFRy7LqZ6Sa0y+LUtLT/FCeC1OhUlWGQJeCewVh8Sfaud0StVVGfnW2xj0lj22jlGYtrHqfOn4g+VXzi2troPlW+w2Q9vbNXTyDKvsm2+BusR2d49g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) by PH0PR11MB5080.namprd11.prod.outlook.com (2603:10b6:510:3f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Mon, 7 Feb 2022 14:56:59 +0000 Received: from PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::5046:8550:928d:850e]) by PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::5046:8550:928d:850e%7]) with mapi id 15.20.4951.019; Mon, 7 Feb 2022 14:56:59 +0000 Message-ID: <03b80bd0-64b1-2cda-c982-e42108ffce6c@intel.com> Date: Mon, 7 Feb 2022 14:56:52 +0000 Content-Language: en-US To: Akhil Goyal , "dev@dpdk.org" , "olivier.matz@6wind.com" CC: Anoob Joseph , "matan@nvidia.com" , "konstantin.ananyev@intel.com" , "thomas@monjalon.net" , "andrew.rybchenko@oktetlabs.ru" , "rosen.xu@intel.com" , "david.marchand@redhat.com" , "radu.nicolau@intel.com" , Jerin Jacob Kollanukkaran , "stephen@networkplumber.org" , "mdr@ashroe.eu" References: <20220130175935.1947730-1-gakhil@marvell.com> <20220204221334.3551574-1-gakhil@marvell.com> <20220204221334.3551574-3-gakhil@marvell.com> From: Ferruh Yigit Subject: Re: [EXT] Re: [PATCH v4 2/3] ethdev: add mbuf dynfield for incomplete IP reassembly X-User: ferruhy In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0136.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:193::15) To PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 94b5fee4-bf20-4bed-bfca-08d9ea4a1769 X-MS-TrafficTypeDiagnostic: PH0PR11MB5080:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1332; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b5OcxYF9Lk+nWF78rHaczEQ9ZGiYGv7Q+SShwsR9e5+aGRquq7+kloNN5nRFQZXEqhCrfSOhmyp1D+v19cME2vP/e1vN5nd4Cusy5yOULGdpnp5mj/LP8K11n8qmbCXk/YrZEnglzFGCH46P1Ea6LTBbpSH1KAcsj4H25aKnZsKxJss+bJW+nAZOFnkJ3lmydiDM61gTyF1m9CAFMgRXBmRf+oUlb15t2eTURm7tMb8icgN9fFUJGtk0NUVzhaFzIknthoWzIcEYh8CqCd28Egg59yJVUSwR1FXhv4MDFr9BS9i37z0oCJPdnQaD9BSye28v5RxLbaeGlBRJOhCxYIHfCfEHFZ9/VZsbGY7WALJLojZ5UmVfOevPRBppD6mBBnGuvt2lzhDI9HkrYs7Cg9efzHwphki5JQQETauAiPRyYtyd83gqQX0DCYH+mwhVSz/LNQbnIz28BQ4ZK4T2VnVdbJEK9dD++XYb/7r4d37lu0nAEp1wJSFPZJZXhs+6dEipTbzTcDdGFGfHqDodNL2+je6o5/NtiOe90WqbbPoofmVPb1qHKQZYKS+T0XjREXNNBKvv8krhauL6SV2gNf+cfnFm9e73BpYSEb07RkKeybkYPIaIiKas9PMpDGOCXynhT7MqtcrLhdKYQB9vE5kRSagM/98Q4Y4G23RBJDJnhYBgQRUrutpSnYBrJCV+2Skzcg5Y1icvPY3JYN/C4g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5000.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(55236004)(6506007)(54906003)(508600001)(36756003)(7416002)(186003)(26005)(110136005)(86362001)(2906002)(53546011)(316002)(2616005)(31696002)(44832011)(6512007)(4326008)(66946007)(83380400001)(38100700002)(82960400001)(6666004)(8676002)(8936002)(5660300002)(6486002)(66476007)(66556008)(31686004)(45980500001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cXN6Nzljc3BKMmJTbG1jMUhJdEVIMFZvUVJ2L1RuVzFzRjFZeWtWN0NCQmU2?= =?utf-8?B?V2RqOWQxL2xaSmR2UFBnR0pvbklKbWhrcUdHOCtFVXNRRExrTnRNVFFnUmVC?= =?utf-8?B?WUY5Ylk5ZU1JUUtmVUVHNmQvM2NVWjhJV1FVY3hLczJvRVV2eStHWXhMVEZO?= =?utf-8?B?SXdFUldXVlVVdTdvZWhZMG1oQ1Q0ZGtDSzJhTDlGL3hqcXpJTlJDY0N4SEp1?= =?utf-8?B?WkI1VG5YK2llVVp5R00rb0Zxall0U2lxeGMyNzh6NkUwMUhiNUY5bEU1RCtQ?= =?utf-8?B?Qlh1ZktVdDlySU5rTERydHVyQlZJZ3Q0NE5uVXMrTlZNSWk3UnNrYmhnQUxv?= =?utf-8?B?RUtMcFQzUzJNMjFNNHl2TmZTOURtSzR4WUg2ZUNtRDgwWWJ6SE42MWdoOFpk?= =?utf-8?B?cHZtZUFialljQWF1SlV0c3hpSTNzYmFvS29xTmpBUzNNZXlUODZJMWFFK0JN?= =?utf-8?B?c3BYc1VqQjJOVDN5aS83TFR2ZWpKUDFSZUE2OWs5N0QwYXJ0M1J2RjN6UDdF?= =?utf-8?B?NFZQV0QxQ0pLbjREbkRaTVRDZ3dBV0RCVnFVbmdKZitHWXNCZzZYMENsa3Nm?= =?utf-8?B?YVNKTTJwSW5PNWlaVHBLQnhKNDdxVndJZmVLTzFhaFhXQVlTRU9ENXg5VHEw?= =?utf-8?B?T2I4L3VtVUJNVzZaTE9vd1RLU0JPeDdxVThUdTJZUlE4ZHRQRndLOGVDSm9x?= =?utf-8?B?YjZqTVZqc293eFY5UXhvUWFOenFaUkN4VmpBckhSY1BDRUo2VDQ5QTRnNzZH?= =?utf-8?B?SGNyK3B4MUdldUZwT3YxdXVwTnlDdTRnYWR6SWFGWUtVLzhaOE10aVk0RjFI?= =?utf-8?B?VjV0YnRQRGVIekxmN1NWTW9XM3ZwaXRQRGNLQkx6RG9NdGhsTXUxMUJCeGRR?= =?utf-8?B?eTVmbEZTa2VxNTFXTUNhSTg0Q0Q3VmJaVEF1MUNDdUNGRHUraDYwRWxWZWNw?= =?utf-8?B?SGVQbUppZW1xbFpZTVIxZlZyNUVzQ09SVlR1OHk1U1NHZDkzZ2pJVjJ4cFNu?= =?utf-8?B?Q1hrUWZMazhoMHFhekMyZ3JMNlVqclJBdWJHSWsrS0xOdm9hNnA0Zmcra0hm?= =?utf-8?B?UmVDbzhhL1BCNlorT3g1TW82VVZYb3Rod0k1QTRPRHE1SXd4MkRTQjdnMklz?= =?utf-8?B?aHFVUndRZExUZ1Bsek10c0poVWliQ0lWQm1jNmt1RkxJb1hZck5YU3VEZ3dZ?= =?utf-8?B?dW1BV2kxak9UNVlZVzEwazA1cnhiR2VRRDYwdFVJejRCdTJaeUtFVWhSSE9j?= =?utf-8?B?S0lmanQ0LzNqdzkxYmZ2OHZ5OHhiZ3R2bEY3My9NUThyR0NMeWxBZjlPTkFY?= =?utf-8?B?SnpuOFc1UUF2SmFocnFrUGszdnBROHpKdEgwZStaNW9xWEdyZjlIb1NuU0k5?= =?utf-8?B?bnorc21iQ1NrYTZ5Y0dXTW42WWY1MGJINzFpeWVWNGNXWUJNaE5EVUNwMUdm?= =?utf-8?B?eXA5SlI5YVlOK0hmYitmNG1kSTJhWGQ1SFMzTEJTRHlPK0FEb1RMdURQeVNR?= =?utf-8?B?bzN0OUErQkhFczg5VjEwSisvZHJLVW5NWm9MSmdOVjB1MkpjcGtFVXdiK0gr?= =?utf-8?B?ZXZSbEdQTTRQWGhYaTJ5Ump4aDhUd05aVG5GbDN3c3orL0tpLzhQWHByRThw?= =?utf-8?B?V2V0SmhaR1BxYUYrSXJRSnpUS21CNldzWGR6Qm5tZXcrYWZ2SmR2RXZlRHFt?= =?utf-8?B?R09kQmx1QTlrUjZQNFp4RUY4am5UNWVrNmtUTkFHRy9oTmFuM3RjOVhYQ0la?= =?utf-8?B?YURYc2tSbkZxRURSK25kMldlWit6TDJMa3B0TjB1amYzTHY1N1NKVFgzbHcz?= =?utf-8?B?eUlnNktyMG4rZnBlZnpVOGpGc3pMd1d6R21GdUZyc3ZvTzdVU0N5QlhNSVp6?= =?utf-8?B?d0ZidDV0UXROZUtJZmtXWk1XY1RzS3ViWTZlSXZpbS9YU211dGNJaWNRaUEw?= =?utf-8?B?ZnRuYXVzL2lzcWc1MnFMSXpBeldPcFNlOTY2WlZFdy9kTmVYYnFIWDg3emRO?= =?utf-8?B?bGtIRGVIdDJYRmlYd1AzSkRFR2R1eHkzSXQ3WEZkM0JqU1ZGOFNqcW8rdFJI?= =?utf-8?B?VHFONHYvVUtLR0FCVkQybmFiMVFRVzJHUXJNdjhLWFBjclhBT1NVeDVWVnZz?= =?utf-8?B?U05VSWJ6TEptQkVXY0E2WXhMcE1mdjBzTVlVd1JUUHhDMkNES3hxQVZyMUkv?= =?utf-8?Q?MO02k5unCDA6gkFjx6zOOw8=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 94b5fee4-bf20-4bed-bfca-08d9ea4a1769 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5000.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2022 14:56:59.3889 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0KpVtLGZyoGDrP6nTe4TeAvKkFq/7C/xcV9BE9AXrEf0I2aqjoGHVy3jmhHow1uxQmjwjU8Q4vG8eyVy3KuXig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5080 X-OriginatorOrg: intel.com 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 2/7/2022 2:20 PM, Akhil Goyal wrote: >> On 2/4/2022 10:13 PM, Akhil Goyal wrote: >>> Hardware IP reassembly may be incomplete for multiple reasons like >>> reassembly timeout reached, duplicate fragments, etc. >>> To save application cycles to process these packets again, a new >>> mbuf dynflag is added to show that the mbuf received is not >>> reassembled properly. >>> >>> Now if this dynflag is set, application can retrieve corresponding >>> chain of mbufs using mbuf dynfield set by the PMD. Now, it will be >>> up to application to either drop those fragments or wait for more time. >>> >>> Signed-off-by: Akhil Goyal >>> Change-Id: I118847cd6269da7e6313ac4e0d970d790dfef1ff >>> --- >>> lib/ethdev/ethdev_driver.h | 8 ++++++++ >>> lib/ethdev/rte_ethdev.c | 28 ++++++++++++++++++++++++++++ >>> lib/ethdev/rte_ethdev.h | 17 +++++++++++++++++ >>> lib/ethdev/version.map | 1 + >>> lib/mbuf/rte_mbuf_dyn.h | 9 +++++++++ >>> 5 files changed, 63 insertions(+) >>> >>> diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h >>> index 8fe77f283f..6cfb266f7d 100644 >>> --- a/lib/ethdev/ethdev_driver.h >>> +++ b/lib/ethdev/ethdev_driver.h >>> @@ -1707,6 +1707,14 @@ int >>> rte_eth_hairpin_queue_peer_unbind(uint16_t cur_port, uint16_t >> cur_queue, >>> uint32_t direction); >>> >>> +/** >>> + * @internal >>> + * Register mbuf dynamic field and flag for IP reassembly incomplete case. >>> + */ >>> +__rte_internal >>> +int >>> +rte_eth_ip_reass_dynfield_register(int *field_offset, int *flag); >>> + >>> >>> /* >>> * Legacy ethdev API used internally by drivers. >>> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c >>> index 88ca4ce867..48367dbec1 100644 >>> --- a/lib/ethdev/rte_ethdev.c >>> +++ b/lib/ethdev/rte_ethdev.c >>> @@ -6567,6 +6567,34 @@ rte_eth_ip_reassembly_conf_set(uint16_t >> port_id, >>> (*dev->dev_ops->ip_reassembly_conf_set)(dev, conf)); >>> } >>> >>> +int >>> +rte_eth_ip_reass_dynfield_register(int *field_offset, int *flag_offset) >>> +{ >>> + static const struct rte_mbuf_dynfield field_desc = { >>> + .name = RTE_MBUF_DYNFIELD_IP_REASS_NAME, >>> + .size = sizeof(rte_eth_ip_reass_dynfield_t), >>> + .align = __alignof__(rte_eth_ip_reass_dynfield_t), >>> + }; >>> + static const struct rte_mbuf_dynflag ip_reass_dynflag = { >>> + .name = >> RTE_MBUF_DYNFLAG_IP_REASS_INCOMPLETE_NAME, >>> + }; >>> + int offset; >>> + >>> + offset = rte_mbuf_dynfield_register(&field_desc); >>> + if (offset < 0) >>> + return -1; >>> + if (field_offset != NULL) >>> + *field_offset = offset; >>> + >>> + offset = rte_mbuf_dynflag_register(&ip_reass_dynflag); >>> + if (offset < 0) >>> + return -1; >>> + if (flag_offset != NULL) >>> + *flag_offset = offset; >>> + >>> + return 0; >>> +} >>> + >> >> How mandatory is this field for the feature? >> >> If 'rte_eth_ip_reass_dynfield_register()' fails, what PMD should do? >> Should this API called before 'rte_eth_ip_reassembly_capability_get()' and >> if registering dnyfield fails should PMD return feature as not supported? > > Dynfield is added for the error/ incomplete reassembly case. > If the dynfield is not registered, the feature can work well for success scenarios. > Dynfield registration is responsibility of PMD and it is upto the driver to decide > when to set the dynfield. The registration can be done in conf_set() API. > >> >> Can you please describe this dependency, preferable in the >> 'rte_eth_ip_reassembly_capability_get()' doxygen comment? > > Capability get is not a place where the feature is enabled. > Dynfield should be registered only in case the feature is enabled. > I will add following line in conf_set() doxygen comment. > > The PMD should call 'rte_eth_ip_reass_dynfield_register()' when > the feature is enabled and return error if dynfield is not registered. > Dynfield is needed to give packets back to the application in case the > reassembly is not complete. > Can you also clarify what PMD should do related to the ip reassembly feature when registering dynfield fails? Should it keep the feature enabled or disabled? This will also clarify for the application, if application detects that 'RTE_MBUF_DYNFIELD_IP_REASS_NAME' is not registered how it should behave? Ignore it? Fail? Disable ip reassembly? >> >>> RTE_LOG_REGISTER_DEFAULT(rte_eth_dev_logtype, INFO); >>> >>> RTE_INIT(ethdev_init_telemetry) >>> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h >>> index ecc5cd50b9..ce35023c40 100644 >>> --- a/lib/ethdev/rte_ethdev.h >>> +++ b/lib/ethdev/rte_ethdev.h >>> @@ -5292,6 +5292,23 @@ __rte_experimental >>> int rte_eth_ip_reassembly_conf_set(uint16_t port_id, >>> const struct rte_eth_ip_reass_params >> *conf); >>> >>> +/** >>> + * In case of IP reassembly offload failure, ol_flags in mbuf will be >>> + * updated with dynamic flag and packets will be returned without >> alteration. >>> + * The application can retrieve the attached fragments using mbuf >> dynamic field. >>> + */ >>> +typedef struct { >>> + /** >>> + * Next fragment packet. Application should fetch dynamic field of >>> + * each fragment until a NULL is received and nb_frags is 0. >>> + */ >>> + struct rte_mbuf *next_frag; >>> + /** Time spent(in ms) by HW in waiting for further fragments. */ >>> + uint16_t time_spent; >>> + /** Number of more fragments attached in mbuf dynamic fields. */ >>> + uint16_t nb_frags; >>> +} rte_eth_ip_reass_dynfield_t; >>> + >>> >>> #include >>> >>> diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map >>> index e22c102818..d6de8d402e 100644 >>> --- a/lib/ethdev/version.map >>> +++ b/lib/ethdev/version.map >>> @@ -284,6 +284,7 @@ INTERNAL { >>> rte_eth_hairpin_queue_peer_bind; >>> rte_eth_hairpin_queue_peer_unbind; >>> rte_eth_hairpin_queue_peer_update; >>> + rte_eth_ip_reass_dynfield_register; >>> rte_eth_representor_id_get; >>> rte_eth_switch_domain_alloc; >>> rte_eth_switch_domain_free; >>> diff --git a/lib/mbuf/rte_mbuf_dyn.h b/lib/mbuf/rte_mbuf_dyn.h >>> index 29abe8da53..299638513b 100644 >>> --- a/lib/mbuf/rte_mbuf_dyn.h >>> +++ b/lib/mbuf/rte_mbuf_dyn.h >>> @@ -320,6 +320,15 @@ int rte_mbuf_dyn_rx_timestamp_register(int >> *field_offset, uint64_t *rx_flag); >>> */ >>> int rte_mbuf_dyn_tx_timestamp_register(int *field_offset, uint64_t >> *tx_flag); >>> >>> +/** >>> + * For the PMDs which support IP reassembly of packets, PMD will >> updated the >>> + * packet with RTE_MBUF_DYNFLAG_IP_REASS_INCOMPLETE_NAME to >> denote that >>> + * IP reassembly is incomplete and application can retrieve the packets >> back >>> + * using RTE_MBUF_DYNFIELD_IP_REASS_NAME. >>> + */ >>> +#define RTE_MBUF_DYNFIELD_IP_REASS_NAME >> "rte_eth_ip_reass_dynfield" >>> +#define RTE_MBUF_DYNFLAG_IP_REASS_INCOMPLETE_NAME >> "rte_eth_ip_reass_incomplete_dynflag" >>> + >> >> Needs Olivier's comment/ack. > @Olivier: could you please comment on this?