From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <yongwang@vmware.com>
Received: from smtp-outbound-2.vmware.com (smtp-outbound-2.vmware.com
 [208.91.2.13]) by dpdk.org (Postfix) with ESMTP id C896A9AE5
 for <dev@dpdk.org>; Thu, 12 Feb 2015 19:40:32 +0100 (CET)
Received: from sc9-mailhost2.vmware.com (sc9-mailhost2.vmware.com
 [10.113.161.72])
 by smtp-outbound-2.vmware.com (Postfix) with ESMTP id 9284B286DB;
 Thu, 12 Feb 2015 10:40:30 -0800 (PST)
Received: from EX13-CAS-012.vmware.com (EX13-CAS-012.vmware.com
 [10.113.191.64])
 by sc9-mailhost2.vmware.com (Postfix) with ESMTP id 89689A801C;
 Thu, 12 Feb 2015 10:40:30 -0800 (PST)
Received: from EX13-MBX-026.vmware.com (10.113.191.46) by
 EX13-MBX-027.vmware.com (10.113.191.47) with Microsoft SMTP Server (TLS) id
 15.0.913.22; Thu, 12 Feb 2015 10:40:26 -0800
Received: from EX13-MBX-026.vmware.com ([fe80::858b:7f42:fd7c:703d]) by
 EX13-MBX-026.vmware.com ([fe80::858b:7f42:fd7c:703d%17]) with mapi id
 15.00.0913.011; Thu, 12 Feb 2015 10:40:14 -0800
From: Yong Wang <yongwang@vmware.com>
To: Stephen Hemminger <stephen@networkplumber.org>, "dev@dpdk.org"
 <dev@dpdk.org>
Thread-Topic: [dpdk-dev] [PATCH 1/7] vmxnet3: add support for VLAN filtering
Thread-Index: AQHQGbjnOy+BbWwcfUav3O/pvGLeHpztszQA
Date: Thu, 12 Feb 2015 18:40:13 +0000
Message-ID: <D10174AF.34FE7%yongwang@vmware.com>
References: <1418793196-17953-1-git-send-email-stephen@networkplumber.org>
 <1418793196-17953-2-git-send-email-stephen@networkplumber.org>
In-Reply-To: <1418793196-17953-2-git-send-email-stephen@networkplumber.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.113.160.246]
Content-Type: text/plain; charset="utf-8"
Content-ID: <BEA715BE8469394EA7A4A411276E35D7@pa-exch1.vmware.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Cc: Stephen Hemminger <shemming@brocade.com>
Subject: Re: [dpdk-dev] [PATCH 1/7] vmxnet3: add support for VLAN filtering
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Feb 2015 18:40:33 -0000

