From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A59BC77B75 for ; Mon, 22 May 2023 11:10:54 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 88ABC40EE7; Mon, 22 May 2023 13:10:52 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id E3D0640EE5 for ; Mon, 22 May 2023 13:10:50 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34M92BEC020565; Mon, 22 May 2023 04:10:49 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2100.outbound.protection.outlook.com [104.47.70.100]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3qpwqjw2h2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 May 2023 04:10:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UCeGvaGlOItSQfgWrqzfpJVmWsHW0EqGWmrf6dYQMMXqTymKkVZrIKkbc8NFW9QDpz/+AeOG4U9Wa4mZiR3J/SXGHDdr49Wyr2HK4G6gGv2tfjwTIXU4ak3Bl/mhXtDaNg9fs0ZpBfy0YFB8s0J8uahHiJo86+PsPLpYerYXEgHctH2y1wOEEgBaTfnRadSvImEWnHhjUbNUXpyj1jkbNmFtNE3OdRaGO3sO58g8FIxO3nfZNndFcKosReqQCfWIr/n5jWIFYOo4SkRNHt18dKBGiYkRaQKmOuhneKJWqFsujBS0XU3UJ/uOBVGN2OFilEAuc/OfE9C8Gy00OEMPNQ== 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=hdvvSHYZfLCJ/NF7TV3vRNDM4UxvGosISmOzAjoCmfM=; b=AMIVF6X1rE8zkyUL8fwdJGfnUUeVyHdlSfIpRhw79W19XgI10iGYrfYIViKhG5amdjw/0idlwswIiPrpu/CCwCKjK38tKZRMqzZ7JtbIIOtWjQdHkXIdT95UTb8ZggKMXCEATozODBMYAMtN36gf+FbKm2EUbSYr1vgb0jxU5zOW35BdyEDOVFOX0vmCcHDLKXtL4IKdnl+HSxN2QunzupWOXi2L4KqBWCrOnBCznn1Q+uxTOzz7TKoP20NadCuVISJp+un8NRZD1CI1dpxtti4FD73xnhjWxdD51ZeO2YcvR+U3dqwbLFLCkPNSKQLphSXnuFlHGHiedey+qGOKXA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hdvvSHYZfLCJ/NF7TV3vRNDM4UxvGosISmOzAjoCmfM=; b=Wy8/uJm5Y99VshwJ4Qfwcj4C2gtZ2lrlObzyCDFk0qt6sDegkUtcTKXMXZUcHCPrFk2WU29mQeqBhq63gcWAOfmGHdJYC078DBbWQksk0vvZRyRWnnsPU++WNDyI4llqsqijqrdNCkQs7+h6FYwnVsSLnttUTInXnk+0H+H7Chc= Received: from PH0PR18MB4672.namprd18.prod.outlook.com (2603:10b6:510:c9::16) by SN7PR18MB4013.namprd18.prod.outlook.com (2603:10b6:806:10e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 11:09:49 +0000 Received: from PH0PR18MB4672.namprd18.prod.outlook.com ([fe80::9225:bda3:4faa:a84b]) by PH0PR18MB4672.namprd18.prod.outlook.com ([fe80::9225:bda3:4faa:a84b%4]) with mapi id 15.20.6411.028; Mon, 22 May 2023 11:09:49 +0000 From: Anoob Joseph To: Akhil Goyal , Thomas Monjalon , Jerin Jacob Kollanukkaran , Konstantin Ananyev , Bernard Iremonger CC: Hemant Agrawal , =?iso-8859-1?Q?Mattias_R=F6nnblom?= , Kiran Kumar Kokkilagadda , Volodymyr Fialko , "dev@dpdk.org" , Olivier Matz Subject: RE: [PATCH v2 12/22] pdcp: add control PDU handling Thread-Topic: [PATCH v2 12/22] pdcp: add control PDU handling Thread-Index: AQHZiWlEXt3D9O/5zEiX9auyp+WEH69mHGNg Date: Mon, 22 May 2023 11:09:49 +0000 Message-ID: References: <20221222092522.1628-1-anoobj@marvell.com> <20230414174512.642-1-anoobj@marvell.com> <20230414174512.642-13-anoobj@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-rorf: true x-dg-ref: =?iso-8859-1?Q?PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcYW5vb2JqXG?= =?iso-8859-1?Q?FwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0?= =?iso-8859-1?Q?YmEyOWUzNWJcbXNnc1xtc2ctMjg1OTdmN2EtZjg5MS0xMWVkLTljNTItNG?= =?iso-8859-1?Q?MwMzRmNWY5YjRmXGFtZS10ZXN0XDI4NTk3ZjdiLWY4OTEtMTFlZC05YzUy?= =?iso-8859-1?Q?LTRjMDM0ZjVmOWI0ZmJvZHkudHh0IiBzej0iMTc0NjYiIHQ9IjEzMzI5Mj?= =?iso-8859-1?Q?I3Mzg2NjQ0MjkxMyIgaD0iUk54RmlvdGxUdVpHV042d3dESk4rWHdUek9r?= =?iso-8859-1?Q?PSIgaWQ9IiIgYmw9IjAiIGJvPSIxIiBjaT0iY0FBQUFFUkhVMVJTUlVGTk?= =?iso-8859-1?Q?NnVUFBSHdRQUFDaENCM3JuWXpaQVRDWExvTVhDR0Z1TUpjdWd4Y0lZVzRh?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBQUFBQU1FQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUVBQVFFQkFBQUE4QU1OOHdDQUFRQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFKNEFBQUJoQUdRQVpBQnlBR1VBY3dCekFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQU?= =?iso-8859-1?Q?FHTUFkUUJ6QUhRQWJ3QnRBRjhBY0FCbEFISUFjd0J2QUc0QUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2VBQUFBWXdCMUFI?= =?iso-8859-1?Q?TUFkQUJ2QUcwQVh3QndBR2dBYndCdUFHVUFiZ0IxQUcwQVlnQmxBSElBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQmpBSFVBY3dCMEFHOE?= =?iso-8859-1?Q?FiUUJmQUhNQWN3QnVBRjhBWkFCaEFITUFhQUJmQUhZQU1BQXlBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refone: =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0?= =?iso-8859-1?Q?FBQUdNQWRRQnpBSFFBYndCdEFGOEFjd0J6QUc0QVh3QnJBR1VBZVFCM0FH?= =?iso-8859-1?Q?OEFjZ0JrQUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFZd0Ix?= =?iso-8859-1?Q?QUhNQWRBQnZBRzBBWHdCekFITUFiZ0JmQUc0QWJ3QmtBR1VBYkFCcEFHME?= =?iso-8859-1?Q?FhUUIwQUdVQWNnQmZBSFlBTUFBeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBSjRBQUFCakFIVUFjd0IwQU?= =?iso-8859-1?Q?c4QWJRQmZBSE1BY3dCdUFGOEFjd0J3QUdFQVl3QmxBRjhBZGdBd0FESUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUVBQUFBQUFBQUFBZ0FBQUFBQW5nQUFBR1FBYkFCd0FGOEFjd0JyQUhr?= =?iso-8859-1?Q?QWNBQmxBRjhBWXdCb0FHRUFkQUJmQUcwQVpRQnpBSE1BWVFCbkFHVUFYd0?= =?iso-8859-1?Q?IyQURBQU1nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFB?= =?iso-8859-1?Q?QUFBQUFBQ0FBQUFBQUNlQUFBQVpBQnNBSEFBWHdCekFHd0FZUUJqQUdzQV?= =?iso-8859-1?Q?h3QmpBR2dBWVFCMEFGOEFiUUJsQUhNQWN3QmhBR2NBWlFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reftwo: =?iso-8859-1?Q?QUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJrQUd3QWNBQm?= =?iso-8859-1?Q?ZBSFFBWlFCaEFHMEFjd0JmQUc4QWJnQmxBR1FBY2dCcEFIWUFaUUJmQUdZ?= =?iso-8859-1?Q?QWFRQnNBR1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHVUFiUUJoQUdrQWJBQmZB?= =?iso-8859-1?Q?R0VBWkFCa0FISUFaUUJ6QUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FBQUFBQUFBQUFBQUFBQVFB?= =?iso-8859-1?Q?QUFBQUFBQUFDQUFBQUFBQ2VBQUFBYlFCaEFISUFkZ0JsQUd3QVh3QndBSE?= =?iso-8859-1?Q?lBYndCcUFHVUFZd0IwQUY4QWJnQmhBRzBBWlFCekFGOEFZd0J2QUc0QVpn?= =?iso-8859-1?Q?QnBBR1FBWlFCdUFIUUFhUUJoQUd3QVh3QmhBR3dBYndCdUFHVUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQU?= =?iso-8859-1?Q?FBSUFBQUFBQUo0QUFBQnRBR0VBY2dCMkFHVUFiQUJmQUhBQWNnQnZBR29B?= =?iso-8859-1?Q?WlFCakFIUUFYd0J1QUdFQWJRQmxBSE1BWHdCeUFHVUFjd0IwQUhJQWFRQm?= =?iso-8859-1?Q?pBSFFBWlFCa0FGOEFZUUJzQUc4QWJnQmxBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFB?= =?iso-8859-1?Q?QUFuZ0FBQUcwQVlRQnlBSFlBWlFCc0FGOEFjQUJ5QUc4QWFnQmxBR01BZE?= =?iso-8859-1?Q?FCZkFHNEFZUUJ0QUdVQWN3QmZBSElBWlFCekFIUUFjZ0JwQUdNQWRBQmxB?= =?iso-8859-1?Q?R1FBWHdCb0FHVUFlQUJqQUc4QVpBQmxBSE1BQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQU?= =?iso-8859-1?Q?FiUUJoQUhJQWRnQmxBR3dBYkFCZkFHRUFjZ0J0QUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refthree: =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQU?= =?iso-8859-1?Q?FBQUFJQUFBQUFBSjRBQUFCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBWndCdkFH?= =?iso-8859-1?Q?OEFad0JzQUdVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FB?= =?iso-8859-1?Q?QUFBQW5nQUFBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QndBSElBYndCcUFHVU?= =?iso-8859-1?Q?FZd0IwQUY4QVl3QnZBR1FBWlFCekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUNlQU?= =?iso-8859-1?Q?FBQWJRQmhBSElBZGdCbEFHd0FiQUJmQUhBQWNnQnZBR29BWlFCakFIUUFY?= =?iso-8859-1?Q?d0JqQUc4QVpBQmxBSE1BWHdCa0FHa0FZd0IwQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJ0QUdF?= =?iso-8859-1?Q?QWNnQjJBR1VBYkFCc0FGOEFjQUJ5QUc4QWFnQmxBR01BZEFCZkFHNEFZUU?= =?iso-8859-1?Q?J0QUdVQWN3QmZBR01BYndCdUFHWUFhUUJrQUdVQWJnQjBBR2tBWVFCc0FG?= =?iso-8859-1?Q?OEFiUUJoQUhJQWRnQmxBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHMEFZUUJ5QUhZQV?= =?iso-8859-1?Q?pRQnNBR3dBWHdCd0FISUFid0JxQUdVQVl3QjBBRjhBYmdCaEFHMEFaUUJ6?= =?iso-8859-1?Q?QUY4QVl3QnZBRzRBWmdCcEFHUUFaUUJ1QUhRQWFRQmhBR3dBWHdCdEFHRU?= =?iso-8859-1?Q?FjZ0IyQUdVQWJBQnNBRjhBWVFCdUFHUUFYd0J0QUdrQWNBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reffour: =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2?= =?iso-8859-1?Q?VBQUFBYlFCaEFISUFkZ0JsQUd3QWJBQmZBSEFBY2dCdkFHb0FaUUJqQUhR?= =?iso-8859-1?Q?QVh3QnVBR0VBYlFCbEFITUFYd0JqQUc4QWJnQm1BR2tBWkFCbEFHNEFkQU?= =?iso-8859-1?Q?JwQUdFQWJBQmZBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QnZBSElBWHdCaEFI?= =?iso-8859-1?Q?SUFiUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQnRB?= =?iso-8859-1?Q?R0VBY2dCMkFHVUFiQUJzQUY4QWNBQnlBRzhBYWdCbEFHTUFkQUJmQUc0QV?= =?iso-8859-1?Q?lRQnRBR1VBY3dCZkFHTUFid0J1QUdZQWFRQmtBR1VBYmdCMEFHa0FZUUJz?= =?iso-8859-1?Q?QUY4QWJRQmhBSElBZGdCbEFHd0FiQUJmQUc4QWNnQmZBR2NBYndCdkFHY0?= =?iso-8859-1?Q?FiQUJsQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUcwQVlRQnlBSF?= =?iso-8859-1?Q?lBWlFCc0FHd0FYd0J3QUhJQWJ3QnFBR1VBWXdCMEFGOEFiZ0JoQUcwQVpR?= =?iso-8859-1?Q?QnpBRjhBY2dCbEFITUFkQUJ5QUdrQVl3QjBBR1VBWkFCZkFHMEFZUUJ5QU?= =?iso-8859-1?Q?hZQVpRQnNBR3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFiUUJoQUhJQWRnQmxBR3dB?= =?iso-8859-1?Q?YkFCZkFIQUFjZ0J2QUdvQVpRQmpBSFFBWHdCdUFHRUFiUUJsQUhNQVh3Qn?= =?iso-8859-1?Q?lBR1VBY3dCMEFISUFhUUJqQUhRQVpRQmtBRjhBYlFCaEFISUFkZ0JsQUd3?= =?iso-8859-1?Q?QWJBQmZBRzhBY2dCZkFHRUFjZ0J0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFB?= =?iso-8859-1?Q?QUFBQUFBQUFJQUFBQUFBSjRBQUFCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBZE?= =?iso-8859-1?Q?FCbEFISUFiUUJwQUc0QWRRQnpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQU?= =?iso-8859-1?Q?FBZ0FBQUFBQW5nQUFBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QjNBRzhBY2dC?= =?iso-8859-1?Q?a0FBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reffive: QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUE9Ii8+PC9tZXRhPg== x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR18MB4672:EE_|SN7PR18MB4013:EE_ x-ms-office365-filtering-correlation-id: 8e68cda3-98fe-444f-18c2-08db5ab50f2e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Bu5duNv6slLh8hqTPvBwHDaxq/VvJ3YFvG2tr+H4Y+mg/YALZ9btsnHUr6+2KhgwQFt6+WFQLvAMZ1F5ef7wcljinGP2hLL76TleZcBZPs3dL0scZX+G29sLbLe0SiNA/KciyWkaZVWd4c6AVkGgRU/GAPxyTPHB7tIg8S4rkQrEl+dAlwrn4cpCdZUTCEsISApzU0ZGZ0N7XwKqI4MkzuBzzl2p+t6njqhntH644IhK1GNBBn9Jgg7182E87JyIkD5Q0NIRAfTHU2ioRHkZRSJLxYjYVfQQx95CXNfPT73CDYEgx70v3s+f6UqA5SefsNzn0c56/0i/WdhMLyew0x9EnfXIV/g7yS7PWXpD5lX0kyuwLBUXpdAtChBCg37bTFJhB3ZFneColyeQw6GbEznJbmpVb/Nxr6P74IOFS4h3qTNGWYT/GbjMxx9rv/cy8dy9awC9xsbTXA2D+gESPrpbs0blheg+qOv6r/yxcJP2SNWF+qFIwnz2HQjchTbYEadt7zOvCbPa79N4p0cVUuid6cCPHYlM3m+mOKQS78AOL+d0wLx4zuuIY8aRtfG0XlV0qRqt3FGRYLw3/x6pLsVd5Yw46FDyPvZTmE/WCLiYJUQHXijxNXxwk0YfglAv x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4672.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(39860400002)(136003)(376002)(346002)(366004)(451199021)(6506007)(26005)(53546011)(9686003)(71200400001)(110136005)(7696005)(54906003)(41300700001)(76116006)(66446008)(66946007)(66556008)(66476007)(4326008)(478600001)(64756008)(316002)(8936002)(8676002)(52536014)(5660300002)(86362001)(55016003)(66574015)(83380400001)(33656002)(122000001)(38100700002)(38070700005)(2906002)(186003)(30864003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?MLhZkCTI4p4NAvyR5zy2HZ9q0ie7hoUkEguBm0OgiK7+9PH4yBzGQnb6rf?= =?iso-8859-1?Q?Os49/tZM84YKqs3FcoM6k61ZPRZ+HnBuv1PBm47aOpoCJAhlzsTm5OsNRg?= =?iso-8859-1?Q?zumWRihasCENrMQ0hGH7xIkvKdYu7qMzo3ndrxVo/jBvn5U6GARBzNpt/H?= =?iso-8859-1?Q?wChtO60sB4z2fazLRjxc0X+4JHXm/sN/xwxKVy9p2P/XziGh2TWeVyRrcu?= =?iso-8859-1?Q?QZdJ7qbZ3BEp8WNSLcG4x26c9lUZ/hf7LKtjhlFnkt+dMf7gHvZgbR7YNG?= =?iso-8859-1?Q?pqEzGhtELmYoE588uIvwtssL7uOZr2zsDxAeTO2OnbfcNge84BkKm/BAsx?= =?iso-8859-1?Q?nqJPXX/8o4+VZQ+6lYlVJ5QF/xTE1ZalE854VddqULQkfPuz6QWQ7+dXGq?= =?iso-8859-1?Q?cAaF4elJc8ujSHmU5VpENYOOI4jlvw/G9anBaDE2CTgxrf8CB74mqT+dKX?= =?iso-8859-1?Q?9R0ylR8DrWHyifQ4K0ZQVKYHdJawPXWlQoTosjc5svjclQ+LknfA6hYYKs?= =?iso-8859-1?Q?gBlKyGBf+j0/h4YUuhcJv3U8pQtjcl24zpvszOq8WT0sxEuY+9bKt6e/nN?= =?iso-8859-1?Q?cQ32c9UYHricq2R2+uYD6R4Ll3fJBlwdEjKyRJKvf4XV8AarEPuasEKlv6?= =?iso-8859-1?Q?nKRbSkhCDx1oaSzVZ3JXOaC/XK71Ea6c2gsE7zeaxU+mDfexciVZOoSx8S?= =?iso-8859-1?Q?RaVVyDOP0+XqlC1Lr/Ut2DTFwJ8dBz8dnmI2uMB7h6ZfQw1APzpb6WjpPk?= =?iso-8859-1?Q?kEgtnYkwtI3Q0fQypyrpAqnEMp93a6j0bFCISVUYFpumnuBpCJe6qz3Uye?= =?iso-8859-1?Q?+yohW6fbBrQDDlew45mngf0cOfADB2C1QTDFziKRPE/eNzGmSUd3UBcOAh?= =?iso-8859-1?Q?SQ5xWng9x+WC6zRo/3waaXFnCxSMVoBNK6gNAN3M6XeMWISOYigjeRLNA9?= =?iso-8859-1?Q?9ORvDRPpvb30bQIZPyKpxquyO/2/h58njsDZgxa//WLWlzbYTdi7lJkJb8?= =?iso-8859-1?Q?IFIdF+O8jYYvTAWneZowmHwBVy1g5fV2ZFZULYpZvp5tuFheF6YpvyuMFK?= =?iso-8859-1?Q?Pu+EGe6o4LJfdP4z9En6dXT+3/KkpRQwjUpkYtW1BfJttSp8iiD4MneoI5?= =?iso-8859-1?Q?RfCaH14qZUo+3U56UleQfEgH9wgCzvkZ28Ip8gyO4LIxXv5fFkcLuuAArt?= =?iso-8859-1?Q?X8hpkkuqm0/u3ION9MWfDkQy7gsv+E1IOxJpRtUwnr3dZ+kQ+GZCb9JIFB?= =?iso-8859-1?Q?VzSgkyqz+5RsjBpq3YTEysfyjmPicE6qUmoSVHhpP+L1VLa1N6P7Y6fwxr?= =?iso-8859-1?Q?w2UHFJ54pR+FT+CtxMVh37bfhYo2B1a/pjqVkJuDrvlZwXARvarKARdYO1?= =?iso-8859-1?Q?W7LOAEVN8q4PJxY9sQ3HWcevhQrHJB+yQ4KERMxiBkDmkINcEA7sFO03+o?= =?iso-8859-1?Q?/NHUUnNr1ZCbUtPlfkQ87fwVhSzsQIMjk2mo/iLJ19uGk29X5v49XTvTWW?= =?iso-8859-1?Q?tJ0CfpT/PYi3xf7d3cwHGrZytIh4aaMF/mc0VWYQGw3DROKBjQz5gVmGrd?= =?iso-8859-1?Q?KJNcgS4D3VeQSkJ35Capmj1tTuhSoRq5GrTeoLoKZdOX70SzUwOmx/2Bl0?= =?iso-8859-1?Q?X1ZqoMQgaIxHo=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4672.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e68cda3-98fe-444f-18c2-08db5ab50f2e X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2023 11:09:49.2896 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IfjdZkl2Km5V7tYQ3Nm1ViBsSo+PZCa5mhelPxQKMqHSc6OfKUENuV5O2GFHploAiyGCzBgx5zO2wV2GRJT/iA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR18MB4013 X-Proofpoint-ORIG-GUID: H9k-JjMIV8LflJ3jiEkV1ruhmjiSffoM X-Proofpoint-GUID: H9k-JjMIV8LflJ3jiEkV1ruhmjiSffoM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-22_06,2023-05-22_03,2023-02-09_01 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 Hi Akhil, Please see inline. Thanks, Anoob > -----Original Message----- > From: Akhil Goyal > Sent: Thursday, May 18, 2023 2:45 PM > To: Anoob Joseph ; Thomas Monjalon > ; Jerin Jacob Kollanukkaran ; > Konstantin Ananyev ; Bernard > Iremonger > Cc: Hemant Agrawal ; Mattias R=F6nnblom > ; Kiran Kumar Kokkilagadda > ; Volodymyr Fialko ; > dev@dpdk.org; Olivier Matz > Subject: RE: [PATCH v2 12/22] pdcp: add control PDU handling >=20 > > Subject: [PATCH v2 12/22] pdcp: add control PDU handling > > > > Add control PDU handling and implement status report generation. > > Status report generation works only when RX_DELIV =3D RX_NEXT. > > > > Signed-off-by: Anoob Joseph > > Signed-off-by: Volodymyr Fialko > > --- > > app/test/test_pdcp.c | 1 + >=20 > Separate out test app changes from library changes. [Anoob] Agreed. Will make the change in next version. >=20 > > doc/guides/prog_guide/pdcp_lib.rst | 10 +++++++ > > lib/pdcp/meson.build | 2 ++ > > lib/pdcp/pdcp_cnt.c | 29 ++++++++++++++++++ > > lib/pdcp/pdcp_cnt.h | 14 +++++++++ > > lib/pdcp/pdcp_ctrl_pdu.c | 46 +++++++++++++++++++++++++++++ > > lib/pdcp/pdcp_ctrl_pdu.h | 15 ++++++++++ > > lib/pdcp/pdcp_entity.h | 15 ++++++++-- > > lib/pdcp/pdcp_process.c | 13 +++++++++ > > lib/pdcp/rte_pdcp.c | 47 +++++++++++++++++++++++++++++- > > lib/pdcp/rte_pdcp.h | 31 ++++++++++++++++++++ > > lib/pdcp/version.map | 2 ++ > > 12 files changed, 222 insertions(+), 3 deletions(-) create mode > > 100644 lib/pdcp/pdcp_cnt.c create mode 100644 lib/pdcp/pdcp_cnt.h > > create mode 100644 lib/pdcp/pdcp_ctrl_pdu.c create mode 100644 > > lib/pdcp/pdcp_ctrl_pdu.h > > > > diff --git a/app/test/test_pdcp.c b/app/test/test_pdcp.c index > > fc49947ba2..4ecb4d9572 100644 > > --- a/app/test/test_pdcp.c > > +++ b/app/test/test_pdcp.c > > @@ -415,6 +415,7 @@ create_test_conf_from_index(const int index, > > struct pdcp_test_conf *conf) > > > > conf->entity.sess_mpool =3D ts_params->sess_pool; > > conf->entity.cop_pool =3D ts_params->cop_pool; > > + conf->entity.ctr_pdu_pool =3D ts_params->mbuf_pool; > > conf->entity.pdcp_xfrm.bearer =3D pdcp_test_bearer[index]; > > conf->entity.pdcp_xfrm.en_ordering =3D 0; > > conf->entity.pdcp_xfrm.remove_duplicates =3D 0; diff --git > > a/doc/guides/prog_guide/pdcp_lib.rst > > b/doc/guides/prog_guide/pdcp_lib.rst > > index abd874f2cc..f23360dfc3 100644 > > --- a/doc/guides/prog_guide/pdcp_lib.rst > > +++ b/doc/guides/prog_guide/pdcp_lib.rst > > @@ -67,6 +67,15 @@ Data PDUs are regular packets submitted by upper > > layers for transmission to other end. Such packets would need to be > > ciphered and authenticated based on the entity configuration. > > > > +PDCP packet processing API for control PDU > > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > + > > +Control PDUs are used in PDCP as a communication channel between > > transmitting > > +and receiving entities. When upper layer request for operations such > > +re-establishment, receiving PDCP entity need to prepare a status > > +report and send it to the other end. The API > > +``pdcp_ctrl_pdu_status_gen`` allows application to request the same. >=20 > pdcp_ctrl_pdu_status_gen() - Is this a user visible API? I believe it is = not > exposed. > How can application request that? [Anoob] Quoted wrong API. It should be 'rte_pdcp_control_pdu_create()'. Wil= l have this corrected in next version. >=20 >=20 > > + > > PDCP packet processing API for data PDU > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > @@ -228,6 +237,7 @@ Supported features > > - Uplink & downlink traffic > > - HFN increment > > - IV generation as required per algorithm > > +- Control PDU generation > > > > Supported ciphering algorithms > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > diff --git a/lib/pdcp/meson.build b/lib/pdcp/meson.build index > > 08679b743a..75d476bf6d 100644 > > --- a/lib/pdcp/meson.build > > +++ b/lib/pdcp/meson.build > > @@ -8,7 +8,9 @@ if is_windows > > endif > > > > sources =3D files( > > + 'pdcp_cnt.c', >=20 > pdcp_cnt seems to be something related to count. > And it is not related to this patch probably. [Anoob] 'pdcp_cnt' tracks the sequence number of the received packets etc. = This info is required for generating status report which is one of the cont= rol PDUs supported.=20 >=20 > > 'pdcp_crypto.c', > > + 'pdcp_ctrl_pdu.c', > > 'pdcp_process.c', > > 'rte_pdcp.c', > > ) > > diff --git a/lib/pdcp/pdcp_cnt.c b/lib/pdcp/pdcp_cnt.c new file mode > > 100644 index 0000000000..c9b952184b > > --- /dev/null > > +++ b/lib/pdcp/pdcp_cnt.c > > @@ -0,0 +1,29 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(C) 2023 Marvell. > > + */ > > + > > +#include > > + > > +#include "pdcp_cnt.h" > > +#include "pdcp_entity.h" > > + > > +int > > +pdcp_cnt_ring_create(struct rte_pdcp_entity *en, const struct > > rte_pdcp_entity_conf *conf) > > +{ > > + struct entity_priv_dl_part *en_priv_dl; > > + uint32_t window_sz; > > + > > + if (en =3D=3D NULL || conf =3D=3D NULL) > > + return -EINVAL; > > + > > + if (conf->pdcp_xfrm.pkt_dir =3D=3D RTE_SECURITY_PDCP_UPLINK) > > + return 0; > > + > > + en_priv_dl =3D entity_dl_part_get(en); > > + window_sz =3D pdcp_window_size_get(conf->pdcp_xfrm.sn_size); > > + > > + RTE_SET_USED(window_sz); > > + RTE_SET_USED(en_priv_dl); > > + > > + return 0; > > +} > > diff --git a/lib/pdcp/pdcp_cnt.h b/lib/pdcp/pdcp_cnt.h new file mode > > 100644 index 0000000000..bbda478b55 > > --- /dev/null > > +++ b/lib/pdcp/pdcp_cnt.h > > @@ -0,0 +1,14 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(C) 2023 Marvell. > > + */ > > + > > +#ifndef PDCP_CNT_H > > +#define PDCP_CNT_H > > + > > +#include > > + > > +#include "pdcp_entity.h" > > + > > +int pdcp_cnt_ring_create(struct rte_pdcp_entity *en, const struct > > rte_pdcp_entity_conf *conf); > > + > > +#endif /* PDCP_CNT_H */ > > diff --git a/lib/pdcp/pdcp_ctrl_pdu.c b/lib/pdcp/pdcp_ctrl_pdu.c new > > file mode 100644 index 0000000000..feb05fd863 > > --- /dev/null > > +++ b/lib/pdcp/pdcp_ctrl_pdu.c > > @@ -0,0 +1,46 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(C) 2023 Marvell. > > + */ > > + > > +#include > > +#include > > +#include > > + > > +#include "pdcp_ctrl_pdu.h" > > +#include "pdcp_entity.h" > > + > > +static __rte_always_inline void > > +pdcp_hdr_fill(struct rte_pdcp_up_ctrl_pdu_hdr *pdu_hdr, uint32_t > > +rx_deliv) { > > + pdu_hdr->d_c =3D RTE_PDCP_PDU_TYPE_CTRL; > > + pdu_hdr->pdu_type =3D > RTE_PDCP_CTRL_PDU_TYPE_STATUS_REPORT; > > + pdu_hdr->r =3D 0; > > + pdu_hdr->fmc =3D rte_cpu_to_be_32(rx_deliv); } > > + > > +int > > +pdcp_ctrl_pdu_status_gen(struct entity_priv *en_priv, struct rte_mbuf > > +*m) { > > + struct rte_pdcp_up_ctrl_pdu_hdr *pdu_hdr; > > + uint32_t rx_deliv; > > + int pdu_sz; > > + > > + if (!en_priv->flags.is_status_report_required) > > + return -EINVAL; > > + > > + pdu_sz =3D sizeof(struct rte_pdcp_up_ctrl_pdu_hdr); > > + > > + rx_deliv =3D en_priv->state.rx_deliv; > > + > > + /* Zero missing PDUs - status report contains only FMC */ > > + if (rx_deliv >=3D en_priv->state.rx_next) { > > + pdu_hdr =3D (struct rte_pdcp_up_ctrl_pdu_hdr > > *)rte_pktmbuf_append(m, pdu_sz); > > + if (pdu_hdr =3D=3D NULL) > > + return -ENOMEM; > > + pdcp_hdr_fill(pdu_hdr, rx_deliv); > > + > > + return 0; > > + } > > + > > + return -ENOTSUP; > > +} > > diff --git a/lib/pdcp/pdcp_ctrl_pdu.h b/lib/pdcp/pdcp_ctrl_pdu.h new > > file mode 100644 index 0000000000..a2424fbd10 > > --- /dev/null > > +++ b/lib/pdcp/pdcp_ctrl_pdu.h > > @@ -0,0 +1,15 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(C) 2023 Marvell. > > + */ > > + > > +#ifndef PDCP_CTRL_PDU_H > > +#define PDCP_CTRL_PDU_H > > + > > +#include > > + > > +#include "pdcp_entity.h" > > + > > +int > > +pdcp_ctrl_pdu_status_gen(struct entity_priv *en_priv, struct rte_mbuf > > +*m); > > + > > +#endif /* PDCP_CTRL_PDU_H */ > > diff --git a/lib/pdcp/pdcp_entity.h b/lib/pdcp/pdcp_entity.h index > > 3108795977..7b7e7f69dd 100644 > > --- a/lib/pdcp/pdcp_entity.h > > +++ b/lib/pdcp/pdcp_entity.h > > @@ -109,6 +109,13 @@ union cipher_iv_partial { > > uint64_t u64[2]; > > }; > > > > +struct pdcp_cnt_bitmap { > > + /** Number of entries that can be stored. */ > > + uint32_t size; > > + /** Bitmap of the count values already received.*/ > > + struct rte_bitmap *bmp; > > +}; >=20 > This pdcp_cnt_bitmap is not related to control PDU. Right? > I believe the patch split is not proper here. [Anoob] Bitmap is required for generating status report. With this patch, w= e are adding support for control PDU handling and adding basic support for = status report generation.=20 >=20 > > + > > /* > > * Layout of PDCP entity: [rte_pdcp_entity] [entity_priv] [entity_dl/u= l] > > */ > > @@ -136,9 +143,13 @@ struct entity_priv { > > uint64_t is_ul_entity : 1; > > /** Is NULL auth. */ > > uint64_t is_null_auth : 1; > > + /** Is status report required.*/ > > + uint64_t is_status_report_required : 1; > > } flags; > > /** Crypto op pool. */ > > struct rte_mempool *cop_pool; > > + /** Control PDU pool. */ > > + struct rte_mempool *ctr_pdu_pool; > > /** PDCP header size. */ > > uint8_t hdr_sz; > > /** PDCP AAD size. For AES-CMAC, additional message is prepended > for > > the operation. */ @@ -148,8 +159,8 @@ struct entity_priv { }; > > > > struct entity_priv_dl_part { > > - /* NOTE: when in-order-delivery is supported, post PDCP packets > would > > need to cached. */ > > - uint8_t dummy; > > + /** PDCP would need to track the count values that are already > > received.*/ > > + struct pdcp_cnt_bitmap bitmap; > > }; > > > > struct entity_priv_ul_part { > > diff --git a/lib/pdcp/pdcp_process.c b/lib/pdcp/pdcp_process.c index > > 9c1a5e0669..267b3b7723 100644 > > --- a/lib/pdcp/pdcp_process.c > > +++ b/lib/pdcp/pdcp_process.c > > @@ -1157,6 +1157,19 @@ pdcp_entity_priv_populate(struct entity_priv > > *en_priv, const struct rte_pdcp_ent > > if (a_xfrm !=3D NULL && a_xfrm->auth.algo =3D=3D > > RTE_CRYPTO_AUTH_NULL) > > en_priv->flags.is_null_auth =3D 1; > > > > + /** > > + * flags.is_status_report_required > > + * > > + * Indicate whether status report is required. > > + */ > > + if (conf->status_report_required) { > > + /** Status report is required only for DL entities. */ > > + if (conf->pdcp_xfrm.pkt_dir !=3D > > RTE_SECURITY_PDCP_DOWNLINK) > > + return -EINVAL; > > + > > + en_priv->flags.is_status_report_required =3D 1; > > + } > > + > > /** > > * hdr_sz > > * > > diff --git a/lib/pdcp/rte_pdcp.c b/lib/pdcp/rte_pdcp.c index > > 8914548dbd..5cd3f5ca31 100644 > > --- a/lib/pdcp/rte_pdcp.c > > +++ b/lib/pdcp/rte_pdcp.c > > @@ -6,7 +6,9 @@ > > #include > > #include > > > > +#include "pdcp_cnt.h" > > #include "pdcp_crypto.h" > > +#include "pdcp_ctrl_pdu.h" > > #include "pdcp_entity.h" > > #include "pdcp_process.h" > > > > @@ -34,7 +36,7 @@ rte_pdcp_entity_establish(const struct > > rte_pdcp_entity_conf *conf) > > struct entity_priv *en_priv; > > int ret, entity_size; > > > > - if (conf =3D=3D NULL || conf->cop_pool =3D=3D NULL) { > > + if (conf =3D=3D NULL || conf->cop_pool =3D=3D NULL || conf->ctr_pdu_p= ool > =3D=3D > > NULL) { > > rte_errno =3D -EINVAL; > > return NULL; > > } > > @@ -79,6 +81,7 @@ rte_pdcp_entity_establish(const struct > > rte_pdcp_entity_conf *conf) > > en_priv->state.rx_deliv =3D conf->count; > > en_priv->state.tx_next =3D conf->count; > > en_priv->cop_pool =3D conf->cop_pool; > > + en_priv->ctr_pdu_pool =3D conf->ctr_pdu_pool; > > > > /* Setup crypto session */ > > ret =3D pdcp_crypto_sess_create(entity, conf); @@ -89,6 +92,10 @@ > > rte_pdcp_entity_establish(const struct rte_pdcp_entity_conf *conf) > > if (ret) > > goto crypto_sess_destroy; > > > > + ret =3D pdcp_cnt_ring_create(entity, conf); > > + if (ret) > > + goto crypto_sess_destroy; > > + > > return entity; > > > > crypto_sess_destroy: > > @@ -136,3 +143,41 @@ rte_pdcp_entity_suspend(struct rte_pdcp_entity > > *pdcp_entity, > > > > return 0; > > } > > + > > +struct rte_mbuf * > > +rte_pdcp_control_pdu_create(struct rte_pdcp_entity *pdcp_entity, > > + enum rte_pdcp_ctrl_pdu_type type) { > > + struct entity_priv *en_priv; > > + struct rte_mbuf *m; > > + int ret; > > + > > + if (pdcp_entity =3D=3D NULL) { > > + rte_errno =3D -EINVAL; >=20 > rte_errno should be positive values. >=20 > > + return NULL; > > + } > > + > > + en_priv =3D entity_priv_get(pdcp_entity); > > + > > + m =3D rte_pktmbuf_alloc(en_priv->ctr_pdu_pool); > > + if (m =3D=3D NULL) { > > + rte_errno =3D -ENOMEM; > > + return NULL; > > + } > > + > > + switch (type) { > > + case RTE_PDCP_CTRL_PDU_TYPE_STATUS_REPORT: > > + ret =3D pdcp_ctrl_pdu_status_gen(en_priv, m); > > + break; > > + default: > > + ret =3D -ENOTSUP; > > + } > > + > > + if (ret) { > > + rte_pktmbuf_free(m); > > + rte_errno =3D ret; > > + return NULL; > > + } > > + > > + return m; > > +} > > diff --git a/lib/pdcp/rte_pdcp.h b/lib/pdcp/rte_pdcp.h index > > 54f88e3fd3..d2db25d7d9 100644 > > --- a/lib/pdcp/rte_pdcp.h > > +++ b/lib/pdcp/rte_pdcp.h > > @@ -16,6 +16,7 @@ > > #include > > #include > > #include > > +#include > > #include > > > > #ifdef __cplusplus > > @@ -78,6 +79,8 @@ struct rte_pdcp_entity_conf { > > struct rte_mempool *sess_mpool; > > /** Crypto op pool.*/ > > struct rte_mempool *cop_pool; > > + /** Mbuf pool to be used for allocating control PDUs.*/ > > + struct rte_mempool *ctr_pdu_pool; >=20 > Please use same prefix for all control pdu stuff. > I see cnt, ctr, ctrl, control is being used. > I think "control" for top level API and "ctrl" for parameters should be f= ine. [Anoob] Agreed. Will make this change in next version. >=20 > > /** > > * 32 bit count value (HFN + SN) to be used for the first packet. > > * pdcp_xfrm.hfn would be ignored as the HFN would be derived > from > > this value. > > @@ -91,6 +94,15 @@ struct rte_pdcp_entity_conf { > > uint8_t dev_id; > > /** Reverse direction during IV generation. Can be used to simulate > > UE crypto processing.*/ > > bool reverse_iv_direction; > > + /** > > + * Status report required (specified in TS 38.331). > > + * > > + * If PDCP entity is configured to send a PDCP status report, the > > +upper > > layer application > > + * may request a receiving PDCP entity to generate a PDCP status > > +report > > using > > + * ``rte_pdcp_ctrl_pdu_create``. In addition, PDCP status reports > > +may be > > generated during > > + * operations such as entity re-establishment. > > + */ > > + bool status_report_required; >=20 > rte_pdcp_ctrl_pdu_create -> rte_pdcp_control_pdu_create >=20 > Please specify that a PDU will be generated for status report. > Otherwise, it seems some structure would be returned for status report Bu= t > there is no mention of that. This will avoid confusion. [Anoob] Agreed. Will update documentation of rte_pdcp_control_pdu_create() = to denote that it is lib PDCP which would allocate the packet. >=20 >=20 > > }; > > /* >8 End of structure rte_pdcp_entity_conf. */ > > > > @@ -169,6 +181,25 @@ int > > rte_pdcp_entity_suspend(struct rte_pdcp_entity *pdcp_entity, > > struct rte_mbuf *out_mb[]); > > > > +/** > > + * @warning > > + * @b EXPERIMENTAL: this API may change without prior notice > > + * > > + * Create control PDU packet of the `type` specified. > > + * > > + * @param pdcp_entity > > + * Pointer to the PDCP entity for which the control PDU need to be > generated. > > + * @param type > > + * Type of control PDU to be generated. > > + * @return > > + * - Control PDU generated, in case of success. > > + * - NULL in case of failure. rte_errno will be set to error code. > > + */ > > +__rte_experimental > > +struct rte_mbuf * > > +rte_pdcp_control_pdu_create(struct rte_pdcp_entity *pdcp_entity, > > + enum rte_pdcp_ctrl_pdu_type type); > > + > > /** > > * @warning > > * @b EXPERIMENTAL: this API may change without prior notice diff > > --git a/lib/pdcp/version.map b/lib/pdcp/version.map index > > f9ff30600a..d0cf338e1f 100644 > > --- a/lib/pdcp/version.map > > +++ b/lib/pdcp/version.map > > @@ -6,6 +6,8 @@ EXPERIMENTAL { > > rte_pdcp_entity_release; > > rte_pdcp_entity_suspend; > > > > + rte_pdcp_control_pdu_create; > > + > > rte_pdcp_pkt_post_process; > > rte_pdcp_pkt_pre_process; > > > > -- > > 2.25.1