From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akhil Goyal Subject: Re: [PATCH v4 1/9] examples/ipsec-secgw: avoid to request unused TX offloads Date: Fri, 21 Dec 2018 13:57:12 +0000 Message-ID: <0a59d890-f510-95e1-f26c-7b0bb9709e58@nxp.com> References: <1544111691-7481-1-git-send-email-konstantin.ananyev@intel.com> <1544805623-18150-2-git-send-email-konstantin.ananyev@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "radu.nicolau@intel.com" , Remy Horton To: Konstantin Ananyev , "dev@dpdk.org" Return-path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30042.outbound.protection.outlook.com [40.107.3.42]) by dpdk.org (Postfix) with ESMTP id 4D48A1BDFB for ; Fri, 21 Dec 2018 14:57:20 +0100 (CET) In-Reply-To: <1544805623-18150-2-git-send-email-konstantin.ananyev@intel.com> Content-Language: en-US Content-ID: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgS29uc3RhbnRpbiwNCg0KT24gMTIvMTQvMjAxOCAxMDoxMCBQTSwgS29uc3RhbnRpbiBBbmFu eWV2IHdyb3RlOg0KPiBpcHNlYy1zZWNndyBhbHdheXMgZW5hYmxlcyBUWCBvZmZsb2Fkcw0KPiAo REVWX1RYX09GRkxPQURfTVVMVElfU0VHUywgREVWX1RYX09GRkxPQURfU0VDVVJJVFkpLA0KPiBl dmVuIHdoZW4gdGhleSBhcmUgbm90IHJlcXVlc3RlZCBieSB0aGUgY29uZmlnLg0KPiBUaGF0IGNh dXNlcyBtYW55IFBNRCB0byBjaG9vc2UgZnVsbC1mZWF0dXJlZCBUWCBmdW5jdGlvbiwNCj4gd2hp Y2ggaW4gbWFueSBjYXNlcyBpcyBtdWNoIHNsb3dlciB0aGVuIG9uZSB3aXRob3V0IG9mZmxvYWRz Lg0KPiBUaGF0IHBhdGNoIGFkZHMgY2hlY2tzIHRvIGVuYWJsZWQgZXh0cmEgSFcgb2ZmbG9hZHMs IG9ubHkgd2hlbg0KPiB0aGV5IHdlcmUgcmVxdWVzdGVkLg0KPiBQbHVzIGl0IGVuYWJsZXMgREVW X1RYX09GRkxPQURfSVBWNF9DS1NVTSwNCj4gb25seSB3aGVuIG90aGVyIEhXIFRYIG9mbG9hZHMg YXJlIGdvaW5nIHRvIGJlIGVuYWJsZWQuDQo+IE90aGVyd2lzZSBTVyB2ZXJzaW9uIG9mIGlwIGNr c3VtIGNhbGN1bGF0aW9uIGlzIHVzZWQuDQo+IFRoYXQgYWxsb3dzIHRvIHVzZSB2ZWN0b3IgVFgg ZnVuY3Rpb24sIHdoZW4gaW5saW5lLWlwc2VjIGlzIG5vdA0KPiByZXF1ZXN0ZWQuDQo+DQo+IFNp Z25lZC1vZmYtYnk6IFJlbXkgSG9ydG9uIDxyZW15LmhvcnRvbkBpbnRlbC5jb20+DQo+IFNpZ25l ZC1vZmYtYnk6IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNv bT4NCj4gQWNrZWQtYnk6IFJhZHUgTmljb2xhdSA8cmFkdS5uaWNvbGF1QGludGVsLmNvbT4NCj4g LS0tDQo+ICAgZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMtc2VjZ3cuYyB8IDQ0ICsrKysrKysr KysrKysrKy0tLS0tLS0tDQo+ICAgZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuaCAgICAgICB8 ICA2ICsrKysNCj4gICBleGFtcGxlcy9pcHNlYy1zZWNndy9zYS5jICAgICAgICAgIHwgNTYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNl cnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lw c2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNn dy5jDQo+IGluZGV4IDFiYzBiNWI1MC4uY2ZjMmIwNWU1IDEwMDY0NA0KPiAtLS0gYS9leGFtcGxl cy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3 L2lwc2VjLXNlY2d3LmMNCj4gQEAgLTIwOCw4ICsyMDgsNiBAQCBzdGF0aWMgc3RydWN0IHJ0ZV9l dGhfY29uZiBwb3J0X2NvbmYgPSB7DQo+ICAgCX0sDQo+ICAgCS50eG1vZGUgPSB7DQo+ICAgCQku bXFfbW9kZSA9IEVUSF9NUV9UWF9OT05FLA0KPiAtCQkub2ZmbG9hZHMgPSAoREVWX1RYX09GRkxP QURfSVBWNF9DS1NVTSB8DQo+IC0JCQkgICAgIERFVl9UWF9PRkZMT0FEX01VTFRJX1NFR1MpLA0K SSBiZWxpZXZlIHRoaXMgaXMgZGlzYWJsaW5nIGNoZWNrc3VtIG9mZmxvYWQgZm9yIGFsbCBjYXNl cyBhbmQgdGhlbiANCmVuYWJsaW5nIG9ubHkgZm9yIGlubGluZSBjcnlwdG8gYW5kIGlubGluZSBw cm90by4NClRoaXMgaXMgYnJlYWtpbmcgbG9va2FzaWRlIHByb3RvIGFuZCBsb29rYXNpZGUgbm9u ZSBjYXNlcy4gUGxlYXNlIA0KY29ycmVjdCBtZSBpZiBJIGFtIHdyb25nLg0KU28gYSBOQUNLIGZv ciB0aGlzIGlmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdC4NCj4gICAJfSwNCj4gICB9Ow0K PiAgIA0KPiBAQCAtMzE1LDcgKzMxMyw4IEBAIHByZXBhcmVfdHJhZmZpYyhzdHJ1Y3QgcnRlX21i dWYgKipwa3RzLCBzdHJ1Y3QgaXBzZWNfdHJhZmZpYyAqdCwNCj4gICB9DQo+ICAgDQo+ICAgc3Rh dGljIGlubGluZSB2b2lkDQo+IC1wcmVwYXJlX3R4X3BrdChzdHJ1Y3QgcnRlX21idWYgKnBrdCwg dWludDE2X3QgcG9ydCkNCj4gK3ByZXBhcmVfdHhfcGt0KHN0cnVjdCBydGVfbWJ1ZiAqcGt0LCB1 aW50MTZfdCBwb3J0LA0KPiArCQljb25zdCBzdHJ1Y3QgbGNvcmVfY29uZiAqcWNvbmYpDQo+ICAg ew0KPiAgIAlzdHJ1Y3QgaXAgKmlwOw0KPiAgIAlzdHJ1Y3QgZXRoZXJfaGRyICpldGhoZHI7DQo+ IEBAIC0zMjUsMTQgKzMyNCwxOSBAQCBwcmVwYXJlX3R4X3BrdChzdHJ1Y3QgcnRlX21idWYgKnBr dCwgdWludDE2X3QgcG9ydCkNCj4gICAJZXRoaGRyID0gKHN0cnVjdCBldGhlcl9oZHIgKilydGVf cGt0bWJ1Zl9wcmVwZW5kKHBrdCwgRVRIRVJfSERSX0xFTik7DQo+ICAgDQo+ICAgCWlmIChpcC0+ aXBfdiA9PSBJUFZFUlNJT04pIHsNCj4gLQkJcGt0LT5vbF9mbGFncyB8PSBQS1RfVFhfSVBfQ0tT VU0gfCBQS1RfVFhfSVBWNDsNCj4gKwkJcGt0LT5vbF9mbGFncyB8PSBxY29uZi0+b3V0Ym91bmQu aXB2NF9vZmZsb2FkczsNCj4gICAJCXBrdC0+bDNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpcCk7DQo+ ICAgCQlwa3QtPmwyX2xlbiA9IEVUSEVSX0hEUl9MRU47DQo+ICAgDQo+ICAgCQlpcC0+aXBfc3Vt ID0gMDsNCj4gKw0KPiArCQkvKiBjYWxjdWxhdGUgSVB2NCBja3N1bSBpbiBTVyAqLw0KPiArCQlp ZiAoKHBrdC0+b2xfZmxhZ3MgJiBQS1RfVFhfSVBfQ0tTVU0pID09IDApDQo+ICsJCQlpcC0+aXBf c3VtID0gcnRlX2lwdjRfY2tzdW0oKHN0cnVjdCBpcHY0X2hkciAqKWlwKTsNCj4gKw0KPiAgIAkJ ZXRoaGRyLT5ldGhlcl90eXBlID0gcnRlX2NwdV90b19iZV8xNihFVEhFUl9UWVBFX0lQdjQpOw0K PiAgIAl9IGVsc2Ugew0KPiAtCQlwa3QtPm9sX2ZsYWdzIHw9IFBLVF9UWF9JUFY2Ow0KPiArCQlw a3QtPm9sX2ZsYWdzIHw9IHFjb25mLT5vdXRib3VuZC5pcHY2X29mZmxvYWRzOw0KPiAgIAkJcGt0 LT5sM19sZW4gPSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpOw0KPiAgIAkJcGt0LT5sMl9sZW4gPSBF VEhFUl9IRFJfTEVOOw0KPiAgIA0KPiBAQCAtMzQ2LDE4ICszNTAsMTkgQEAgcHJlcGFyZV90eF9w a3Qoc3RydWN0IHJ0ZV9tYnVmICpwa3QsIHVpbnQxNl90IHBvcnQpDQo+ICAgfQ0KPiAgIA0KPiAg IHN0YXRpYyBpbmxpbmUgdm9pZA0KPiAtcHJlcGFyZV90eF9idXJzdChzdHJ1Y3QgcnRlX21idWYg KnBrdHNbXSwgdWludDE2X3QgbmJfcGt0cywgdWludDE2X3QgcG9ydCkNCj4gK3ByZXBhcmVfdHhf YnVyc3Qoc3RydWN0IHJ0ZV9tYnVmICpwa3RzW10sIHVpbnQxNl90IG5iX3BrdHMsIHVpbnQxNl90 IHBvcnQsDQo+ICsJCWNvbnN0IHN0cnVjdCBsY29yZV9jb25mICpxY29uZikNCj4gICB7DQo+ICAg CWludDMyX3QgaTsNCj4gICAJY29uc3QgaW50MzJfdCBwcmVmZXRjaF9vZmZzZXQgPSAyOw0KPiAg IA0KPiAgIAlmb3IgKGkgPSAwOyBpIDwgKG5iX3BrdHMgLSBwcmVmZXRjaF9vZmZzZXQpOyBpKysp IHsNCj4gICAJCXJ0ZV9tYnVmX3ByZWZldGNoX3BhcnQyKHBrdHNbaSArIHByZWZldGNoX29mZnNl dF0pOw0KPiAtCQlwcmVwYXJlX3R4X3BrdChwa3RzW2ldLCBwb3J0KTsNCj4gKwkJcHJlcGFyZV90 eF9wa3QocGt0c1tpXSwgcG9ydCwgcWNvbmYpOw0KPiAgIAl9DQo+ICAgCS8qIFByb2Nlc3MgbGVm dCBwYWNrZXRzICovDQo+ICAgCWZvciAoOyBpIDwgbmJfcGt0czsgaSsrKQ0KPiAtCQlwcmVwYXJl X3R4X3BrdChwa3RzW2ldLCBwb3J0KTsNCj4gKwkJcHJlcGFyZV90eF9wa3QocGt0c1tpXSwgcG9y dCwgcWNvbmYpOw0KPiAgIH0NCj4gICANCj4gICAvKiBTZW5kIGJ1cnN0IG9mIHBhY2tldHMgb24g YW4gb3V0cHV0IGludGVyZmFjZSAqLw0KPiBAQCAtMzcxLDcgKzM3Niw3IEBAIHNlbmRfYnVyc3Qo c3RydWN0IGxjb3JlX2NvbmYgKnFjb25mLCB1aW50MTZfdCBuLCB1aW50MTZfdCBwb3J0KQ0KPiAg IAlxdWV1ZWlkID0gcWNvbmYtPnR4X3F1ZXVlX2lkW3BvcnRdOw0KPiAgIAltX3RhYmxlID0gKHN0 cnVjdCBydGVfbWJ1ZiAqKilxY29uZi0+dHhfbWJ1ZnNbcG9ydF0ubV90YWJsZTsNCj4gICANCj4g LQlwcmVwYXJlX3R4X2J1cnN0KG1fdGFibGUsIG4sIHBvcnQpOw0KPiArCXByZXBhcmVfdHhfYnVy c3QobV90YWJsZSwgbiwgcG9ydCwgcWNvbmYpOw0KPiAgIA0KPiAgIAlyZXQgPSBydGVfZXRoX3R4 X2J1cnN0KHBvcnQsIHF1ZXVlaWQsIG1fdGFibGUsIG4pOw0KPiAgIAlpZiAodW5saWtlbHkocmV0 IDwgbikpIHsNCj4gQEAgLTE1NDMsNyArMTU0OCw3IEBAIGNyeXB0b2RldnNfaW5pdCh2b2lkKQ0K PiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZA0KPiAtcG9ydF9pbml0KHVpbnQxNl90IHBvcnRp ZCkNCj4gK3BvcnRfaW5pdCh1aW50MTZfdCBwb3J0aWQsIHVpbnQ2NF90IHJlcV9yeF9vZmZsb2Fk cywgdWludDY0X3QgcmVxX3R4X29mZmxvYWRzKQ0KPiAgIHsNCj4gICAJc3RydWN0IHJ0ZV9ldGhf ZGV2X2luZm8gZGV2X2luZm87DQo+ICAgCXN0cnVjdCBydGVfZXRoX3R4Y29uZiAqdHhjb25mOw0K PiBAQCAtMTU4NCwxMCArMTU4OSwxMCBAQCBwb3J0X2luaXQodWludDE2X3QgcG9ydGlkKQ0KPiAg IAkJbG9jYWxfcG9ydF9jb25mLnJ4bW9kZS5vZmZsb2FkcyB8PSBERVZfUlhfT0ZGTE9BRF9KVU1C T19GUkFNRTsNCj4gICAJfQ0KPiAgIA0KPiAtCWlmIChkZXZfaW5mby5yeF9vZmZsb2FkX2NhcGEg JiBERVZfUlhfT0ZGTE9BRF9TRUNVUklUWSkNCj4gLQkJbG9jYWxfcG9ydF9jb25mLnJ4bW9kZS5v ZmZsb2FkcyB8PSBERVZfUlhfT0ZGTE9BRF9TRUNVUklUWTsNCj4gLQlpZiAoZGV2X2luZm8udHhf b2ZmbG9hZF9jYXBhICYgREVWX1RYX09GRkxPQURfU0VDVVJJVFkpDQo+IC0JCWxvY2FsX3BvcnRf Y29uZi50eG1vZGUub2ZmbG9hZHMgfD0gREVWX1RYX09GRkxPQURfU0VDVVJJVFk7DQo+ICsJLyog Q2FwYWJpbGl0aWVzIHdpbGwgYWxyZWFkeSBoYXZlIGJlZW4gY2hlY2tlZC4uICovDQo+ICsJbG9j YWxfcG9ydF9jb25mLnJ4bW9kZS5vZmZsb2FkcyB8PSByZXFfcnhfb2ZmbG9hZHM7DQo+ICsJbG9j YWxfcG9ydF9jb25mLnR4bW9kZS5vZmZsb2FkcyB8PSByZXFfdHhfb2ZmbG9hZHM7DQo+ICsNCj4g ICAJaWYgKGRldl9pbmZvLnR4X29mZmxvYWRfY2FwYSAmIERFVl9UWF9PRkZMT0FEX01CVUZfRkFT VF9GUkVFKQ0KPiAgIAkJbG9jYWxfcG9ydF9jb25mLnR4bW9kZS5vZmZsb2FkcyB8PQ0KPiAgIAkJ CURFVl9UWF9PRkZMT0FEX01CVUZfRkFTVF9GUkVFOw0KPiBAQCAtMTYzOSw2ICsxNjQ0LDEzIEBA IHBvcnRfaW5pdCh1aW50MTZfdCBwb3J0aWQpDQo+ICAgDQo+ICAgCQlxY29uZiA9ICZsY29yZV9j b25mW2xjb3JlX2lkXTsNCj4gICAJCXFjb25mLT50eF9xdWV1ZV9pZFtwb3J0aWRdID0gdHhfcXVl dWVpZDsNCj4gKw0KPiArCQkvKiBQcmUtcG9wdWxhdGUgcGt0IG9mZmxvYWRzIGJhc2VkIG9uIGNh cGFiaWxpdGllcyAqLw0KPiArCQlxY29uZi0+b3V0Ym91bmQuaXB2NF9vZmZsb2FkcyA9IFBLVF9U WF9JUFY0Ow0KPiArCQlxY29uZi0+b3V0Ym91bmQuaXB2Nl9vZmZsb2FkcyA9IFBLVF9UWF9JUFY2 Ow0KPiArCQlpZiAocmVxX3R4X29mZmxvYWRzICYgREVWX1RYX09GRkxPQURfSVBWNF9DS1NVTSkN Cj4gKwkJCXFjb25mLT5vdXRib3VuZC5pcHY0X29mZmxvYWRzIHw9IFBLVF9UWF9JUF9DS1NVTTsN Cj4gKw0KPiAgIAkJdHhfcXVldWVpZCsrOw0KPiAgIA0KPiAgIAkJLyogaW5pdCBSWCBxdWV1ZXMg Ki8NCj4gQEAgLTE3NDksNiArMTc2MSw3IEBAIG1haW4oaW50MzJfdCBhcmdjLCBjaGFyICoqYXJn dikNCj4gICAJdWludDMyX3QgbGNvcmVfaWQ7DQo+ICAgCXVpbnQ4X3Qgc29ja2V0X2lkOw0KPiAg IAl1aW50MTZfdCBwb3J0aWQ7DQo+ICsJdWludDY0X3QgcmVxX3J4X29mZmxvYWRzLCByZXFfdHhf b2ZmbG9hZHM7DQo+ICAgDQo+ICAgCS8qIGluaXQgRUFMICovDQo+ICAgCXJldCA9IHJ0ZV9lYWxf aW5pdChhcmdjLCBhcmd2KTsNCj4gQEAgLTE4MDQsNyArMTgxNyw4IEBAIG1haW4oaW50MzJfdCBh cmdjLCBjaGFyICoqYXJndikNCj4gICAJCWlmICgoZW5hYmxlZF9wb3J0X21hc2sgJiAoMSA8PCBw b3J0aWQpKSA9PSAwKQ0KPiAgIAkJCWNvbnRpbnVlOw0KPiAgIA0KPiAtCQlwb3J0X2luaXQocG9y dGlkKTsNCj4gKwkJc2FfY2hlY2tfb2ZmbG9hZHMocG9ydGlkLCAmcmVxX3J4X29mZmxvYWRzLCAm cmVxX3R4X29mZmxvYWRzKTsNCj4gKwkJcG9ydF9pbml0KHBvcnRpZCwgcmVxX3J4X29mZmxvYWRz LCByZXFfdHhfb2ZmbG9hZHMpOw0KPiAgIAl9DQo+ICAgDQo+ICAgCWNyeXB0b2RldnNfaW5pdCgp Ow0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuaCBiL2V4YW1wbGVz L2lwc2VjLXNlY2d3L2lwc2VjLmgNCj4gaW5kZXggYzk5OGM4MDc2Li45YjE1ODZmNTIgMTAwNjQ0 DQo+IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmgNCj4gKysrIGIvZXhhbXBsZXMv aXBzZWMtc2VjZ3cvaXBzZWMuaA0KPiBAQCAtMTQ2LDYgKzE0Niw4IEBAIHN0cnVjdCBpcHNlY19j dHggew0KPiAgIAlzdHJ1Y3QgcnRlX21lbXBvb2wgKnNlc3Npb25fcG9vbDsNCj4gICAJc3RydWN0 IHJ0ZV9tYnVmICpvbF9wa3RzW01BWF9QS1RfQlVSU1RdIF9fcnRlX2FsaWduZWQoc2l6ZW9mKHZv aWQgKikpOw0KPiAgIAl1aW50MTZfdCBvbF9wa3RzX2NudDsNCj4gKwl1aW50NjRfdCBpcHY0X29m ZmxvYWRzOw0KPiArCXVpbnQ2NF90IGlwdjZfb2ZmbG9hZHM7DQo+ICAgfTsNCj4gICANCj4gICBz dHJ1Y3QgY2Rldl9rZXkgew0KPiBAQCAtMjM5LDQgKzI0MSw4IEBAIHNhX2luaXQoc3RydWN0IHNv Y2tldF9jdHggKmN0eCwgaW50MzJfdCBzb2NrZXRfaWQpOw0KPiAgIHZvaWQNCj4gICBydF9pbml0 KHN0cnVjdCBzb2NrZXRfY3R4ICpjdHgsIGludDMyX3Qgc29ja2V0X2lkKTsNCj4gICANCj4gK2lu dA0KPiArc2FfY2hlY2tfb2ZmbG9hZHModWludDE2X3QgcG9ydF9pZCwgdWludDY0X3QgKnJ4X29m ZmxvYWRzLA0KPiArCQl1aW50NjRfdCAqdHhfb2ZmbG9hZHMpOw0KPiArDQo+ICAgI2VuZGlmIC8q IF9fSVBTRUNfSF9fICovDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcHNlYy1zZWNndy9zYS5j IGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvc2EuYw0KPiBpbmRleCBkMmQzNTUwYTQuLmZmOGM0Yjgy OSAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvc2EuYw0KPiArKysgYi9leGFt cGxlcy9pcHNlYy1zZWNndy9zYS5jDQo+IEBAIC0xMDE3LDMgKzEwMTcsNTkgQEAgb3V0Ym91bmRf c2FfbG9va3VwKHN0cnVjdCBzYV9jdHggKnNhX2N0eCwgdWludDMyX3Qgc2FfaWR4W10sDQo+ICAg CWZvciAoaSA9IDA7IGkgPCBuYl9wa3RzOyBpKyspDQo+ICAgCQlzYVtpXSA9ICZzYV9jdHgtPnNh W3NhX2lkeFtpXV07DQo+ICAgfQ0KPiArDQo+ICsvKg0KPiArICogU2VsZWN0IEhXIG9mZmxvYWRz IHRvIGJlIHVzZWQuDQo+ICsgKi8NCj4gK2ludA0KPiArc2FfY2hlY2tfb2ZmbG9hZHModWludDE2 X3QgcG9ydF9pZCwgdWludDY0X3QgKnJ4X29mZmxvYWRzLA0KPiArCQl1aW50NjRfdCAqdHhfb2Zm bG9hZHMpDQo+ICt7DQo+ICsJc3RydWN0IGlwc2VjX3NhICpydWxlOw0KPiArCXVpbnQzMl90IGlk eF9zYTsNCj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5mbyBkZXZfaW5mbzsNCj4gKw0KPiArCXJ0 ZV9ldGhfZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ICsNCj4gKwkqcnhfb2Zm bG9hZHMgPSAwOw0KPiArCSp0eF9vZmZsb2FkcyA9IDA7DQo+ICsNCj4gKwkvKiBDaGVjayBmb3Ig aW5ib3VuZCBydWxlcyB0aGF0IHVzZSBvZmZsb2FkcyBhbmQgdXNlIHRoaXMgcG9ydCAqLw0KPiAr CWZvciAoaWR4X3NhID0gMDsgaWR4X3NhIDwgbmJfc2FfaW47IGlkeF9zYSsrKSB7DQo+ICsJCXJ1 bGUgPSAmc2FfaW5baWR4X3NhXTsNCj4gKwkJaWYgKChydWxlLT50eXBlID09IFJURV9TRUNVUklU WV9BQ1RJT05fVFlQRV9JTkxJTkVfQ1JZUFRPIHx8DQo+ICsJCQkJcnVsZS0+dHlwZSA9PQ0KPiAr CQkJCVJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJPVE9DT0wpDQo+ICsJCQkJJiYg cnVsZS0+cG9ydGlkID09IHBvcnRfaWQpIHsNCj4gKwkJCWlmICgoZGV2X2luZm8ucnhfb2ZmbG9h ZF9jYXBhICYgREVWX1JYX09GRkxPQURfU0VDVVJJVFkpDQo+ICsJCQkJCT09IDApIHsNCj4gKwkJ CQlSVEVfTE9HKFdBUk5JTkcsIFBPUlQsDQo+ICsJCQkJCSJIVyBSWCBJUFNlYyBpcyBub3Qgc3Vw cG9ydGVkXG4iKTsNCj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJCX0NCj4gKwkJCSpyeF9v ZmZsb2FkcyB8PSBERVZfUlhfT0ZGTE9BRF9TRUNVUklUWTsNCj4gKwkJfQ0KPiArCX0NCj4gKw0K PiArCS8qIENoZWNrIGZvciBvdXRib3VuZCBydWxlcyB0aGF0IHVzZSBvZmZsb2FkcyBhbmQgdXNl IHRoaXMgcG9ydCAqLw0KPiArCWZvciAoaWR4X3NhID0gMDsgaWR4X3NhIDwgbmJfc2Ffb3V0OyBp ZHhfc2ErKykgew0KPiArCQlydWxlID0gJnNhX291dFtpZHhfc2FdOw0KPiArCQlpZiAoKHJ1bGUt PnR5cGUgPT0gUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0lOTElORV9DUllQVE8gfHwNCj4gKwkJ CQlydWxlLT50eXBlID09DQo+ICsJCQkJUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0lOTElORV9Q Uk9UT0NPTCkNCj4gKwkJCQkmJiBydWxlLT5wb3J0aWQgPT0gcG9ydF9pZCkgew0KPiArCQkJaWYg KChkZXZfaW5mby50eF9vZmZsb2FkX2NhcGEgJiBERVZfVFhfT0ZGTE9BRF9TRUNVUklUWSkNCj4g KwkJCQkJPT0gMCkgew0KPiArCQkJCVJURV9MT0coV0FSTklORywgUE9SVCwNCj4gKwkJCQkJIkhX IFRYIElQU2VjIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOw0KPiArCQkJCXJldHVybiAtRUlOVkFMOw0K PiArCQkJfQ0KPiArCQkJKnR4X29mZmxvYWRzIHw9IERFVl9UWF9PRkZMT0FEX1NFQ1VSSVRZOw0K PiArCQkJLyogRW5hYmxlIEhXIElQdjQgY2tzdW0gYXMgd2VsbCwgaWYgaXQgaXMgYXZhaWxhYmxl ICovDQo+ICsJCQlpZiAoZGV2X2luZm8udHhfb2ZmbG9hZF9jYXBhICYNCj4gKwkJCQkJREVWX1RY X09GRkxPQURfSVBWNF9DS1NVTSkNCj4gKwkJCQkqdHhfb2ZmbG9hZHMgfD0gREVWX1RYX09GRkxP QURfSVBWNF9DS1NVTTsNCj4gKwkJfQ0KPiArCX0NCj4gKwlyZXR1cm4gMDsNCj4gK30NCg0K