T24gMTIvMTYvMTQsIDk6MTMgUE0sICJTdGVwaGVuIEhlbW1pbmdlciIgPHN0ZXBoZW5AbmV0d29y
a3BsdW1iZXIub3JnPg0Kd3JvdGU6DQoNCj5Gcm9tOiBTdGVwaGVuIEhlbW1pbmdlciA8c2hlbW1p
bmdAYnJvY2FkZS5jb20+DQo+DQo+Vk1YTkVUMyBzdXBwb3J0cyBjb25maWd1cmluZyBmaWx0ZXIg
dGFibGUgaW4gaG9zdC4NCj4NCj5TaWduZWQtb2ZmLWJ5OiBTdGVwaGVuIEhlbW1pbmdlciA8c3Rl
cGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+DQo+LS0tDQo+IGxpYi9saWJydGVfcG1kX3ZteG5ldDMv
dm14bmV0M19ldGhkZXYuYyB8IDEwNw0KPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t
DQo+IGxpYi9saWJydGVfcG1kX3ZteG5ldDMvdm14bmV0M19ldGhkZXYuaCB8ICAgMiArLQ0KPiBs
aWIvbGlicnRlX3BtZF92bXhuZXQzL3ZteG5ldDNfcnh0eC5jICAgfCAgMjUgLS0tLS0tLS0NCj4g
MyBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkNCj4NCj5k
aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9wbWRfdm14bmV0My92bXhuZXQzX2V0aGRldi5jDQo+Yi9s
aWIvbGlicnRlX3BtZF92bXhuZXQzL3ZteG5ldDNfZXRoZGV2LmMNCj5pbmRleCBlZjBhZjE2Li4z
MGQwNjU5IDEwMDY0NA0KPi0tLSBhL2xpYi9saWJydGVfcG1kX3ZteG5ldDMvdm14bmV0M19ldGhk
ZXYuYw0KPisrKyBiL2xpYi9saWJydGVfcG1kX3ZteG5ldDMvdm14bmV0M19ldGhkZXYuYw0KPkBA
IC04Nyw2ICs4NywxMiBAQCBzdGF0aWMgdm9pZCB2bXhuZXQzX2Rldl9zdGF0c19nZXQoc3RydWN0
IHJ0ZV9ldGhfZGV2DQo+KmRldiwNCj4gCQkJCXN0cnVjdCBydGVfZXRoX3N0YXRzICpzdGF0cyk7
DQo+IHN0YXRpYyB2b2lkIHZteG5ldDNfZGV2X2luZm9fZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAq
ZGV2LA0KPiAJCQkJc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gKmRldl9pbmZvKTsNCj4rc3RhdGlj
IGludCB2bXhuZXQzX2Rldl92bGFuX2ZpbHRlcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs
DQo+KwkJCQkgICAgICAgdWludDE2X3QgdmlkLCBpbnQgb24pOw0KPitzdGF0aWMgdm9pZCB2bXhu
ZXQzX2Rldl92bGFuX29mZmxvYWRfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBpbnQNCj5t
YXNrKTsNCj4rc3RhdGljIHZvaWQgdm14bmV0M19kZXZfdmxhbl9vZmZsb2FkX3NldF9jbGVhcihz
dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4rCQkJCQkJaW50IG1hc2ssIGludCBjbGVhcik7DQo+
Kw0KPiAjaWYgUFJPQ0VTU19TWVNfRVZFTlRTID09IDENCj4gc3RhdGljIHZvaWQgdm14bmV0M19w
cm9jZXNzX2V2ZW50cyhzdHJ1Y3Qgdm14bmV0M19odyAqKTsNCj4gI2VuZGlmDQo+QEAgLTExMyw2
ICsxMTksOCBAQCBzdGF0aWMgc3RydWN0IGV0aF9kZXZfb3BzIHZteG5ldDNfZXRoX2Rldl9vcHMg
PSB7DQo+IAkubGlua191cGRhdGUgICAgICAgICAgPSB2bXhuZXQzX2Rldl9saW5rX3VwZGF0ZSwN
Cj4gCS5zdGF0c19nZXQgICAgICAgICAgICA9IHZteG5ldDNfZGV2X3N0YXRzX2dldCwNCj4gCS5k
ZXZfaW5mb3NfZ2V0ICAgICAgICA9IHZteG5ldDNfZGV2X2luZm9fZ2V0LA0KPisJLnZsYW5fZmls
dGVyX3NldCAgICAgID0gdm14bmV0M19kZXZfdmxhbl9maWx0ZXJfc2V0LA0KPisJLnZsYW5fb2Zm
bG9hZF9zZXQgICAgID0gdm14bmV0M19kZXZfdmxhbl9vZmZsb2FkX3NldCwNCj4gCS5yeF9xdWV1
ZV9zZXR1cCAgICAgICA9IHZteG5ldDNfZGV2X3J4X3F1ZXVlX3NldHVwLA0KPiAJLnJ4X3F1ZXVl
X3JlbGVhc2UgICAgID0gdm14bmV0M19kZXZfcnhfcXVldWVfcmVsZWFzZSwNCj4gCS50eF9xdWV1
ZV9zZXR1cCAgICAgICA9IHZteG5ldDNfZGV2X3R4X3F1ZXVlX3NldHVwLA0KPkBAIC0zNzEsNyAr
Mzc5LDcgQEAgdm14bmV0M19zZXR1cF9kcml2ZXJfc2hhcmVkKHN0cnVjdCBydGVfZXRoX2RldiAq
ZGV2KQ0KPiAJVm14bmV0M19EU0RldlJlYWQgKmRldlJlYWQgPSAmc2hhcmVkLT5kZXZSZWFkOw0K
PiAJdWludDMyX3QgKm1hY19wdHI7DQo+IAl1aW50MzJfdCB2YWwsIGk7DQo+LQlpbnQgcmV0Ow0K
PisJaW50IHJldCwgbWFzazsNCj4gDQo+IAlzaGFyZWQtPm1hZ2ljID0gVk1YTkVUM19SRVYxX01B
R0lDOw0KPiAJZGV2UmVhZC0+bWlzYy5kcml2ZXJJbmZvLnZlcnNpb24gPSBWTVhORVQzX0RSSVZF
Ul9WRVJTSU9OX05VTTsNCj5AQCAtNDQyLDkgKzQ1MCw2IEBAIHZteG5ldDNfc2V0dXBfZHJpdmVy
X3NoYXJlZChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gCWlmIChkZXYtPmRhdGEtPmRldl9j
b25mLnJ4bW9kZS5od19pcF9jaGVja3N1bSkNCj4gCQlkZXZSZWFkLT5taXNjLnVwdEZlYXR1cmVz
IHw9IFZNWE5FVDNfRl9SWENTVU07DQo+IA0KPi0JaWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmYucnht
b2RlLmh3X3ZsYW5fc3RyaXApDQo+LQkJZGV2UmVhZC0+bWlzYy51cHRGZWF0dXJlcyB8PSBWTVhO
RVQzX0ZfUlhWTEFOOw0KPi0NCj4gCWlmIChwb3J0X2NvbmYucnhtb2RlLm1xX21vZGUgPT0gRVRI
X01RX1JYX1JTUykgew0KPiAJCXJldCA9IHZteG5ldDNfcnNzX2NvbmZpZ3VyZShkZXYpOw0KPiAJ
CWlmIChyZXQgIT0gVk1YTkVUM19TVUNDRVNTKQ0KPkBAIC00NTYsMTEgKzQ2MSwxNCBAQCB2bXhu
ZXQzX3NldHVwX2RyaXZlcl9zaGFyZWQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+IAkJZGV2
UmVhZC0+cnNzQ29uZkRlc2MuY29uZlBBICA9IGh3LT5yc3NfY29uZlBBOw0KPiAJfQ0KPiANCj4t
CWlmIChkZXYtPmRhdGEtPmRldl9jb25mLnJ4bW9kZS5od192bGFuX2ZpbHRlcikgew0KPi0JCXJl
dCA9IHZteG5ldDNfdmxhbl9jb25maWd1cmUoZGV2KTsNCj4tCQlpZiAocmV0ICE9IFZNWE5FVDNf
U1VDQ0VTUykNCj4tCQkJcmV0dXJuIHJldDsNCj4tCX0NCj4rCW1hc2sgPSAwOw0KPisJaWYgKGRl
di0+ZGF0YS0+ZGV2X2NvbmYucnhtb2RlLmh3X3ZsYW5fc3RyaXApDQo+KwkJbWFzayB8PSBFVEhf
VkxBTl9TVFJJUF9NQVNLOw0KPisNCj4rCWlmIChkZXYtPmRhdGEtPmRldl9jb25mLnJ4bW9kZS5o
d192bGFuX2ZpbHRlcikNCj4rCQltYXNrIHw9IEVUSF9WTEFOX0ZJTFRFUl9NQVNLOw0KPisNCj4r
CXZteG5ldDNfZGV2X3ZsYW5fb2ZmbG9hZF9zZXRfY2xlYXIoZGV2LCBtYXNrLCAxKTsNCj4gDQo+
IAlQTURfSU5JVF9MT0coREVCVUcsDQo+IAkJICAgICAiV3JpdGluZyBNQUMgQWRkcmVzcyA6ICUw
Mng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4IiwNCj5AQCAtNjkwLDEzICs2OTgsMjMgQEAgdm14
bmV0M19kZXZfc2V0X3J4bW9kZShzdHJ1Y3Qgdm14bmV0M19odyAqaHcsDQo+dWludDMyX3QgZmVh
dHVyZSwgaW50IHNldCkgew0KPiAJVk1YTkVUM19XUklURV9CQVIxX1JFRyhodywgVk1YTkVUM19S
RUdfQ01ELCBWTVhORVQzX0NNRF9VUERBVEVfUlhfTU9ERSk7DQo+IH0NCj4gDQo+K3N0YXRpYyB2
b2lkDQo+K3ZteG5ldDNfZGV2X3VwZGF0ZV9maWx0ZXJzKHN0cnVjdCB2bXhuZXQzX2h3ICpodykN
Cj4rew0KPisJVk1YTkVUM19XUklURV9CQVIxX1JFRyhodywgVk1YTkVUM19SRUdfQ01ELA0KPisJ
CQkgICAgICAgVk1YTkVUM19DTURfVVBEQVRFX1ZMQU5fRklMVEVSUyk7DQo+K30NCg0KVGhpcyBm
dW5jdGlvbiBpcyBub3QgcmVhbGx5IG5lY2Vzc2FyeSBnaXZlbiB3aGF0IGl0IGRvZXMuICBJZiB5
b3UgcHJlZmVyDQp0byBrZWVwIGl0LCBwbGVhc2UgcmVuYW1lIGl0IHRvIHZteG5ldDNfZGV2X3Vw
ZGF0ZV92bGFuX2ZpbHRlcnMgdG8gYmUgbW9yZQ0KcHJlY2lzZS4NCg0KPisNCj4gLyogUHJvbWlz
Y3VvdXMgc3VwcG9ydGVkIG9ubHkgaWYgVm14bmV0M19Ecml2ZXJTaGFyZWQgaXMgaW5pdGlhbGl6
ZWQgaW4NCj5hZGFwdGVyICovDQo+IHN0YXRpYyB2b2lkDQo+IHZteG5ldDNfZGV2X3Byb21pc2N1
b3VzX2VuYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gew0KPiAJc3RydWN0IHZteG5l
dDNfaHcgKmh3ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4rCXVpbnQzMl90ICp2Zl90YWJs
ZSA9IGh3LT5zaGFyZWQtPmRldlJlYWQucnhGaWx0ZXJDb25mLnZmVGFibGU7DQo+IA0KPisJbWVt
c2V0KHZmX3RhYmxlLCAwLCBWTVhORVQzX1ZGVF9TSVpFICogc2l6ZW9mKCp2Zl90YWJsZSkpOw0K
PiAJdm14bmV0M19kZXZfc2V0X3J4bW9kZShodywgVk1YTkVUM19SWE1fUFJPTUlTQywgMSk7DQo+
Kwl2bXhuZXQzX2Rldl91cGRhdGVfZmlsdGVycyhodyk7DQo+IH0NCj4gDQo+IC8qIFByb21pc2N1
b3VzIHN1cHBvcnRlZCBvbmx5IGlmIFZteG5ldDNfRHJpdmVyU2hhcmVkIGlzIGluaXRpYWxpemVk
IGluDQo+YWRhcHRlciAqLw0KPkBAIC03MDQsOCArNzIyLDExIEBAIHN0YXRpYyB2b2lkDQo+IHZt
eG5ldDNfZGV2X3Byb21pc2N1b3VzX2Rpc2FibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+
IHsNCj4gCXN0cnVjdCB2bXhuZXQzX2h3ICpodyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+
Kwl1aW50MzJfdCAqdmZfdGFibGUgPSBody0+c2hhcmVkLT5kZXZSZWFkLnJ4RmlsdGVyQ29uZi52
ZlRhYmxlOw0KPiANCj4rCW1lbXNldCh2Zl90YWJsZSwgMCwgVk1YTkVUM19WRlRfU0laRSAqIHNp
emVvZigqdmZfdGFibGUpKTsNCg0KUmF0aGVyIHRoYW4gY2xlYXJpbmcgYWxsIHZsYW4gZmlsdGVy
cywgd2Ugc2hvdWxkIHJlc3RvcmUgdGhlIHNhdmVkIGZpbHRlcnMNCmluIHNoYWRvd192ZnRhIGJl
Zm9yZSBwcm9taXNjdW91cyBtb2RlIGlzIGVuYWJsZWQuICBUaGlzIGlzIGFsc28gbmVlZGVkDQp3
aGVuIHRoZSBkZXZpY2UgaXMgc3RvcHBlZC9yZXN0YXJ0ZWQuDQoNCj4gCXZteG5ldDNfZGV2X3Nl
dF9yeG1vZGUoaHcsIFZNWE5FVDNfUlhNX1BST01JU0MsIDApOw0KPisJdm14bmV0M19kZXZfdXBk
YXRlX2ZpbHRlcnMoaHcpOw0KPiB9DQo+IA0KPiAvKiBBbGxtdWx0aWNhc3Qgc3VwcG9ydGVkIG9u
bHkgaWYgVm14bmV0M19Ecml2ZXJTaGFyZWQgaXMgaW5pdGlhbGl6ZWQgaW4NCj5hZGFwdGVyICov
DQo+QEAgLTcyNiw2ICs3NDcsNzQgQEAgdm14bmV0M19kZXZfYWxsbXVsdGljYXN0X2Rpc2FibGUo
c3RydWN0IHJ0ZV9ldGhfZGV2DQo+KmRldikNCj4gCXZteG5ldDNfZGV2X3NldF9yeG1vZGUoaHcs
IFZNWE5FVDNfUlhNX0FMTF9NVUxUSSwgMCk7DQo+IH0NCj4gDQo+Ky8qIEVuYWJsZS9kaXNhYmxl
IGZpbHRlciBvbiB2bGFuICovDQo+K3N0YXRpYyBpbnQNCj4rdm14bmV0M19kZXZfdmxhbl9maWx0
ZXJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCB2aWQsIGludA0KPm9uKQ0K
Pit7DQo+KwlzdHJ1Y3Qgdm14bmV0M19odyAqaHcgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0K
PisJc3RydWN0IFZteG5ldDNfUnhGaWx0ZXJDb25mICpyeENvbmYgPSAmaHctPnNoYXJlZC0+ZGV2
UmVhZC5yeEZpbHRlckNvbmY7DQo+Kwl1aW50MzJfdCAqdmZfdGFibGUgPSBody0+c2hhcmVkLT5k
ZXZSZWFkLnJ4RmlsdGVyQ29uZi52ZlRhYmxlOw0KDQpTaW5jZSB5b3UgYWxyZWFkeSBkZWZpbmVk
IHJ4Q29uZiwgdmZfdGFibGUgY2FuIGJlIGRlZmluZWQgYXM6DQp1aW50MzJfdCAqdmZfdGFibGUg
PSByeENvbmYtPnZmVGFibGU7DQoNCj4rDQo+KwkvKiBzYXZlIHN0YXRlIGZvciByZXN0b3JlICov
DQo+KwlpZiAob24pDQo+KwkJVk1YTkVUM19TRVRfVkZUQUJMRV9FTlRSWShody0+c2hhZG93X3Zm
dGEsIHZpZCk7DQo+KwllbHNlDQo+KwkJVk1YTkVUM19DTEVBUl9WRlRBQkxFX0VOVFJZKGh3LT5z
aGFkb3dfdmZ0YSwgdmlkKTsNCj4rDQo+KwkvKiBkb24ndCBjaGFuZ2UgYWN0aXZlIGZpbHRlciBp
ZiBpbiBwcm9taXNjaW91cyBtb2RlICovDQo+KwlpZiAocnhDb25mLT5yeE1vZGUgJiBWTVhORVQz
X1JYTV9QUk9NSVNDKQ0KPisJCXJldHVybiAwOw0KPisNCj4rCS8qIHNldCBpbiBoYXJkd2FyZSAq
Lw0KPisJaWYgKG9uKQ0KPisJCVZNWE5FVDNfU0VUX1ZGVEFCTEVfRU5UUlkodmZfdGFibGUsIHZp
ZCk7DQo+KwllbHNlDQo+KwkJVk1YTkVUM19DTEVBUl9WRlRBQkxFX0VOVFJZKHZmX3RhYmxlLCB2
aWQpOw0KPisNCj4rCXZteG5ldDNfZGV2X3VwZGF0ZV9maWx0ZXJzKGh3KTsNCj4rCXJldHVybiAw
Ow0KPit9DQo+Kw0KPisNCj4rc3RhdGljIHZvaWQNCj4rdm14bmV0M19kZXZfdmxhbl9vZmZsb2Fk
X3NldF9jbGVhcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4rCQkJCQkJaW50IG1hc2ssIGlu
dCBjbGVhcikNCg0KUmVtb3ZlIG9uIHRhYiBoZXJlIGZvciBiZXR0ZXIgaW5kZW50aW9uLg0KDQo+
K3sNCj4rCXN0cnVjdCB2bXhuZXQzX2h3ICpodyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+
Kwl1aW50MzJfdCAqdmZfdGFibGUgPSBody0+c2hhcmVkLT5kZXZSZWFkLnJ4RmlsdGVyQ29uZi52
ZlRhYmxlOw0KPisJVm14bmV0M19EU0RldlJlYWQgKmRldlJlYWQgPSAmaHctPnNoYXJlZC0+ZGV2
UmVhZDsNCg0KZGV2UmVhZCBjYW4gYmUgZGVmaW5lZCBiZWZvcmUgdmZfdGFibGUgYW5kIHZmX3Rh
YmxlIGFzDQpkZXZSZWFkLT5yeEZpbHRlckNvbmYudmZUYWJsZS4NCg0KPisNCj4rCWlmIChtYXNr
ICYgRVRIX1ZMQU5fU1RSSVBfTUFTSykNCj4rCQlkZXZSZWFkLT5taXNjLnVwdEZlYXR1cmVzIHw9
IFVQVDFfRl9SWFZMQU47DQo+KwllbHNlDQo+KwkJZGV2UmVhZC0+bWlzYy51cHRGZWF0dXJlcyAm
PSB+VVBUMV9GX1JYVkxBTjsNCg0KVGhlcmUgaXMgYSBtaXNzaW5nIFJFRyB3cml0ZSBhZnRlciBt
YWtpbmcgY2hhbmdlcyB0byB1cHRGZWF0dXJlcyBmcm9tDQp0aGUgLnZsYW5fb2ZmbG9hZF9zZXQg
Y2FsbGJhY2sgcGF0aCAoaS5lLCB3aGVuIOKAnGNsZWFyIiBpcyAwKS4NCg0KVk1YTkVUM19XUklU
RV9CQVIxX1JFRyhzYywgVk1YTkVUM19SRUdfQ01ELCBWTVhORVQzX0NNRF9VUERBVEVfRkVBVFVS
RSk7DQoNCj4rDQo+KwlpZiAobWFzayAmIEVUSF9WTEFOX0ZJTFRFUl9NQVNLKSB7DQo+KwkJaWYg
KGNsZWFyKSB7DQo+KwkJCW1lbXNldChody0+c2hhZG93X3ZmdGEsIDAsDQo+KwkJCQkJVk1YTkVU
M19WRlRfU0laRSAqIHNpemVvZih1aW50MzJfdCkpOw0KDQpSZW1vdmUgb25lIHRhYiBoZXJlIGZv
ciBiZXR0ZXIgaW5kZW50aW9uLg0KDQpJbnN0ZWFkIG9mIHVpbnQzMl90LCBjaGFuZ2UgaXQgdG8g
c2l6ZW9mKCpody0+c2hhZG93X3ZmdGEpIHRvIGJlDQpjb25zaXN0ZW50IHdpdGggdGhlIG1lbXNl
dCBvZiB2Zl90YWJsZS4NCg0KIA0KPisJCQkvKiBhbGxvdyB1bnRhZ2dlZCBwa3RzICovDQo+KwkJ
CVZNWE5FVDNfU0VUX1ZGVEFCTEVfRU5UUlkoaHctPnNoYWRvd192ZnRhLCAwKTsNCj4rCQl9DQo+
KwkJbWVtY3B5KHZmX3RhYmxlLCBody0+c2hhZG93X3ZmdGEsDQo+KwkJCQlWTVhORVQzX1ZGVF9T
SVpFICogc2l6ZW9mKCp2Zl90YWJsZSkpOw0KPisJfSBlbHNlIHsNCj4rCQkvKiBhbGxvdyBhbnkg
cGt0cyAtLSBubyBmaWx0ZXJpbmcgKi8NCj4rCQlpZiAoY2xlYXIpDQo+KwkJCW1lbXNldChody0+
c2hhZG93X3ZmdGEsIDB4ZmYsDQo+KwkJCQlWTVhORVQzX1ZGVF9TSVpFICogc2l6ZW9mKHVpbnQz
Ml90KSk7DQo+KwkJbWVtc2V0KHZmX3RhYmxlLCAweGZmLCBWTVhORVQzX1ZGVF9TSVpFICogc2l6
ZW9mKHVpbnQzMl90KSk7DQoNClNhbWUgaGVyZS4NCg0KPisJfQ0KPisNCj4rCXZteG5ldDNfZGV2
X3VwZGF0ZV9maWx0ZXJzKGh3KTsNCj4rfQ0KPisNCj4rc3RhdGljIHZvaWQNCj4rdm14bmV0M19k
ZXZfdmxhbl9vZmZsb2FkX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50IG1hc2spDQo+
K3sNCj4rCXZteG5ldDNfZGV2X3ZsYW5fb2ZmbG9hZF9zZXRfY2xlYXIoZGV2LCBtYXNrLCAwKTsN
Cj4rfQ0KPisNCj4gI2lmIFBST0NFU1NfU1lTX0VWRU5UUyA9PSAxDQo+IHN0YXRpYyB2b2lkDQo+
IHZteG5ldDNfcHJvY2Vzc19ldmVudHMoc3RydWN0IHZteG5ldDNfaHcgKmh3KQ0KPmRpZmYgLS1n
aXQgYS9saWIvbGlicnRlX3BtZF92bXhuZXQzL3ZteG5ldDNfZXRoZGV2LmgNCj5iL2xpYi9saWJy
dGVfcG1kX3ZteG5ldDMvdm14bmV0M19ldGhkZXYuaA0KPmluZGV4IDA5NDFjZmMuLjJjMTgwYWQg
MTAwNjQ0DQo+LS0tIGEvbGliL2xpYnJ0ZV9wbWRfdm14bmV0My92bXhuZXQzX2V0aGRldi5oDQo+
KysrIGIvbGliL2xpYnJ0ZV9wbWRfdm14bmV0My92bXhuZXQzX2V0aGRldi5oDQo+QEAgLTExNSw2
ICsxMTUsNyBAQCBzdHJ1Y3Qgdm14bmV0M19odyB7DQo+IAlWTVhORVQzX1JTU0NvbmYJCSAqcnNz
X2NvbmY7DQo+IAl1aW50NjRfdAkJCSByc3NfY29uZlBBOw0KPiAJdm14bmV0M19tZl90YWJsZV90
ICAgKm1mX3RhYmxlOw0KPisJdWludDMyX3QJICAgICAgc2hhZG93X3ZmdGFbVk1YTkVUM19WRlRf
U0laRV07DQo+IH07DQo+IA0KPiAjZGVmaW5lIFZNWE5FVDNfR0VUX0FERFJfTE8ocmVnKSAgICgo
dWludDMyX3QpKHJlZykpDQo+QEAgLTE2Nyw3ICsxNjgsNiBAQCBpbnQgIHZteG5ldDNfZGV2X3R4
X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfZXRoX2Rldg0KPipkZXYsIHVpbnQxNl90IHR4X3F1ZXVl
X2lkLA0KPiBpbnQgdm14bmV0M19kZXZfcnh0eF9pbml0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2
KTsNCj4gDQo+IGludCB2bXhuZXQzX3Jzc19jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk
ZXYpOw0KPi1pbnQgdm14bmV0M192bGFuX2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl
dik7DQo+IA0KPiB1aW50MTZfdCB2bXhuZXQzX3JlY3ZfcGt0cyh2b2lkICpyeF9xdWV1ZSwgc3Ry
dWN0IHJ0ZV9tYnVmICoqcnhfcGt0cywNCj4gCQl1aW50MTZfdCBuYl9wa3RzKTsNCj5kaWZmIC0t
Z2l0IGEvbGliL2xpYnJ0ZV9wbWRfdm14bmV0My92bXhuZXQzX3J4dHguYw0KPmIvbGliL2xpYnJ0
ZV9wbWRfdm14bmV0My92bXhuZXQzX3J4dHguYw0KPmluZGV4IDg0MjVmMzIuLjk4NzFmMTYgMTAw
NjQ0DQo+LS0tIGEvbGliL2xpYnJ0ZV9wbWRfdm14bmV0My92bXhuZXQzX3J4dHguYw0KPisrKyBi
L2xpYi9saWJydGVfcG1kX3ZteG5ldDMvdm14bmV0M19yeHR4LmMNCj5AQCAtMTA1MSwyOCArMTA1
MSwzIEBAIHZteG5ldDNfcnNzX2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4g
DQo+IAlyZXR1cm4gVk1YTkVUM19TVUNDRVNTOw0KPiB9DQo+LQ0KPi0vKg0KPi0gKiBDb25maWd1
cmUgVkxBTiBGaWx0ZXIgZmVhdHVyZQ0KPi0gKi8NCj4taW50DQo+LXZteG5ldDNfdmxhbl9jb25m
aWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+LXsNCj4tCXVpbnQ4X3QgaTsNCj4tCXN0
cnVjdCB2bXhuZXQzX2h3ICpodyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+LQl1aW50MzJf
dCAqdmZfdGFibGUgPSBody0+c2hhcmVkLT5kZXZSZWFkLnJ4RmlsdGVyQ29uZi52ZlRhYmxlOw0K
Pi0NCj4tCVBNRF9JTklUX0ZVTkNfVFJBQ0UoKTsNCj4tDQo+LQkvKiBWZXJpZnkgaWYgdGhpcyB0
YWcgaXMgYWxyZWFkeSBzZXQgKi8NCj4tCWZvciAoaSA9IDA7IGkgPCBWTVhORVQzX1ZGVF9TSVpF
OyBpKyspIHsNCj4tCQkvKiBGaWx0ZXIgYWxsIHZsYW4gdGFncyBvdXQgYnkgZGVmYXVsdCAqLw0K
Pi0JCXZmX3RhYmxlW2ldID0gMDsNCj4tCQkvKiBUby1EbzogUHJvdmlkZSBhbm90aGVyIHJvdXRp
bmUgaW4gZGV2X29wcyBmb3IgdXNlciBjb25maWcgKi8NCj4tDQo+LQkJUE1EX0lOSVRfTE9HKERF
QlVHLCAiUmVnaXN0ZXJpbmcgVkxBTiBwb3J0aWQ6ICUiUFJJdTgiIHRhZyAldSIsDQo+LQkJCQkJ
ZGV2LT5kYXRhLT5wb3J0X2lkLCB2Zl90YWJsZVtpXSk7DQo+LQl9DQo+LQ0KPi0JcmV0dXJuIFZN
WE5FVDNfU1VDQ0VTUzsNCj4tfQ0KPi0tIA0KPjIuMS4zDQoNCg0K