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 C51FAA0524 for ; Mon, 31 May 2021 03:52:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4599940040; Mon, 31 May 2021 03:52:13 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id 8722B4003E for ; Mon, 31 May 2021 03:52:11 +0200 (CEST) IronPort-SDR: VzaRUX2HoBtT2/6fLNJbhphvUf50VD08u9YL2g/gFqDY7LjTi8iYXIktBif1EdPv+WGeYAy7S6 klWoRIgrWifw== X-IronPort-AV: E=McAfee;i="6200,9189,10000"; a="190390314" X-IronPort-AV: E=Sophos;i="5.83,236,1616482800"; d="scan'208,217";a="190390314" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2021 18:52:08 -0700 IronPort-SDR: /kifo5FPBa293fgUQSzL39PZU6TPm1wEmwln3WdQM/MKZ2sf6q/TxTXP52ym3ZX7W69HYSQpcP wBcgPYtsX+zQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,236,1616482800"; d="scan'208,217";a="446417960" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga008.fm.intel.com with ESMTP; 30 May 2021 18:52:08 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Sun, 30 May 2021 18:52:07 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Sun, 30 May 2021 18:52:07 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Sun, 30 May 2021 18:52:07 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.46) 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.2242.4; Sun, 30 May 2021 18:52:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LH34XNgw5bhBfykJBm91UUSDlsH1I4B9BxmGj6YSRx1uke73Y2awwqZlE/97K0LX9G+AwOHQnkFvVkAfxOgfo5NzHx/39+wMQyt5nUwPxlYAq5hhkaetOhdcz86Opcd+SFKQeYDxLoOrXnma04luoelx8V1Flscd/qplQALAf8dca/TBVmkRxPgXp+M57bsQiMTgE/f0gL2Xi1S4UC7Y4CDRmZnamtmk5CdbObifc6emG9mJ5DHxq1SIF7ebUFRnVshYPcA2xaxuUqeKgLeb1mAE4KU1edTmnUWDB1Ya2TIUbZsiMoX+4RleMZJ3/lsMHa4BToCPxB8/NKdLZaRPUw== 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-SenderADCheck; bh=ozeA+1SKzt9KBU6KXaVEk5s25YZpfKTcGWQ2Q/JBphk=; b=GTDRnoQyju93dgWnNE9sB2L8HQmOteAMxlwF/XxMwm5ySHPsMabUbqwz/ir81OvKyZxV4PIjOBQdbuf3azvy8uyOR6EmNZ33n8A6riARbBqYwbqRhxkV9u2D+RrK+8Yz1IjAwMzx/QvqfeXdFpP935I46kTOyXKGNxRhAu53YgF6VMUEqCYrGed8wta+4nWT/hq2jhXdWFfYOzlyN7clVYPsQ3G0eRNSTbcg5sff2hUruLj9oCsBz9ORL+SCbmSveUnVsKfQ7Cf4e/ynU1xyeNe2cDYfSyj3uuP0f6thmaGXAta8z0sNX3F2fPB5ZLRhFykL0Mlack781kWVhdyzPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ozeA+1SKzt9KBU6KXaVEk5s25YZpfKTcGWQ2Q/JBphk=; b=EMmr6J7LzOHGKUp/V9I7bM0tUXe2GHJ1bGpQYYi9c9FnpaJfmmolC0ojSZ+7Xbb7i+2Ax9OsK7dQx0W0YTz0WZargqPbPiyc6DQQ2IPbTUuZKrC1dwYzcYIO6agrZJ02jBNDsjC/6Hij4+jgtEu/AvmgxWI9mHRybMLlVb+XPLQ= Received: from DM6PR11MB3898.namprd11.prod.outlook.com (2603:10b6:5:19f::12) by DM5PR11MB1625.namprd11.prod.outlook.com (2603:10b6:4:b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Mon, 31 May 2021 01:52:05 +0000 Received: from DM6PR11MB3898.namprd11.prod.outlook.com ([fe80::d4ce:3f62:603d:e449]) by DM6PR11MB3898.namprd11.prod.outlook.com ([fe80::d4ce:3f62:603d:e449%6]) with mapi id 15.20.4173.030; Mon, 31 May 2021 01:52:05 +0000 From: "Zhang, AlvinX" To: Vishal Mohan , "Xing, Beilei" , "users@dpdk.org" CC: "Yu, PingX" , "Guo, Junfeng" , "Yang, Qiming" Thread-Topic: DPDK 20.11 - i40e 2 tuple RSS configuration Thread-Index: AddSy0gxBxzhOB0RTnKC+Q+4cbVpkQAACXFwAAEFKeAAAnFFYAAhnfiQAAs3nHAABBQJwABwaZ2QABguQCA= Date: Mon, 31 May 2021 01:52:05 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: tatacommunications.com; dkim=none (message not signed) header.d=none; tatacommunications.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.53] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 26d14ce2-4e10-41bd-ba8d-08d923d6b174 x-ms-traffictypediagnostic: DM5PR11MB1625: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tpGWBdCI25aB0z0cVdBf9kmSysCPkkUJAhCdjwgamc4uUyfZ+JiVdZtHTSQohmFHDyZpZHA9p2273hIHCkx+/5YSyZ5Nejs1MvC+3zBwioWagwZ5Kb5B+lY/B+fp/0Bmlm9JOtrRD8U575Bz5jrzFKyUzeK2V+fpjYjL/kyCDg1oYiFty8mm98JUCS0+GxsibsKFTGW0IVxwnIcF9/SEFcD+MP67P0Q3oQBxOx33dvAz5YHMF3KoHfY01Hdd8PBmw8Zomt/4gUmpZSNUWZ3yQwNiAjguW2iKzG8I2cUFiYMBdEoIcS5vWAd+BH3YnFR31pxv7L3cEx2qFKiW461arKhDw1qvXfrlYzUfldSQiOwkIRgMk9CjoXq6YBydBT8E9ncIpBH3Zfdochm5Y6hsOLodbXA0A8okrRsOfhnm/Nk4yfkniTd4P1ngF6g9Jqc4vJkvGsmQmUgBkAv9Y0I04HsoeqDloE1fqTF9pSD5+jp9Q8eW77+QNVv8+q4NcNyyiPHLguVZ3UzNVAT04Z+hcR18ELTozif3/Ji2K9zk5/Agu8Q6nW9+48SvIbr4NG2WdpKGdFNHc3qhkThuNWBFDZkIosOShybwLFtc3Z6tXFU= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB3898.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(136003)(346002)(396003)(366004)(376002)(26005)(9686003)(52536014)(55016002)(33656002)(83380400001)(7696005)(186003)(2906002)(71200400001)(110136005)(6506007)(53546011)(54906003)(76116006)(64756008)(66476007)(66446008)(66556008)(478600001)(8936002)(66946007)(5660300002)(8676002)(86362001)(316002)(4326008)(122000001)(107886003)(38100700002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?tef7XZZXhEGE4aWfkqEWgKJln7YOdC/099Vw6kNk5ylnr9Y6EtH9ORphzz2f?= =?us-ascii?Q?DqVxLivkeSgIg9F/VVB0TRvjrO3QakP0fmPMZdiZ7Vu6QAmK3w6IhKBvyqd/?= =?us-ascii?Q?ISKnuayurcgQXUEvoRDv+Q2NiZsZAm472lTTB6pU7qJ7gpcm73kGIjyY+sVQ?= =?us-ascii?Q?vrKJAeQj0k6SsFl7azs9G+XBNj97dZFv5UE6mCD63eAe0dGRwgiKJFV3GijB?= =?us-ascii?Q?wD+M4Yn6kM7CC/+2LRiADw+//qF5S4Cd0mvWxiHrBRrgyCP03mqczWg+dcqb?= =?us-ascii?Q?er9f7iteQkIRg002LlM21KFGqkHzCCdEN6TM+Jixu0ZW4mF47zIKoOwz0iRB?= =?us-ascii?Q?tjZDQ+uL3TSSx60qoQtKnIZ31HC1b7G2cdyz9n6yCmZO8rdZJ6yRbkdq8dA7?= =?us-ascii?Q?pGgUbjXYDCMPOggAIUZGwUm2eKq81ah32/4z+CU1K1bKpumuqJ4WXhY53/QY?= =?us-ascii?Q?dSSHrHzLZbsLpQqYn8h9dKESl+s871iwqBoS3PrCyp/wu8O/yZs9YOxCeqv1?= =?us-ascii?Q?LS3HQv1jOHrYvnJX1oi5KJN3lS0zHjEtOIOw7sHrWtPHpXEsDl3O+8uPWOtV?= =?us-ascii?Q?gn8jRk9cVfDHB4pqxRSLKuF/CmDXJTyymzUoqjbSXKvd8lMJeFqv+kbjvTXJ?= =?us-ascii?Q?kmFQQQgXgZYPnmkcNv4kjUrC4KJAmzdGKyLbj2JP9AeeiQ9hJUSAsX69BF9v?= =?us-ascii?Q?Jcl8H2M3j4/M25jXc/DGxlFE7fT4nuGFkxdxRvvun8x8MbdK5oM6SdDvst/Y?= =?us-ascii?Q?rtBCsQ3TqVD+Wv6x7fO/wJ22c97Y2u94vQpmpGCFKNxIcfMjzyfOpAUoT+QI?= =?us-ascii?Q?brnTxBXDvSZNUuFDatUtgBFTDaCtIjiRCGqchqMxjQbVh94eAcLeug/m8FnC?= =?us-ascii?Q?4eOsaZhO+FTK+z3xHzw+6u2AuKiSb0Rte7V/RoxWl11yr6zMOQACDFd3qRPL?= =?us-ascii?Q?/HcdwGQ/1qyf2CGXosP7gyJp37EtWnScuV38jD4NOItyQl1KmG0M7cocWh/q?= =?us-ascii?Q?lTztS0V6M1O7K9IpkUwJxxWbGAQq4lIAaFfF/qfDtQNbFaRMPTc3QDzE8BNK?= =?us-ascii?Q?iUt62sly6hiE2svC5++oas9rTbUoZT/9iZy3mRvNFnNTxyYrq6qLR7zaNCFl?= =?us-ascii?Q?FYsI0C2i0dRmKjbEjkZ1LmtLsc1XJZsEqIx6gNijaliMJLbsmKUGaLM1vlze?= =?us-ascii?Q?BjjWXICxZGxr/7PCrol1cLOQerSjpHKlHnbZxC5Kgm7WCGlv6M3hm793wAFD?= =?us-ascii?Q?QrFgiHaOR/POaEYxLTu6bH/Wi91JNP4++IXpDnfofcFYQsPVYX1uuGhZOju6?= =?us-ascii?Q?y/0bP7d54hXw+9VCUAJNYzCO?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3898.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26d14ce2-4e10-41bd-ba8d-08d923d6b174 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2021 01:52:05.5707 (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: 6IVgPj7Tb6Qqsuf1S/+cpPatq0vdNUxqJO28J4L+Kt5dt7Jbl7zh1spYxlscI+yGesur3MN/amUPLnBjY75n3A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1625 X-OriginatorOrg: intel.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [dpdk-users] DPDK 20.11 - i40e 2 tuple RSS configuration X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org Sender: "users" Hi Mohan, You can use this flow: flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4= -tcp l3-src-only l3-dst-only end queues end / end BRs, Alvin Zhang From: Vishal Mohan Sent: Sunday, May 30, 2021 10:23 PM To: Zhang, AlvinX ; Xing, Beilei ; users@dpdk.org Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration Hi Alvin and Beilei, I was able to implement 1 tuple for all the flows after not defining .queue= and .queue_num in struct rte_flow_action_rss. Im still trying to do 2 tup= le (src and dst) at the same level which seems not possible by the document= ations. Any suggestions to address that ? Thank you for the inputs. Regards, Vishal Mohan From: Vishal Mohan Sent: 28 May 2021 02:18 PM To: Zhang, AlvinX >; = Xing, Beilei >; users@d= pdk.org Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration Hi Alvin, Thanks for your effort in verifying. As mentioned below I was able to achie= ve the same behaviour as below but not when I do it manually using rte_flow= apis. Can you please take a look at the code snippet in the trail mail to = point me if I'm missing anything. Thanks & Regards, Vishal Mohan From: Zhang, AlvinX > Sent: 28 May 2021 12:27 PM To: Xing, Beilei >; Vis= hal Mohan >; users@dpdk.org Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration Hi Vishal Mohan We have tried based on commit b1d36cf828771e28eb0130b59dcf606c2a0bc94d(vers= ion: 20.11.0) 0000:81:00.0 'Ethernet Controller XXV710 for 25GbE SFP28 158b' drv=3Dvfio-p= ci unused=3Di40e ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 4 -a 0000:81:00.0= -- -i --rxq=3D64 --txq=3D64 --port-topology=3Dloop flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4= -tcp l3-src-only end queues end / end packet=3D[Ether()/IP(dst=3D"192.168.1.1", src=3D"192.168.0.2")/TCP(sport=3D= 22,dport=3D23)/("X"*480) -->RSS hash =3D 0x6a12e180 packet=3D[Ether()/IP(dst=3D"192.168.1.2", src=3D"192.168.0.2")/TCP(sport=3D= 22,dport=3D23)/("X"*480) -->RSS hash =3D 0x6a12e180 packet=3D[Ether()/IP(dst=3D"192.168.1.2", src=3D"192.168.0.2")/TCP(sport=3D= 22,dport=3D23)/("X"*480) -->RSS hash =3D 0x6a12e180 packet=3D[Ether()/IP(dst=3D"192.169.1.2", src=3D"192.16.0.2")/TCP(sport=3D2= 2,dport=3D23)/("X"*480) -->RSS hash =3D 0xead3c21e packet=3D[Ether()/IP(dst=3D"192.169.1.2", src=3D"192.16.0.2")/TCP(sport=3D2= 2,dport=3D23)/("X"*480) -->RSS hash =3D 0xead3c21e packet=3D[Ether()/IP(dst=3D"192.169.1.2", src=3D"192.16.0.2")/TCP(sport=3D2= 2,dport=3D230)/("X"*480) -->RSS hash =3D 0xead3c21e packet=3D[Ether()/IP(dst=3D"192.169.1.2", src=3D"192.16.0.2")/TCP(sport=3D2= 02,dport=3D23)/("X"*480) -->RSS hash =3D 0xead3c21e Is this you expected? BRs, Alvin Zhang From: Xing, Beilei > Sent: Friday, May 28, 2021 9:24 AM To: Vishal Mohan >; users@dpdk.org; Zhang, Alvi= nX > Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration + Alvin. Could you please help on it? Thanks. BR, Beilei From: Vishal Mohan > Sent: Thursday, May 27, 2021 5:45 PM To: Xing, Beilei >; use= rs@dpdk.org Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration Hi Beilei, Thanks for the pointer. By using l3-src-only, I was able to run testpmd on = 1 tuple mode. But no success when configured manually. Please find the snip= pet below of my rte_eth_conf and flow conf for your kind perusal: static struct rte_eth_conf port_conf_default =3D { .rxmode =3D { .mq_mode =3D ETH_MQ_RX_RSS, }, .rx_adv_conf =3D { .rss_conf =3D { .rss_key =3D NULL, .rss_key_len =3D 40, .rss_hf =3D ETH_RSS_NONFRAG_IPV4_UDP, }, } }; struct rte_flow_item pattern[] =3D { [0] =3D { .type =3D RTE_FLOW_ITEM_TYPE_ETH, }, [1] =3D { .type =3D RTE_FLOW_ITEM_TYPE_IPV4, }, [2] =3D { .type =3D RTE_FLOW_ITEM_TYPE_UDP, }, [3] =3D { .type =3D RTE_FLOW_ITEM_TYPE_END, } }; struct rte_flow_action_rss action_rss =3D { .types =3D ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY, .queue_num =3D 10, .queue =3D queue_ids, }; struct rte_flow_action action[] =3D { [0] =3D { .type =3D RTE_FLOW_ACTION_TYPE_RSS, .conf =3D &action_rss }, [1] =3D { .type =3D RTE_FLOW_ACTION_TYPE_END, } }; struct rte_flow_attr attr =3D { .egress =3D 0, .ingress =3D 1 }; struct rte_flow_error err; retval =3D rte_flow_validate(portid, &attr, pattern, action, &err); printf("retval %d %d\n",retval,-ENOTSUP); if(!retval){ struct rte_flow *flow =3D rte_flow_create(portid, &attr, pattern, a= ction, &err); } The above given flow validates and adds successfully but no effect on RSS h= ashing. Also I did not set .spec and .mask for patterns assuming ETH_RSS_L3= _SRC_ONLY will take care of the fields looked into. Can you please point out if im missing anything here ? Thanks & Regards, Vishal Mohan -----Original Message----- From: Xing, Beilei > Sent: 27 May 2021 01:42 PM To: Vishal Mohan >; users@dpdk.org Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration CAUTION: This email originated from outside of the organization. Do not cli= ck links or open attachments unless you recognize the sender and know the c= ontent is safe. Hi, I remember there's no legacy API rte_eth_dev_filter_ctrl() supported in 20= .11. Please refer to RSS Flow part in i40e.rst: Enable hash and set input set for ipv4-tcp. testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \ actions rss types ipv4-tcp l3-src-only end queues end / end BR, Beilei > -----Original Message----- > From: users On Behalf Of Vishal Mohan > Sent: Thursday, May 27, 2021 3:40 PM > To: mailto:users@dpdk.org > Subject: [dpdk-users] DPDK 20.11 - i40e 2 tuple RSS configuration > > I'm trying to implement RSS with 2 tuple (src ip, dst ip) hashing with > X710 - quad port in DPDK 20.11 with no success. I was able to > implement the same in DPDK 17.11 with a combination of RSS flags > given below and > rte_eth_dev_filter_ctrl(): > > .rss_hf =3D (ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_OTHER | > ETH_RSS_FRAG_IPV4 | ETH_RSS_NONFRAG_IPV4_UDP | > ETH_RSS_NONFRAG_IPV4_TCP) > > and selecting input fields as dst and src ip for every rss_hf flag > using rte_eth_dev_filter_ctrl(). > > In DPDK 20.11, I believe there is no explicit usage of using > rte_eth_dev_filter_ctrl() instead we can configure the hashing with > the generic rte_flow api. I did configure a flow validate and create > the same, but the hashing is not working as expected. Without flags > ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_NONFRAG_IPV4_TCP no hashing takes > place and with those flags included in .rss_hf, 5 tuple hashing takes > place. > > When using rte_flow api, any flags given in rte_flow_action_rss.types > has no effect on the final RSS hash result. Also the RSS hashing in > the given testpmd isn't working when it is configured in "ip" (2 tuple) m= ode. > > Any inputs for configuring RSS hashing for 2 tuple is much appreciated. > > > Thanks & Regards, > Vishal Mohan