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 0EEB0A0544; Fri, 2 Sep 2022 21:41:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CF73740693; Fri, 2 Sep 2022 21:41:03 +0200 (CEST) Received: from na01-obe.outbound.protection.outlook.com (mail-eastus2azon11021019.outbound.protection.outlook.com [52.101.57.19]) by mails.dpdk.org (Postfix) with ESMTP id 3AD8B40685 for ; Fri, 2 Sep 2022 21:41:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PWhRVbrouy8iFbI1D/EyS75lVabU701q68aaa7JzRnxZ+dDvxz+DByVyowyeIFop7Qpm0nz8EUf4qEv7dQr7dK9EqiK1kkupNqRfWUp+4yxZcXGOXRZLaVyQWy03tE5tU/LGVb64te0PzGdDfjGYVHTYYP6ng7N2uXQffBufoV1cIoqQWQAAR4nn0UhYY7LDjD4SdcYXhDqnoDYn1Ie59it/Xhhz7JEbVRR0i0lj9a4f+AC40sRDgNC+Z+XlI5csAgTBfSnSoC8nv9GdsTjKBfTvT4otQyHYF19Mchm10MuzzQFEHMwTht+TK5+mSQKnTcSNKKNufqtL3O2vGA511A== 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=ZJvZcEKnkqFGbzLBkkfb+EnA5anXFzwTSMEA/ZGvD/Q=; b=l77urYJFYUKe/647us8Dmse3VyyPJlm7FqoQiED6jR/fZysPpODnSveLTJ1VL/w6h9B1RTz+Yw2CPkHQIEymebmtiuNVnKDwHGC0MupB/kOk9tVEZsHDmq2cMG4A9yNE8gGsW2YYDvpS+hdLHgtjINa6TAFshwpk0gt6h5bkNZIlZ5ewLh5CJWM/qme7s1JBWmuPlb8mL0joinLz/LxxeA0N+m5AkqZWtrNvC9DJdxlGQyqzMuNXCbVuVrx/WBISX2YfV6JXbunQ8koiMGMOWEb+geSrGrLBjlofO2BBqd2/WEJDbvV3cekL/dXB6euLACPMNZJz+q2vUi4GNigkHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZJvZcEKnkqFGbzLBkkfb+EnA5anXFzwTSMEA/ZGvD/Q=; b=dPXCpmZT4rdnoKTschukmGFMz9A7+BZ/Yi7+NDcXuVRW5DkNS+QM7FPrJ1Vga/8syGIz6RoWaISmiSFdjbzgsbnQYaN7kwoGOOXVLsmEcTxIaJX2dHe853Y9bYTfaZ4IPlxKxvASJ44XX97shSUfqrbCe6vAlmwOLlc++GN1zTM= Received: from PH7PR21MB3263.namprd21.prod.outlook.com (2603:10b6:510:1db::16) by DM4PR21MB3680.namprd21.prod.outlook.com (2603:10b6:8:a1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.8; Fri, 2 Sep 2022 19:40:59 +0000 Received: from PH7PR21MB3263.namprd21.prod.outlook.com ([fe80::c42c:5004:23c1:bcac]) by PH7PR21MB3263.namprd21.prod.outlook.com ([fe80::c42c:5004:23c1:bcac%8]) with mapi id 15.20.5612.006; Fri, 2 Sep 2022 19:40:59 +0000 From: Long Li To: fengchengwen , Ferruh Yigit CC: "dev@dpdk.org" , Ajay Sharma , Stephen Hemminger Subject: RE: [Patch v6 15/18] net/mana: add function to send packets Thread-Topic: [Patch v6 15/18] net/mana: add function to send packets Thread-Index: AQHYvMMie32c+xTC7UenXLN7vT79Fa3MEsmAgAB7JaA= Date: Fri, 2 Sep 2022 19:40:59 +0000 Message-ID: References: <1661899911-13086-1-git-send-email-longli@linuxonhyperv.com> <1661899911-13086-16-git-send-email-longli@linuxonhyperv.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR21MB3263:EE_|DM4PR21MB3680:EE_ x-ms-office365-filtering-correlation-id: bf642216-cdb9-4076-f533-08da8d1b0fde x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: T3+oKOm7xDEvhgoP/tMJDtfMUVzrpyhxGOb0RMAEb7HWbvUKqgpCZ4OzE+HRYfxVZE2dvzeXRYq3vzbcp9NgSam3HMsEQxxnb8wAhqQ1+HFT0oMBfGdUbNZud7SzCuP6IikPucfEZMENhFzJ8S4V2U0q6A6IPQia7pidk3DgLEdDhTw20hm6sEH+vmdxBtyqwSRy8i16noeVmQBDgPexhwxkpnWBe6iizLuUN5Dp6cJvhvX0DoZ3rxC+n/1mqnVQh62cV6CPUO0/MRtBEhJLkM3VJP9Zi7PffOq/ccQBRVZDUt/fKSH/P6imh/4ThG7wEBEVil2DUvXroD1umHlS28NlMKi2ahn+RBj/E5UxDXE4+xvtE/SDVxrZ06S9ExdFsSjUS2BRwhTUAO8hhw/Tz+W3Tgup5W3/x5Ook2LB/FQMyQ7R15GC7ZQDMuXYK56dIXK1ggjjxjV/+aBN4O40HTbuMyI2nAxn3v+f4FQXIaHMGcNZpY2fTEAXxNR8BH1CCkUqe80OgAgpR0hHDvwHXxMFiIIisK5/2Epg3QAnim71JZj0pt1Awy63mIbRFjnuy3ahP33lq0Re7TKXGnqLmTRRryH1UGtz6HNoel4/kpENRmGU/Kj/V8vKew05E8fXPvB2OpcuJ2aEJ0YQ7hlOk61RRGA4Gg9kskZCAQgCD5X/QdpJvPiqyYKygB4mfoJ2M3Z5Gz+HddETYh9ylQEGwnlFCqCWakDrpoxr574TrPLOwJ2y/xbGs1F8+eDyaGsJn1h0L1VgkJ17lDtK42qys80FKHiZ9523Hu2ylcvacpCtwkGMy3s9n4DC0dlHPBBb x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR21MB3263.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(136003)(376002)(366004)(396003)(346002)(451199009)(54906003)(82950400001)(38070700005)(82960400001)(122000001)(66556008)(66476007)(66446008)(64756008)(8676002)(4326008)(66946007)(76116006)(110136005)(38100700002)(316002)(2906002)(8990500004)(5660300002)(55016003)(52536014)(186003)(9686003)(83380400001)(8936002)(26005)(71200400001)(7696005)(478600001)(53546011)(41300700001)(10290500003)(107886003)(6506007)(86362001)(33656002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZENqTjdDMHY5MmdOak1aNUdXSzErR2lKYjJMNjJGcm1DQzBFbjAwd2V0Sjlq?= =?utf-8?B?bnBjb3h6NlU1ZXRmUWtwMTJ5bXlOeU9TbnZYR05oRURqdHNWT2VXaWFEOUpS?= =?utf-8?B?OHRtZ0h6SFVnV0ZCbzNwWmthMTRzMVd3ZmhYc0lYTHhOS1VPTjZhYmZWMVhL?= =?utf-8?B?SmJBaUhBdzNuNW5MMnVaYmZNMHdpVW1WY2tjcTlhZ1lud0dTRWhqUUxNUmNz?= =?utf-8?B?Z2pRTWg0T1h6bGV4c1M5K0NQMnVBaFJ6NHZWMUswRDFuTmpoMXFPUW1DYnNn?= =?utf-8?B?TzkxL3lVLzlzaytOUFhiQSt3TmtNWkRuOThBM1RiZzA1VG1sTWZWNEU0Y0dl?= =?utf-8?B?QTJTaElBUzgvdDNnQnE1UlB6N1dHNnErZndVME5rKzczcEFlUDczc25KZFZE?= =?utf-8?B?cjVQOTdiLzE2bi9GQU8zbWlTZkh2MmYxM0JlNDZGZ3dZUzJOU05xWlNoUzly?= =?utf-8?B?ZXltaFhLblBRSkVzQVNVZEFUNHNlMzJKZzZ1RG9wa05INXRTaGVUZUdxTCty?= =?utf-8?B?MUMxSmk1NGF0QkxzenMwQmh3UWpEdkZ1QmtUVW5QYmdnbVlsMkh6VWJHMVU4?= =?utf-8?B?MmppOTdnR2FnSnhNTmZHZW1ZbDZ5YjE4SXRZY3JRR0hsZmpDTUUxYWhKYzhU?= =?utf-8?B?bmo3MFVTQXhucG9vb1U4SnY5RXcvZzZPYU16NDZBcHZwbDc1eVkzbld0MHhM?= =?utf-8?B?U0Zyd2hTL28rNE80NTMxUnl6SlRRRWtxOEUzelZnTnp3T0lFWVR0RjVocS85?= =?utf-8?B?ZEdGUlNwaTNOUW1iVldZSjhjemY5MG84VWJGK0VNUGhCU1hmOHNqVkdodDlO?= =?utf-8?B?QnNxeitVVzlEc0paYm5RVjFMNURQaEFEbTNSWmR0MVN6cFAvRlFRZHEyaW1o?= =?utf-8?B?bkRBNWgzQlR2TGtQTktXUmRxODUwNW5BRCtHcCt0cEZKREdsa0lZVTdBQ0Rz?= =?utf-8?B?WHNTNkpWaEpIUXpHa1IwemQ0alVZRFc2bU03cVRQYXVKQjZ3emt5QWdaTTZ1?= =?utf-8?B?QTJIS0JBTUhKMzF6ajBPdkZhUmU2c01VQkVUaTJ6K2pvcnJzN05OUWJFMjFZ?= =?utf-8?B?b0N1S1hRWEFxU1hOVGJlbFpmYm0yU0s3K0JXUVVuOE5jV3JBaEtSUm9OeTZz?= =?utf-8?B?WGU1MkI0anU1eEtVdWJmcGdvNEhDcklvYi9xMzhncSsrRFRkb2dwOTNiTU9k?= =?utf-8?B?MHQzMVVBbHFvR2dTN2RreTZoZ2lIdnhrMWFHZmxxN09qa1plQXBmRUxGN3Fr?= =?utf-8?B?WkRCQURTQWZzQVMrNTdYZDVkNlJkdTM1STVYQlF0VWwzZ3VzQjR1bnFaU1Uy?= =?utf-8?B?MDFtS1VmajNmUklEQlpMYklaKzdpUW94UzFjN1BPVUhNa0xTZXpMY1RvZU10?= =?utf-8?B?Tkc0aUVQRVpVRmZVQlo4a1BYUFo2NHoxRU1qaXpBSUJ1R0tBNlVjc1J2L2Vo?= =?utf-8?B?V1dYdmNtVElkbTF6NXdwdkVVWmFzY3JBM1NXMEF2cjZBY2thdExVc25Qdkhi?= =?utf-8?B?ZVZUeXFVSkZTUiswaUYzNUV1UENmNzBxb2VkOXZtYXBVTHFMeFRRMzV5clNE?= =?utf-8?B?OXRxNWZJbU5XREI2eW5pZ2Y5QVRiTy9EY0lORU1RVm1wZGZuMnhDZzU5S2dE?= =?utf-8?B?Mkpoc3RpWGZPb0JDckJINlhQMjhZcDF5R0tmMUFOcEhIcWgySXgyMkRIc2xW?= =?utf-8?B?VkZweXdHVnBqNGVCTXI2b00vazVMaE5aNGtWZ2MrZThZcWpnOXEvcERDQlVE?= =?utf-8?B?RjRSc0NZOHQrRTR0bnllNUpLVk0yYXE5aFpndExxZDg4ZmE0Vm50bWxRbW1p?= =?utf-8?B?b0VNQ3pDVExBYVoxc1ZneElpMTdsdk93ZUVQeUN6YWgxSCtDME13Rk9PS0dB?= =?utf-8?B?YXRmSFpDcmhoMXQ1bmFYN3p5SjVnTVNBNnQybnJwdU5ZWERWMkpIVzNkSGIx?= =?utf-8?B?YUkvTEdTU29pdHNibTZGS1pTK0FuMFVpYnkzZFE5QWVlcTZGa3E0U05rYkdH?= =?utf-8?B?c2xtUHoweC9UYjQ5VG1MM0taTDlKTkpjeW9aOEQwMTBUT0MrUGRJR2JubE5D?= =?utf-8?B?cFVuY1ByNlRyWmZMZDlLWnFsYS8vNWFvYUpBemt0aHFXS2dESmQ3T3VjQkdq?= =?utf-8?Q?/gIvwbnKIVw7zf5epBED6/S/6?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR21MB3680 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 PiBTdWJqZWN0OiBSZTogW1BhdGNoIHY2IDE1LzE4XSBuZXQvbWFuYTogYWRkIGZ1bmN0aW9uIHRv IHNlbmQgcGFja2V0cw0KPiANCj4gT24gMjAyMi84LzMxIDY6NTEsIGxvbmdsaUBsaW51eG9uaHlw ZXJ2LmNvbSB3cm90ZToNCj4gPiBGcm9tOiBMb25nIExpIDxsb25nbGlAbWljcm9zb2Z0LmNvbT4N Cj4gPg0KPiA+IFdpdGggYWxsIHRoZSBUWCBxdWV1ZXMgY3JlYXRlZCwgTUFOQSBjYW4gc2VuZCBw YWNrZXRzIG92ZXIgdGhvc2UgcXVldWVzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogTG9uZyBM aSA8bG9uZ2xpQG1pY3Jvc29mdC5jb20+DQo+IA0KPiAuLi4NCj4gDQo+ID4gIH0NCj4gPiArDQo+ ID4gK3VpbnQxNl90IG1hbmFfdHhfYnVyc3Qodm9pZCAqZHBka190eHEsIHN0cnVjdCBydGVfbWJ1 ZiAqKnR4X3BrdHMsDQo+ID4gKwkJICAgICAgIHVpbnQxNl90IG5iX3BrdHMpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCBtYW5hX3R4cSAqdHhxID0gZHBka190eHE7DQo+ID4gKwlzdHJ1Y3QgbWFuYV9w cml2ICpwcml2ID0gdHhxLT5wcml2Ow0KPiA+ICsJc3RydWN0IGdkbWFfY29tcCBjb21wOw0KPiA+ ICsJaW50IHJldDsNCj4gPiArCXZvaWQgKmRiX3BhZ2U7DQo+ID4gKw0KPiA+ICsJLyogUHJvY2Vz cyBzZW5kIGNvbXBsZXRpb25zIGZyb20gR0RNQSAqLw0KPiA+ICsJd2hpbGUgKGdkbWFfcG9sbF9j b21wbGV0aW9uX3F1ZXVlKCZ0eHEtPmdkbWFfY3EsICZjb21wKSA9PSAxKSB7DQo+ID4gKwkJc3Ry dWN0IG1hbmFfdHhxX2Rlc2MgKmRlc2MgPQ0KPiA+ICsJCQkmdHhxLT5kZXNjX3JpbmdbdHhxLT5k ZXNjX3JpbmdfdGFpbF07DQo+ID4gKwkJc3RydWN0IG1hbmFfdHhfY29tcF9vb2IgKm9vYiA9DQo+ ID4gKwkJCShzdHJ1Y3QgbWFuYV90eF9jb21wX29vYg0KPiAqKSZjb21wLmNvbXBsZXRpb25fZGF0 YVswXTsNCj4gPiArDQo+ID4gKwkJaWYgKG9vYi0+Y3FlX2hkci5jcWVfdHlwZSAhPSBDUUVfVFhf T0tBWSkgew0KPiA+ICsJCQlEUlZfTE9HKEVSUiwNCj4gPiArCQkJCSJtYW5hX3R4X2NvbXBfb29i IGNxZV90eXBlICV1DQo+IHZlbmRvcl9lcnIgJXUiLA0KPiA+ICsJCQkJb29iLT5jcWVfaGRyLmNx ZV90eXBlLCBvb2ItDQo+ID5jcWVfaGRyLnZlbmRvcl9lcnIpOw0KPiA+ICsJCQl0eHEtPnN0YXRz LmVycm9ycysrOw0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gKwkJCURSVl9MT0coREVCVUcsICJtYW5h X3R4X2NvbXBfb29iDQo+IENRRV9UWF9PS0FZIik7DQo+ID4gKwkJCXR4cS0+c3RhdHMucGFja2V0 cysrOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKCFkZXNjLT5wa3QpIHsNCj4gPiArCQkJ RFJWX0xPRyhFUlIsICJtYW5hX3R4cV9kZXNjIGhhcyBhIE5VTEwgcGt0Iik7DQo+ID4gKwkJfSBl bHNlIHsNCj4gPiArCQkJdHhxLT5zdGF0cy5ieXRlcyArPSBkZXNjLT5wa3QtPmRhdGFfbGVuOw0K PiA+ICsJCQlydGVfcGt0bWJ1Zl9mcmVlKGRlc2MtPnBrdCk7DQo+ID4gKwkJfQ0KPiA+ICsNCj4g PiArCQlkZXNjLT5wa3QgPSBOVUxMOw0KPiA+ICsJCXR4cS0+ZGVzY19yaW5nX3RhaWwgPSAodHhx LT5kZXNjX3JpbmdfdGFpbCArIDEpICUgdHhxLT5udW1fZGVzYzsNCj4gPiArCQl0eHEtPmdkbWFf c3EudGFpbCArPSBkZXNjLT53cWVfc2l6ZV9pbl9idTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkv KiBQb3N0IHNlbmQgcmVxdWVzdHMgdG8gR0RNQSAqLw0KPiA+ICsJdWludDE2X3QgcGt0X2lkeDsN Cj4gPiArDQo+ID4gKwlmb3IgKHBrdF9pZHggPSAwOyBwa3RfaWR4IDwgbmJfcGt0czsgcGt0X2lk eCsrKSB7DQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVmICptX3BrdCA9IHR4X3BrdHNbcGt0X2lkeF07 DQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVmICptX3NlZyA9IG1fcGt0Ow0KPiA+ICsJCXN0cnVjdCB0 cmFuc21pdF9vb2JfdjIgdHhfb29iID0gezB9Ow0KPiA+ICsJCXN0cnVjdCBvbmVfc2dsIHNnbCA9 IHswfTsNCj4gPiArDQo+ID4gKwkJLyogRHJvcCB0aGUgcGFja2V0IGlmIGl0IGV4Y2VlZHMgbWF4 IHNlZ21lbnRzICovDQo+ID4gKwkJaWYgKG1fcGt0LT5uYl9zZWdzID4gcHJpdi0+bWF4X3NlbmRf c2dlKSB7DQo+ID4gKwkJCURSVl9MT0coRVJSLCAic2VuZCBwYWNrZXQgc2VnbWVudHMgJWQgZXhj ZWVkaW5nDQo+IG1heCIsDQo+ID4gKwkJCQltX3BrdC0+bmJfc2Vncyk7DQo+IA0KPiBUaGlzIGJy YW5jaCB2aW9sYXRlIHJ0ZV9ldGhfdHhfYnVyc3QgZGVmaW5pdGlvbiwgd2hpY2ggZGVmaW5lZCB0 aGUgcmV0dXJuIHZhbHVlIGlzDQo+ICIgKiAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWNrZXRz IHRvIHRyYW5zbWl0LiINCg0KV2lsbCBmaXggdGhpcy4NCg0KPiANCj4gQWxzbyBJIG5vdGljZSB0 aGUgZHJpdmVyIGRpZG4ndCBpbXBsZW1lbnQgdHgtcHJlcGFyZSwgd2hpY2ggY291bGQgaG9sZCBz dWNoDQo+IGNoZWNraW5nIGluIGZyYW1ld29yaydzIGRlZmluaXRpb24uDQo+IA0KPiA+ICsJCQlj b250aW51ZTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCS8qIEZpbGwgaW4gdGhlIG9vYiAqLw0K PiA+ICsJCXR4X29vYi5zaG9ydF9vb2IucGFja2V0X2Zvcm1hdCA9IHNob3J0X3BhY2tldF9mb3Jt YXQ7DQo+ID4gKwkJdHhfb29iLnNob3J0X29vYi50eF9pc19vdXRlcl9pcHY0ID0NCj4gPiArCQkJ bV9wa3QtPm9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9JUFY0ID8gMSA6IDA7DQo+ID4gKwkJdHhf b29iLnNob3J0X29vYi50eF9pc19vdXRlcl9pcHY2ID0NCj4gPiArCQkJbV9wa3QtPm9sX2ZsYWdz ICYgUlRFX01CVUZfRl9UWF9JUFY2ID8gMSA6IDA7DQo+ID4gKw0KPiA+ICsJCXR4X29vYi5zaG9y dF9vb2IudHhfY29tcHV0ZV9JUF9oZWFkZXJfY2hlY2tzdW0gPQ0KPiA+ICsJCQltX3BrdC0+b2xf ZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX0lQX0NLU1VNID8gMSA6IDA7DQo+ID4gKw0KPiA+ICsJCWlm ICgobV9wa3QtPm9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9MNF9NQVNLKSA9PQ0KPiA+ICsJCQkJ UlRFX01CVUZfRl9UWF9UQ1BfQ0tTVU0pIHsNCj4gPiArCQkJc3RydWN0IHJ0ZV90Y3BfaGRyICp0 Y3BfaGRyOw0KPiA+ICsNCj4gPiArCQkJLyogSFcgbmVlZHMgcGFydGlhbCBUQ1AgY2hlY2tzdW0g Ki8NCj4gPiArDQo+ID4gKwkJCXRjcF9oZHIgPSBydGVfcGt0bWJ1Zl9tdG9kX29mZnNldChtX3Br dCwNCj4gPiArCQkJCQkgIHN0cnVjdCBydGVfdGNwX2hkciAqLA0KPiA+ICsJCQkJCSAgbV9wa3Qt PmwyX2xlbiArIG1fcGt0LT5sM19sZW4pOw0KPiA+ICsNCj4gPiArCQkJaWYgKG1fcGt0LT5vbF9m bGFncyAmIFJURV9NQlVGX0ZfVFhfSVBWNCkgew0KPiA+ICsJCQkJc3RydWN0IHJ0ZV9pcHY0X2hk ciAqaXBfaGRyOw0KPiA+ICsNCj4gPiArCQkJCWlwX2hkciA9IHJ0ZV9wa3RtYnVmX210b2Rfb2Zm c2V0KG1fcGt0LA0KPiA+ICsJCQkJCQlzdHJ1Y3QgcnRlX2lwdjRfaGRyICosDQo+ID4gKwkJCQkJ CW1fcGt0LT5sMl9sZW4pOw0KPiA+ICsJCQkJdGNwX2hkci0+Y2tzdW0gPSBydGVfaXB2NF9waGRy X2Nrc3VtKGlwX2hkciwNCj4gPiArCQkJCQkJCW1fcGt0LT5vbF9mbGFncyk7DQo+ID4gKw0KPiA+ ICsJCQl9IGVsc2UgaWYgKG1fcGt0LT5vbF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfSVBWNikgew0K PiA+ICsJCQkJc3RydWN0IHJ0ZV9pcHY2X2hkciAqaXBfaGRyOw0KPiA+ICsNCj4gPiArCQkJCWlw X2hkciA9IHJ0ZV9wa3RtYnVmX210b2Rfb2Zmc2V0KG1fcGt0LA0KPiA+ICsJCQkJCQlzdHJ1Y3Qg cnRlX2lwdjZfaGRyICosDQo+ID4gKwkJCQkJCW1fcGt0LT5sMl9sZW4pOw0KPiA+ICsJCQkJdGNw X2hkci0+Y2tzdW0gPSBydGVfaXB2Nl9waGRyX2Nrc3VtKGlwX2hkciwNCj4gPiArCQkJCQkJCW1f cGt0LT5vbF9mbGFncyk7DQo+ID4gKwkJCX0gZWxzZSB7DQo+ID4gKwkJCQlEUlZfTE9HKEVSUiwg IkludmFsaWQgaW5wdXQgZm9yIFRDUCBDS1NVTSIpOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICsJ CQl0eF9vb2Iuc2hvcnRfb29iLnR4X2NvbXB1dGVfVENQX2NoZWNrc3VtID0gMTsNCj4gPiArCQkJ dHhfb29iLnNob3J0X29vYi50eF90cmFuc3BvcnRfaGVhZGVyX29mZnNldCA9DQo+ID4gKwkJCQlt X3BrdC0+bDJfbGVuICsgbV9wa3QtPmwzX2xlbjsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlm ICgobV9wa3QtPm9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9MNF9NQVNLKSA9PQ0KPiA+ICsJCQkJ UlRFX01CVUZfRl9UWF9VRFBfQ0tTVU0pIHsNCj4gPiArCQkJc3RydWN0IHJ0ZV91ZHBfaGRyICp1 ZHBfaGRyOw0KPiA+ICsNCj4gPiArCQkJLyogSFcgbmVlZHMgcGFydGlhbCBVRFAgY2hlY2tzdW0g Ki8NCj4gPiArCQkJdWRwX2hkciA9IHJ0ZV9wa3RtYnVmX210b2Rfb2Zmc2V0KG1fcGt0LA0KPiA+ ICsJCQkJCXN0cnVjdCBydGVfdWRwX2hkciAqLA0KPiA+ICsJCQkJCW1fcGt0LT5sMl9sZW4gKyBt X3BrdC0+bDNfbGVuKTsNCj4gPiArDQo+ID4gKwkJCWlmIChtX3BrdC0+b2xfZmxhZ3MgJiBSVEVf TUJVRl9GX1RYX0lQVjQpIHsNCj4gPiArCQkJCXN0cnVjdCBydGVfaXB2NF9oZHIgKmlwX2hkcjsN Cj4gPiArDQo+ID4gKwkJCQlpcF9oZHIgPSBydGVfcGt0bWJ1Zl9tdG9kX29mZnNldChtX3BrdCwN Cj4gPiArCQkJCQkJc3RydWN0IHJ0ZV9pcHY0X2hkciAqLA0KPiA+ICsJCQkJCQltX3BrdC0+bDJf bGVuKTsNCj4gPiArDQo+ID4gKwkJCQl1ZHBfaGRyLT5kZ3JhbV9ja3N1bSA9DQo+ID4gKwkJCQkJ cnRlX2lwdjRfcGhkcl9ja3N1bShpcF9oZHIsDQo+ID4gKwkJCQkJCQkgICAgbV9wa3QtPm9sX2Zs YWdzKTsNCj4gPiArDQo+ID4gKwkJCX0gZWxzZSBpZiAobV9wa3QtPm9sX2ZsYWdzICYgUlRFX01C VUZfRl9UWF9JUFY2KSB7DQo+ID4gKwkJCQlzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcF9oZHI7DQo+ ID4gKw0KPiA+ICsJCQkJaXBfaGRyID0gcnRlX3BrdG1idWZfbXRvZF9vZmZzZXQobV9wa3QsDQo+ ID4gKwkJCQkJCXN0cnVjdCBydGVfaXB2Nl9oZHIgKiwNCj4gPiArCQkJCQkJbV9wa3QtPmwyX2xl bik7DQo+ID4gKw0KPiA+ICsJCQkJdWRwX2hkci0+ZGdyYW1fY2tzdW0gPQ0KPiA+ICsJCQkJCXJ0 ZV9pcHY2X3BoZHJfY2tzdW0oaXBfaGRyLA0KPiA+ICsJCQkJCQkJICAgIG1fcGt0LT5vbF9mbGFn cyk7DQo+ID4gKw0KPiA+ICsJCQl9IGVsc2Ugew0KPiA+ICsJCQkJRFJWX0xPRyhFUlIsICJJbnZh bGlkIGlucHV0IGZvciBVRFAgQ0tTVU0iKTsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJdHhf b29iLnNob3J0X29vYi50eF9jb21wdXRlX1VEUF9jaGVja3N1bSA9IDE7DQo+ID4gKwkJfQ0KPiAN Cj4gV2h5IG5vdCBoYXZlIFRTTyBwcm9jZXNzLCB3aGljaCB3YXMgcmVwb3J0ZWQgc3VwcG9ydCBp biBkZXZfaW5mb19nZXQgPw0KDQpUU08gaXMgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4gSSdt IGNoYW5naW5nIEJOSUNfREVWX1RYX09GRkxPQURfU1VQUE9SVCB0byBmaXggdGhpcy4NCg0KPiAN Cj4gPiArDQo+ID4gKwkJdHhfb29iLnNob3J0X29vYi5zdXBwcmVzc190eF9DUUVfZ2VuZXJhdGlv biA9IDA7DQo+ID4gKwkJdHhfb29iLnNob3J0X29vYi5WQ1FfbnVtYmVyID0gdHhxLT5nZG1hX2Nx LmlkOw0KPiA+ICsNCj4gPiArCQl0eF9vb2Iuc2hvcnRfb29iLlZTUV9mcmFtZV9udW0gPQ0KPiA+ ICsJCQlnZXRfdnNxX2ZyYW1lX251bSh0eHEtPmdkbWFfc3EuaWQpOw0KPiA+ICsJCXR4X29vYi5z aG9ydF9vb2Iuc2hvcnRfdnBvcnRfb2Zmc2V0ID0gdHhxLT50eF92cF9vZmZzZXQ7DQo+ID4gKw0K PiA+ICsJCURSVl9MT0coREVCVUcsICJ0eF9vb2IgcGFja2V0X2Zvcm1hdCAldSBpcHY0ICV1IGlw djYgJXUiLA0KPiA+ICsJCQl0eF9vb2Iuc2hvcnRfb29iLnBhY2tldF9mb3JtYXQsDQo+ID4gKwkJ CXR4X29vYi5zaG9ydF9vb2IudHhfaXNfb3V0ZXJfaXB2NCwNCj4gPiArCQkJdHhfb29iLnNob3J0 X29vYi50eF9pc19vdXRlcl9pcHY2KTsNCj4gPiArDQo+ID4gKwkJRFJWX0xPRyhERUJVRywgInR4 X29vYiBjaGVja3N1bSBpcCAldSB0Y3AgJXUgdWRwICV1DQo+IG9mZnNldCAldSIsDQo+ID4gKwkJ CXR4X29vYi5zaG9ydF9vb2IudHhfY29tcHV0ZV9JUF9oZWFkZXJfY2hlY2tzdW0sDQo+ID4gKwkJ CXR4X29vYi5zaG9ydF9vb2IudHhfY29tcHV0ZV9UQ1BfY2hlY2tzdW0sDQo+ID4gKwkJCXR4X29v Yi5zaG9ydF9vb2IudHhfY29tcHV0ZV9VRFBfY2hlY2tzdW0sDQo+ID4gKwkJCXR4X29vYi5zaG9y dF9vb2IudHhfdHJhbnNwb3J0X2hlYWRlcl9vZmZzZXQpOw0KPiA+ICsNCj4gPiArCQlEUlZfTE9H KERFQlVHLCAicGt0WyVkXTogYnVmX2FkZHIgMHglcCwgbmJfc2VncyAlZCwNCj4gcGt0X2xlbiAl ZCIsDQo+ID4gKwkJCXBrdF9pZHgsIG1fcGt0LT5idWZfYWRkciwgbV9wa3QtPm5iX3NlZ3MsDQo+ ID4gKwkJCW1fcGt0LT5wa3RfbGVuKTsNCj4gPiArDQo+ID4gKwkJLyogQ3JlYXRlIFNHTCBmb3Ig cGFja2V0IGRhdGEgYnVmZmVycyAqLw0KPiA+ICsJCWZvciAodWludDE2X3Qgc2VnX2lkeCA9IDA7 IHNlZ19pZHggPCBtX3BrdC0+bmJfc2Vnczsgc2VnX2lkeCsrKQ0KPiB7DQo+ID4gKwkJCXN0cnVj dCBtYW5hX21yX2NhY2hlICptciA9DQo+ID4gKwkJCQltYW5hX2ZpbmRfcG1kX21yKCZ0eHEtPm1y X2J0cmVlLCBwcml2LA0KPiBtX3NlZyk7DQo+ID4gKw0KPiA+ICsJCQlpZiAoIW1yKSB7DQo+ID4g KwkJCQlEUlZfTE9HKEVSUiwgImZhaWxlZCB0byBnZXQgTVIsIHBrdF9pZHggJXUiLA0KPiA+ICsJ CQkJCXBrdF9pZHgpOw0KPiA+ICsJCQkJcmV0dXJuIHBrdF9pZHg7DQo+ID4gKwkJCX0NCj4gPiAr DQo+ID4gKwkJCXNnbC5nZG1hX3NnbFtzZWdfaWR4XS5hZGRyZXNzID0NCj4gPiArCQkJCXJ0ZV9j cHVfdG9fbGVfNjQocnRlX3BrdG1idWZfbXRvZChtX3NlZywNCj4gPiArCQkJCQkJCQkgIHVpbnQ2 NF90KSk7DQo+ID4gKwkJCXNnbC5nZG1hX3NnbFtzZWdfaWR4XS5zaXplID0gbV9zZWctPmRhdGFf bGVuOw0KPiA+ICsJCQlzZ2wuZ2RtYV9zZ2xbc2VnX2lkeF0ubWVtb3J5X2tleSA9IG1yLT5sa2V5 Ow0KPiA+ICsNCj4gPiArCQkJRFJWX0xPRyhERUJVRywNCj4gPiArCQkJCSJzZWcgaWR4ICV1IGFk ZHIgMHglIiBQUkl4NjQgIiBzaXplICV4IGtleSAleCIsDQo+ID4gKwkJCQlzZWdfaWR4LCBzZ2wu Z2RtYV9zZ2xbc2VnX2lkeF0uYWRkcmVzcywNCj4gPiArCQkJCXNnbC5nZG1hX3NnbFtzZWdfaWR4 XS5zaXplLA0KPiA+ICsJCQkJc2dsLmdkbWFfc2dsW3NlZ19pZHhdLm1lbW9yeV9rZXkpOw0KPiA+ ICsNCj4gPiArCQkJbV9zZWcgPSBtX3NlZy0+bmV4dDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJ CXN0cnVjdCBnZG1hX3dvcmtfcmVxdWVzdCB3b3JrX3JlcSA9IHswfTsNCj4gPiArCQlzdHJ1Y3Qg Z2RtYV9wb3N0ZWRfd3FlX2luZm8gd3FlX2luZm8gPSB7MH07DQo+ID4gKw0KPiA+ICsJCXdvcmtf cmVxLmdkbWFfaGVhZGVyLnN0cnVjdF9zaXplID0gc2l6ZW9mKHdvcmtfcmVxKTsNCj4gPiArCQl3 cWVfaW5mby5nZG1hX2hlYWRlci5zdHJ1Y3Rfc2l6ZSA9IHNpemVvZih3cWVfaW5mbyk7DQo+ID4g Kw0KPiA+ICsJCXdvcmtfcmVxLnNnbCA9IHNnbC5nZG1hX3NnbDsNCj4gPiArCQl3b3JrX3JlcS5u dW1fc2dsX2VsZW1lbnRzID0gbV9wa3QtPm5iX3NlZ3M7DQo+ID4gKwkJd29ya19yZXEuaW5saW5l X29vYl9zaXplX2luX2J5dGVzID0NCj4gPiArCQkJc2l6ZW9mKHN0cnVjdCB0cmFuc21pdF9zaG9y dF9vb2JfdjIpOw0KPiA+ICsJCXdvcmtfcmVxLmlubGluZV9vb2JfZGF0YSA9ICZ0eF9vb2I7DQo+ ID4gKwkJd29ya19yZXEuZmxhZ3MgPSAwOw0KPiA+ICsJCXdvcmtfcmVxLmNsaWVudF9kYXRhX3Vu aXQgPSBOT1RfVVNJTkdfQ0xJRU5UX0RBVEFfVU5JVDsNCj4gPiArDQo+ID4gKwkJcmV0ID0gZ2Rt YV9wb3N0X3dvcmtfcmVxdWVzdCgmdHhxLT5nZG1hX3NxLCAmd29ya19yZXEsDQo+ID4gKwkJCQkJ ICAgICAmd3FlX2luZm8pOw0KPiA+ICsJCWlmICghcmV0KSB7DQo+ID4gKwkJCXN0cnVjdCBtYW5h X3R4cV9kZXNjICpkZXNjID0NCj4gPiArCQkJCSZ0eHEtPmRlc2NfcmluZ1t0eHEtPmRlc2Nfcmlu Z19oZWFkXTsNCj4gPiArDQo+ID4gKwkJCS8qIFVwZGF0ZSBxdWV1ZSBmb3IgdHJhY2tpbmcgcGVu ZGluZyByZXF1ZXN0cyAqLw0KPiA+ICsJCQlkZXNjLT5wa3QgPSBtX3BrdDsNCj4gPiArCQkJZGVz Yy0+d3FlX3NpemVfaW5fYnUgPSB3cWVfaW5mby53cWVfc2l6ZV9pbl9idTsNCj4gPiArCQkJdHhx LT5kZXNjX3JpbmdfaGVhZCA9DQo+ID4gKwkJCQkodHhxLT5kZXNjX3JpbmdfaGVhZCArIDEpICUg dHhxLT5udW1fZGVzYzsNCj4gPiArDQo+ID4gKwkJCURSVl9MT0coREVCVUcsICJuYl9wa3RzICV1 IHBrdFslZF0gc2VudCIsDQo+ID4gKwkJCQluYl9wa3RzLCBwa3RfaWR4KTsNCj4gPiArCQl9IGVs c2Ugew0KPiA+ICsJCQlEUlZfTE9HKElORk8sICJwa3RbJWRdIGZhaWxlZCB0byBwb3N0IHNlbmQg cmV0ICVkIiwNCj4gPiArCQkJCXBrdF9pZHgsIHJldCk7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJ CX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBSaW5nIGhhcmR3YXJlIGRvb3IgYmVsbCAqLw0K PiA+ICsJZGJfcGFnZSA9IHByaXYtPmRiX3BhZ2U7DQo+ID4gKwlpZiAocnRlX2VhbF9wcm9jZXNz X3R5cGUoKSA9PSBSVEVfUFJPQ19TRUNPTkRBUlkpIHsNCj4gPiArCQlzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiA9DQo+ID4gKwkJCSZydGVfZXRoX2RldmljZXNbcHJpdi0+ZGV2X2RhdGEtPnBvcnRf aWRdOw0KPiA+ICsJCXN0cnVjdCBtYW5hX3Byb2Nlc3NfcHJpdiAqcHJvY2Vzc19wcml2ID0gZGV2 LT5wcm9jZXNzX3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsJCWRiX3BhZ2UgPSBwcm9jZXNzX3ByaXYt PmRiX3BhZ2U7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gbWFuYV9yaW5nX2Rvb3JiZWxs KGRiX3BhZ2UsIGdkbWFfcXVldWVfc2VuZCwNCj4gPiArCQkJCSB0eHEtPmdkbWFfc3EuaWQsDQo+ ID4gKwkJCQkgdHhxLT5nZG1hX3NxLmhlYWQgKg0KPiA+ICsJCQkJCUdETUFfV1FFX0FMSUdOTUVO VF9VTklUX1NJWkUpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlEUlZfTE9HKEVSUiwgIm1hbmFf cmluZ19kb29yYmVsbCBmYWlsZWQgcmV0ICVkIiwgcmV0KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4g cGt0X2lkeDsNCj4gPiArfQ0KPiA+DQo=