SGkgQ2Flc2FyLA0KDQpJdCBwcm92ZWQgdG8gYmUgYSBmZWF0dXJlIHRvIGdldCBiZXR0ZXIgc2Nh
biByZXN1bHQgZnJvbSBvdmVybGFwcGluZyBjaGFubmVsLCBpbnRyb2R1Y2VkIGluDQoNCmNvbW1p
dCAxYjQ5OWNiNzJmMjZiYmY0NGYyZmExNThjMmQxNDg3NzMwYWFlOTZhDQpBdXRob3I6IEFtaXRr
dW1hciBLYXJ3YXIgPGFrYXJ3YXJAbWFydmVsbC5jb20+DQpEYXRlOiAgIFN1biBBcHIgMjQgMjM6
NDk6NTEgMjAxNiAtMDcwMA0KDQogICAgbXdpZmlleDogZGlzYWJsZSBjaGFubmVsIGZpbHRlcmlu
ZyBmZWF0dXJlIGluIGZpcm13YXJlDQogICAgDQogICAgQXMgMi40R2h6IGNoYW5uZWxzIGFyZSBv
dmVybGFwcGluZywgc29tZXRpbWVzIEFQIHJlc3BvbmRzIHRvDQogICAgcHJvYmUgcmVxdWVzdCBl
dmVuIGlmIGl0J3Mgb3BlcmF0aW5nIG9uIG5laWdoYm91cmluZyBjaGFubmVsLg0KICAgIEN1cnJl
bnRseSBmaXJtd2FyZSBkcm9wcyB0aG9zZSBzY2FuIGVudHJpZXMsIGFzIGN1cnJlbnQgY2hhbm5l
bA0KICAgIGRvZXNuJ3QgbWF0Y2ggd2l0aCBBUHMgY2hhbm5lbC4NCiAgICANCiAgICBUaGlzIHBh
dGNoIGVuYWJsZXMgTVdJRklFWF9ESVNBQkxFX0NIQU5fRklMVCBmbGFnIGluIHNjYW4NCiAgICBj
b21tYW5kIHRvIGRpc2FibGUgdGhlIGZlYXR1cmUgc28gdGhhdCBiZXR0ZXIgc2NhbiByZXN1bHRz
DQogICAgd2lsbCBiZSByZWNlaXZlZCBpbiAyLjRHaHogYmFuZC4NCg0KQXMgSSBjYW4gc2VlLCBl
dmVuIHRoZXJlIGNvdWxkIGJlIEFQIGZyb20gb3ZlcmxhcHBpbmcgY2hhbm5lbCAobWlnaHQgYmUg
MTIvMTMvMTQgaW4gdGhpcyBjYXNlKSwgIGl0IHdpbGwgYmUgZmlsdGVyZWQgZGVwZW5kIG9uIHJl
ZyBkb21haW4gcnVsZXMNCiANCiAgICAgICBpZiAoY2gtPmZsYWdzICYgSUVFRTgwMjExX0NIQU5f
RElTQUJMRUQpDQogICAgICAgICAgICBjb250aW51ZTsNCg0Kc28gaXQgc2hvdWxkIG5vdCBiZWVu
IGFuIEVSUk9SLiBXQVJOIGxvb2tzIGZpbmUgdG8gbWUuDQp5b3UgY2FuIGFkZCBtZSBhY2tlZC1i
eSBpbiB2Mi4NCg0KDQpSZWdhcmRzLA0KU2ltb24NCkZyb206IENhZXNhciBXYW5nIFttYWlsdG86
d3h0QHJvY2stY2hpcHMuY29tXSANClNlbnQ6IDIwMTflubQ25pyIMTPml6UgMTg6NTINClRvOiBY
aW5taW5nIEh1OyBLYWxsZSBWYWxvOyBaaGl5dWFuIFlhbmc7IENhdGh5IEx1bw0KQ2M6IGFtaXRr
YXJ3YXJAZ21haWwuY29tOyBOaXNoYW50IFNhcm11a2FkYW07IEdhbmFwYXRoaSBCaGF0OyBsaW51
eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmc7IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4
LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGJyaWFubm9ycmlzQGNocm9taXVtLm9yZzsgamVmZnku
Y2hlbkByb2NrLWNoaXBzLmNvbTsgR2FuYXBhdGhpIEJoYXQNClN1YmplY3Q6IFtFWFRdIFJlOiBb
UEFUQ0hdIG13aWZpZXg6IGZpeGVzIHRoZSB0cml2aWFsIHByaW50DQoNCkV4dGVybmFsIEVtYWls
IA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KSGkgWGlubWluZywN
CkFzIGlzc3VlIHRyYWNrZWQgb24gaHR0cHM6Ly9wYXJ0bmVyaXNzdWV0cmFja2VyLmNvcnAuZ29v
Z2xlLmNvbS91LzIvaXNzdWVzLzYyMTIyODQzDQoNCg0K5ZyoIDIwMTflubQwNuaciDEz5pelIDE3
OjUxLCBYaW5taW5nIEh1IOWGmemBkzoNCkhpIENhZXNhciwNCg0KVGhlIG9yaWdpbmFsIGxvZyBp
biBnb29nbGUgaXNzdWUgdHJhY2tlciBzaG93IHRoZXJlIGV4aXN0IEFQIGluIGNoYW5uZWwgMTMg
YWZ0ZXIgcGVyaW9kaWNhbGx5IHNjYW4uIA0KUGVyIG15IHVuZGVyc3RhbmQsIGlmIHJlZyBkb21h
aW4gaXMgc2V0IHRvIFVTLCAgY2hhbm5lbCAxMi8xMy8xNCB3aWxsIG5vdCBnZXQgY2hhbmNlIHRv
IHNjYW4uICh0ZXN0IHVzaW5nIGl3L3dwYV9zdXBwbGljYW50KS4NCkkgYW0gY3VyaW91cyBhYm91
dCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgZGlmZiBmcm9tIHVwcGVyIGxheWVyLg0KDQpBcyBhIHRl
c3QsIHlvdSBjYW4gcHJpbnQgdGhlIHNjYW4gY2hhbm5lbCBsaXN0LCBhcyBiZWxvdzoNCg0KZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5j
IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMNCmluZGV4
IGE3NTkzYWEuLmEyODk4MTggMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2
ZWxsL213aWZpZXgvY2ZnODAyMTEuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVs
bC9td2lmaWV4L2NmZzgwMjExLmMNCkBAIC0yNTcyLDYgKzI1NzIsNyBAQCBzdGF0aWMgaW50IG13
aWZpZXhfc2V0X2lic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNV0lGSUVYX1VTRVJfU0NBTl9DSEFOX01BWCk7IGkr
Kykgew0KICAgICAgICAgICAgICAgIGNoYW4gPSByZXF1ZXN0LT5jaGFubmVsc1tpXTsNCiAgICAg
ICAgICAgICAgICB1c2VyX3NjYW5fY2ZnLT5jaGFuX2xpc3RbaV0uY2hhbl9udW1iZXIgPSBjaGFu
LT5od192YWx1ZTsNCisgICAgICAgICAgICAgICBwcl9lcnIoImNoYW4tPmh3X3ZhbHVlID0gJWQi
LCBjaGFuLT5od192YWx1ZSk7DQogICAgICAgICAgICAgICAgdXNlcl9zY2FuX2NmZy0+Y2hhbl9s
aXN0W2ldLnJhZGlvX3R5cGUgPSBjaGFuLT5iYW5kOw0KIA0KICAgICAgICAgICAgICAgIGlmICgo
Y2hhbi0+ZmxhZ3MgJiBJRUVFODAyMTFfQ0hBTl9OT19JUikgfHwgIXJlcXVlc3QtPm5fc3NpZHMp
DQoNClRoZSBiZWxvdyBhcyB0aGUgcmVxdWlyZWQgbG9nOg0KbG9jYWxob3N0IC8gIyBbwqDCoCA0
Ni43NjA5OTddIG13aWZpZXg6IGNoYW4tPmh3X3ZhbHVlID0gMQ0KW8KgwqAgNDYuNzY0ODc4XSBt
d2lmaWV4OiBjaGFuLT5od192YWx1ZSA9IDINClvCoMKgIDQ2Ljc2ODc2NV0gbXdpZmlleDogY2hh
bi0+aHdfdmFsdWUgPSAzDQpbwqDCoCA0Ni43NzI2MjVdIG13aWZpZXg6IGNoYW4tPmh3X3ZhbHVl
ID0gNA0KW8KgwqAgNDYuNzc2NjA4XSBtd2lmaWV4OiBjaGFuLT5od192YWx1ZSA9IDUNClvCoMKg
IDQ2Ljc4MDQ4NV0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSA2DQpbwqDCoCA0Ni43ODQzODRd
IG13aWZpZXg6IGNoYW4tPmh3X3ZhbHVlID0gNw0KW8KgwqAgNDYuNzg4MjUyXSBtd2lmaWV4OiBj
aGFuLT5od192YWx1ZSA9IDgNClvCoMKgIDQ2Ljc5MjE4NV0gbXdpZmlleDogY2hhbi0+aHdfdmFs
dWUgPSA5DQpbwqDCoCA0Ni43OTYwMzZdIG13aWZpZXg6IGNoYW4tPmh3X3ZhbHVlID0gMTANClvC
oMKgIDQ2Ljc5OTk3OF0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxMQ0KW8KgwqAgNDYuODAz
OTA4XSBtd2lmaWV4OiBjaGFuLT5od192YWx1ZSA9IDM4DQpbwqDCoCA0Ni44MDc4NDddIG13aWZp
ZXg6IGNoYW4tPmh3X3ZhbHVlID0gNDINClvCoMKgIDQ2LjgxMTc4Nl0gbXdpZmlleDogY2hhbi0+
aHdfdmFsdWUgPSA0Ng0KW8KgwqAgNDYuODE1NzIyXSBtd2lmaWV4OiBjaGFuLT5od192YWx1ZSA9
IDM2DQpbwqDCoCA0Ni44MTk2NDZdIG13aWZpZXg6IGNoYW4tPmh3X3ZhbHVlID0gNDANClvCoMKg
IDQ2LjgyMzU3N10gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSA0NA0KW8KgwqAgNDYuODI3NTAz
XSBtd2lmaWV4OiBjaGFuLT5od192YWx1ZSA9IDQ4DQpbwqDCoCA0Ni44MzE0NDBdIG13aWZpZXg6
IGNoYW4tPmh3X3ZhbHVlID0gNTINClvCoMKgIDQ2LjgzNTM2M10gbXdpZmlleDogY2hhbi0+aHdf
dmFsdWUgPSA1Ng0KW8KgwqAgNDYuODM5Mjg3XSBtd2lmaWV4OiBjaGFuLT5od192YWx1ZSA9IDYw
DQpbwqDCoCA0Ni44NDMyMDVdIG13aWZpZXg6IGNoYW4tPmh3X3ZhbHVlID0gNjQNClvCoMKgIDQ2
Ljg0NzEyOV0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxMDANClvCoMKgIDQ2Ljg1MTEzNF0g
bXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxMDQNClvCoMKgIDQ2Ljg1NTE1MF0gbXdpZmlleDog
Y2hhbi0+aHdfdmFsdWUgPSAxMDgNClvCoMKgIDQ2Ljg1OTE1NV0gbXdpZmlleDogY2hhbi0+aHdf
dmFsdWUgPSAxMTINClvCoMKgIDQ2Ljg2MzE2OF0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAx
MTYNClvCoMKgIDQ2Ljg2NzE3NV0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxMjANClvCoMKg
IDQ2Ljg3MTE4Nl0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxMjQNClvCoMKgIDQ2Ljg3NTE5
Nl0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxMjgNClvCoMKgIDQ2Ljg3OTIwOF0gbXdpZmll
eDogY2hhbi0+aHdfdmFsdWUgPSAxMzINClvCoMKgIDQ2Ljg4MzIxNF0gbXdpZmlleDogY2hhbi0+
aHdfdmFsdWUgPSAxMzYNClvCoMKgIDQ2Ljg4NzIyNF0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUg
PSAxNDANClvCoMKgIDQ2Ljg5MTIzMF0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxNDkNClvC
oMKgIDQ2Ljg5NTI0MV0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxNTMNClvCoMKgIDQ2Ljg5
OTI0Nl0gbXdpZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxNTcNClvCoMKgIDQ2LjkwMzI1Nl0gbXdp
ZmlleDogY2hhbi0+aHdfdmFsdWUgPSAxNjENClvCoMKgIDQ2LjkwNzI2Ml0gbXdpZmlleDogY2hh
bi0+aHdfdmFsdWUgPSAxNjUNClvCoMKgIDQ3LjM5NDE3Nl0gbXdpZmlleF9wY2llIDAwMDA6MDE6
MDAuMDogbXdpZmlleF9nZXRfY2ZwOiBjYW5ub3QgZmluZCBjZnAgYnkgYmFuZCAywqDCoMKgICYg
Y2hhbm5lbD0xMiBmcmVxPTANCg0KLUNhZXNhcg0KDQoNClJlZ2FyZHMsDQpTaW1vbg0KDQotLS0t
LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogS2FsbGUgVmFsbyBbbWFpbHRvOmt2YWxvQGNv
ZGVhdXJvcmEub3JnXQ0KU2VudDogMjAxN+W5tDbmnIgxM+aXpSAxNTo1Mw0KVG86IENhZXNhciBX
YW5nDQpDYzogYW1pdGthcndhckBnbWFpbC5jb207IFhpbm1pbmcgSHU7IE5pc2hhbnQgU2FybXVr
YWRhbTsgR2FuYXBhdGhpDQpCaGF0OyBsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmc7IG5l
dGRldkB2Z2VyLmtlcm5lbC5vcmc7DQpsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBicmlh
bm5vcnJpc0BjaHJvbWl1bS5vcmc7DQpqZWZmeS5jaGVuQHJvY2stY2hpcHMuY29tDQpTdWJqZWN0
OiBbRVhUXSBSZTogW1BBVENIXSBtd2lmaWV4OiBmaXhlcyB0aGUgdHJpdmlhbCBwcmludA0KDQpF
eHRlcm5hbCBFbWFpbA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpDYWVzYXIgV2FuZyA8d3h0QHJvY2stY2hp
cHMuY29tPiB3cml0ZXM6DQoNCuWcqCAyMDE35bm0MDbmnIgxM+aXpSAxNTowNCwgS2FsbGUgVmFs
byDlhpnpgZM6DQpDYWVzYXIgV2FuZyA8d3h0QHJvY2stY2hpcHMuY29tPiB3cml0ZXM6DQoNCkth
bGxlLA0KDQrlnKggMjAxN+W5tDA25pyIMTPml6UgMTQ6MjgsIEthbGxlIFZhbG8g5YaZ6YGTOg0K
Q2Flc2FyIFdhbmcgPHd4dEByb2NrLWNoaXBzLmNvbT4gd3JpdGVzOg0KDQpXZSBoYXZlIGFsd2F5
cyBtZXQgdGhlIHVudXNlZCBsb2cgYmUgcHJpbnRlZCBhcyBmb2xsb3dpbmcuDQoNCi4uLg0KWzIz
MTkzLjUyMzE4Ml0gbXdpZmlleF9wY2llIDAwMDA6MDE6MDAuMDogbXdpZmlleF9nZXRfY2ZwOg0K
Y2Fubm90IGZpbmQgY2ZwIGJ5IGJhbmQgMiAgICAmIGNoYW5uZWw9MTMgZnJlcT0wDQpbMjMzNzgu
NjMzNjg0XSBtd2lmaWV4X3BjaWUgMDAwMDowMTowMC4wOiBtd2lmaWV4X2dldF9jZnA6DQpjYW5u
b3QgZmluZCBjZnAgYnkgYmFuZCAyICAgICYgY2hhbm5lbD0xMyBmcmVxPTANCg0KTWF5YmUgdGhh
dCdzIHJlbGF0ZWQgdG8gd2lmaSByZWdkb20sIHNpbmNlIHdpZmkgZGVmYXVsdCBhcmVhIHdhcw0K
VVMgYW5kIGRpZG4ndCBzdXBwb3J0IDEyfjE0IGNoYW5uZWxzLg0KDQpBcyBGcmVxdWVuY2llczoN
CiogMjQxMiBNSHogWzFdICgzMC4wIGRCbSkNCiogMjQxNyBNSHogWzJdICgzMC4wIGRCbSkNCiog
MjQyMiBNSHogWzNdICgzMC4wIGRCbSkNCiogMjQyNyBNSHogWzRdICgzMC4wIGRCbSkNCiogMjQz
MiBNSHogWzVdICgzMC4wIGRCbSkNCiogMjQzNyBNSHogWzZdICgzMC4wIGRCbSkNCiogMjQ0MiBN
SHogWzddICgzMC4wIGRCbSkNCiogMjQ0NyBNSHogWzhdICgzMC4wIGRCbSkNCiogMjQ1MiBNSHog
WzldICgzMC4wIGRCbSkNCiogMjQ1NyBNSHogWzEwXSAoMzAuMCBkQm0pDQoqIDI0NjIgTUh6IFsx
MV0gKDMwLjAgZEJtKQ0KKiAyNDY3IE1IeiBbMTJdIChkaXNhYmxlZCkNCiogMjQ3MiBNSHogWzEz
XSAoZGlzYWJsZWQpDQoqIDI0ODQgTUh6IFsxNF0gKGRpc2FibGVkKQ0KDQpTaWduZWQtb2ZmLWJ5
OiBDYWVzYXIgV2FuZyA8d3h0QHJvY2stY2hpcHMuY29tPg0KLS0tDQoNCiAgIGRyaXZlcnMvbmV0
L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZnAuYyB8IDIgKy0NCiAgIDEgZmlsZSBjaGFuZ2Vk
LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u
ZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmcC5jDQpiL2RyaXZlcnMvbmV0L3dpcmVsZXNz
L21hcnZlbGwvbXdpZmlleC9jZnAuYw0KaW5kZXggMWZmMjIwNS4uNmUyOTk0MyAxMDA2NDQNCi0t
LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZnAuYw0KKysrIGIvZHJp
dmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmcC5jDQpAQCAtMzUwLDcgKzM1MCw3
IEBAIG13aWZpZXhfZ2V0X2NmcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OA0KYmFu
ZCwgdTE2IGNoYW5uZWwsIHUzMiBmcmVxKQ0KICAgCQl9DQogICAJfQ0KICAgCWlmIChpID09IHNi
YW5kLT5uX2NoYW5uZWxzKSB7DQotCQltd2lmaWV4X2RiZyhwcml2LT5hZGFwdGVyLCBFUlJPUiwN
CisJCW13aWZpZXhfZGJnKHByaXYtPmFkYXB0ZXIsIFdBUk4sDQogICAJCQkgICAgIiVzOiBjYW5u
b3QgZmluZCBjZnAgYnkgYmFuZCAlZFx0Ig0KICAgCQkJICAgICImIGNoYW5uZWw9JWQgZnJlcT0l
ZFxuIiwNCiAgIAkJCSAgICBfX2Z1bmNfXywgYmFuZCwgY2hhbm5lbCwgZnJlcSk7DQpJIGRvbid0
IHNlZSBob3cgdGhpcyBmaXhlcyBhbnl0aGluZywgY2FyZSB0byBleHBsYWluPyBBbmQgdGhlIHRp
dGxlDQppcyBxdWl0ZSB2YWd1ZS4NClNvcnJ5IGZvciB0aGUgZGVzY3JpcHRpb24gbWF5YmUgdW5j
bGVhci4NCkknbSBhc3N1bWluZyB0aGUgcHJpbnQgbG9nIGlzIGV4cGVjdGVkIGZvciBtYXJ2ZWwg
d2lmaSBkcml2ZXIuIERvIHdlDQpzaG91bGQgdXNlICdXQVJOJyB0byBpbnN0ZWFkIG9mIHRoZSAn
RVJST1InIGhlcmUuDQpCdXQgZG9lcyB0aGF0IG1ha2UgYW55IGZ1bmN0aW9uYWwgZGlmZmVyZW5j
ZSwgaXNuJ3QgdGhlIHdhcm5pbmcgc3RpbGwNCnByaW50ZWQ/DQoNCg0KQXQgbGVhc3QsIHRoYXQg
c2hvdWxkbid0IGJlIHByaW50ZWQgbG9nIGJ5IGRlZmF1bHQuICA6KQ0KDQppZiBJIHJlYWQgdGhl
IGNvZGUgaXMgY29ycmVjdC4gVGhhdCBvbmx5IHRoZSBNU0cvRkFUQUwvRVJST1Igd2lsbA0Kb3V0
cHV0IGJ5IGRlZmF1bHQuDQoNCi8qKg0KICplbnVtIG13aWZpZXhfZGVidWdfbGV2ZWwgIC0gIG1h
cnZlbGwgd2lmaSBkZWJ1ZyBsZXZlbCAgKi8gZW51bQ0KTVdJRklFWF9ERUJVR19MRVZFTCB7DQog
ICAgTVdJRklFWF9EQkdfTVNHICAgICAgICA9IDB4MDAwMDAwMDEsDQogICAgTVdJRklFWF9EQkdf
RkFUQUwgICAgPSAweDAwMDAwMDAyLA0KICAgIE1XSUZJRVhfREJHX0VSUk9SICAgID0gMHgwMDAw
MDAwNCwNCiAgICBNV0lGSUVYX0RCR19EQVRBICAgID0gMHgwMDAwMDAwOCwNCiAgICBNV0lGSUVY
X0RCR19DTUQgICAgICAgID0gMHgwMDAwMDAxMCwNCiAgICBNV0lGSUVYX0RCR19FVkVOVCAgICA9
IDB4MDAwMDAwMjAsDQogICAgTVdJRklFWF9EQkdfSU5UUiAgICA9IDB4MDAwMDAwNDAsDQogICAg
TVdJRklFWF9EQkdfSU9DVEwgICAgPSAweDAwMDAwMDgwLA0KDQogICAgTVdJRklFWF9EQkdfTVBB
X0QgICAgPSAweDAwMDA4MDAwLA0KICAgIE1XSUZJRVhfREJHX0RBVF9EICAgID0gMHgwMDAxMDAw
MCwNCiAgICBNV0lGSUVYX0RCR19DTURfRCAgICA9IDB4MDAwMjAwMDAsDQogICAgTVdJRklFWF9E
QkdfRVZUX0QgICAgPSAweDAwMDQwMDAwLA0KICAgIE1XSUZJRVhfREJHX0ZXX0QgICAgPSAweDAw
MDgwMDAwLA0KICAgIE1XSUZJRVhfREJHX0lGX0QgICAgPSAweDAwMTAwMDAwLA0KDQogICAgTVdJ
RklFWF9EQkdfRU5UUlkgICAgPSAweDEwMDAwMDAwLA0KICAgIE1XSUZJRVhfREJHX1dBUk4gICAg
PSAweDIwMDAwMDAwLA0KICAgIE1XSUZJRVhfREJHX0lORk8gICAgPSAweDQwMDAwMDAwLA0KICAg
IE1XSUZJRVhfREJHX0RVTVAgICAgPSAweDgwMDAwMDAwLA0KDQogICAgTVdJRklFWF9EQkdfQU5Z
ICAgICAgICA9IDB4ZmZmZmZmZmYNCn07DQoNCiNkZWZpbmUgTVdJRklFWF9ERUZBVUxUX0RFQlVH
X01BU0sgICAgKE1XSUZJRVhfREJHX01TRyB8IFwNCiAgICAgICAgICAgICAgICAgICAgTVdJRklF
WF9EQkdfRkFUQUwgfCBcDQogICAgICAgICAgICAgICAgICAgIE1XSUZJRVhfREJHX0VSUk9SKQ0K
DQpIZWgsIG1ha2VzIG1vcmUgc2Vuc2Ugbm93IDopIEJ1dCB5b3Ugc3RpbGwgc2hvdWxkIGltcHJv
dmUgdGhlIHRpdGxlIGFuZA0KZXhwbGFpbiBpbiB0aGUgY29tbWl0IGxvZyB0aGF0IFdBUk4gbGV2
ZWwgaXMgbm90IHByaW50ZWQgYnkgZGVmYXVsdC4NCg0KQnV0IGJlZm9yZSB5b3Ugc3VibWl0IHYy
IGxldCdzIHdhaXQgd2hhdCBNYXJ2ZWxsIHNheXMgYWJvdXQgdGhpcy4NCg0KLS0NCkthbGxlIFZh
bG8NCg0K
在 2017年06月14日 18:23, Xinming Hu 写道:
> Hi Caesar,
>
> It proved to be a feature to get better scan result from overlapping channel, introduced in
>
> commit 1b499cb72f26bbf44f2fa158c2d1487730aae96a
> Author: Amitkumar Karwar <[email protected]>
> Date: Sun Apr 24 23:49:51 2016 -0700
>
> mwifiex: disable channel filtering feature in firmware
>
> As 2.4Ghz channels are overlapping, sometimes AP responds to
> probe request even if it's operating on neighbouring channel.
> Currently firmware drops those scan entries, as current channel
> doesn't match with APs channel.
>
> This patch enables MWIFIEX_DISABLE_CHAN_FILT flag in scan
> command to disable the feature so that better scan results
> will be received in 2.4Ghz band.
>
> As I can see, even there could be AP from overlapping channel (might be 12/13/14 in this case), it will be filtered depend on reg domain rules
>
> if (ch->flags & IEEE80211_CHAN_DISABLED)
> continue;
>
> so it should not been an ERROR. WARN looks fine to me.
> you can add me acked-by in v2.
Okay, thanks for explanation and having a look at it.
-Caesar
>
>
> Regards,
> Simon
> From: Caesar Wang [mailto:[email protected]]
> Sent: 2017年6月13日 18:52
> To: Xinming Hu; Kalle Valo; Zhiyuan Yang; Cathy Luo
> Cc: [email protected]; Nishant Sarmukadam; Ganapathi Bhat; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Ganapathi Bhat
> Subject: [EXT] Re: [PATCH] mwifiex: fixes the trivial print
>
> External Email
> ________________________________________
> Hi Xinming,
> As issue tracked on https://partnerissuetracker.corp.google.com/u/2/issues/62122843
>
>
> 在 2017年06月13日 17:51, Xinming Hu 写道:
> Hi Caesar,
>
> The original log in google issue tracker show there exist AP in channel 13 after periodically scan.
> Per my understand, if reg domain is set to US, channel 12/13/14 will not get chance to scan. (test using iw/wpa_supplicant).
> I am curious about whether there are any diff from upper layer.
>
> As a test, you can print the scan channel list, as below:
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> index a7593aa..a289818 100644
> --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> @@ -2572,6 +2572,7 @@ static int mwifiex_set_ibss_params(struct mwifiex_private *priv,
> MWIFIEX_USER_SCAN_CHAN_MAX); i++) {
> chan = request->channels[i];
> user_scan_cfg->chan_list[i].chan_number = chan->hw_value;
> + pr_err("chan->hw_value = %d", chan->hw_value);
> user_scan_cfg->chan_list[i].radio_type = chan->band;
>
> if ((chan->flags & IEEE80211_CHAN_NO_IR) || !request->n_ssids)
>
> The below as the required log:
> localhost / # [ 46.760997] mwifiex: chan->hw_value = 1
> [ 46.764878] mwifiex: chan->hw_value = 2
> [ 46.768765] mwifiex: chan->hw_value = 3
> [ 46.772625] mwifiex: chan->hw_value = 4
> [ 46.776608] mwifiex: chan->hw_value = 5
> [ 46.780485] mwifiex: chan->hw_value = 6
> [ 46.784384] mwifiex: chan->hw_value = 7
> [ 46.788252] mwifiex: chan->hw_value = 8
> [ 46.792185] mwifiex: chan->hw_value = 9
> [ 46.796036] mwifiex: chan->hw_value = 10
> [ 46.799978] mwifiex: chan->hw_value = 11
> [ 46.803908] mwifiex: chan->hw_value = 38
> [ 46.807847] mwifiex: chan->hw_value = 42
> [ 46.811786] mwifiex: chan->hw_value = 46
> [ 46.815722] mwifiex: chan->hw_value = 36
> [ 46.819646] mwifiex: chan->hw_value = 40
> [ 46.823577] mwifiex: chan->hw_value = 44
> [ 46.827503] mwifiex: chan->hw_value = 48
> [ 46.831440] mwifiex: chan->hw_value = 52
> [ 46.835363] mwifiex: chan->hw_value = 56
> [ 46.839287] mwifiex: chan->hw_value = 60
> [ 46.843205] mwifiex: chan->hw_value = 64
> [ 46.847129] mwifiex: chan->hw_value = 100
> [ 46.851134] mwifiex: chan->hw_value = 104
> [ 46.855150] mwifiex: chan->hw_value = 108
> [ 46.859155] mwifiex: chan->hw_value = 112
> [ 46.863168] mwifiex: chan->hw_value = 116
> [ 46.867175] mwifiex: chan->hw_value = 120
> [ 46.871186] mwifiex: chan->hw_value = 124
> [ 46.875196] mwifiex: chan->hw_value = 128
> [ 46.879208] mwifiex: chan->hw_value = 132
> [ 46.883214] mwifiex: chan->hw_value = 136
> [ 46.887224] mwifiex: chan->hw_value = 140
> [ 46.891230] mwifiex: chan->hw_value = 149
> [ 46.895241] mwifiex: chan->hw_value = 153
> [ 46.899246] mwifiex: chan->hw_value = 157
> [ 46.903256] mwifiex: chan->hw_value = 161
> [ 46.907262] mwifiex: chan->hw_value = 165
> [ 47.394176] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp: cannot find cfp by band 2 & channel=12 freq=0
>
> -Caesar
>
>
> Regards,
> Simon
>
> -----Original Message-----
> From: Kalle Valo [mailto:[email protected]]
> Sent: 2017年6月13日 15:53
> To: Caesar Wang
> Cc: [email protected]; Xinming Hu; Nishant Sarmukadam; Ganapathi
> Bhat; [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]
> Subject: [EXT] Re: [PATCH] mwifiex: fixes the trivial print
>
> External Email
>
> ----------------------------------------------------------------------
> Caesar Wang <[email protected]> writes:
>
> 在 2017年06月13日 15:04, Kalle Valo 写道:
> Caesar Wang <[email protected]> writes:
>
> Kalle,
>
> 在 2017年06月13日 14:28, Kalle Valo 写道:
> Caesar Wang <[email protected]> writes:
>
> We have always met the unused log be printed as following.
>
> ...
> [23193.523182] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
> cannot find cfp by band 2 & channel=13 freq=0
> [23378.633684] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
> cannot find cfp by band 2 & channel=13 freq=0
>
> Maybe that's related to wifi regdom, since wifi default area was
> US and didn't support 12~14 channels.
>
> As Frequencies:
> * 2412 MHz [1] (30.0 dBm)
> * 2417 MHz [2] (30.0 dBm)
> * 2422 MHz [3] (30.0 dBm)
> * 2427 MHz [4] (30.0 dBm)
> * 2432 MHz [5] (30.0 dBm)
> * 2437 MHz [6] (30.0 dBm)
> * 2442 MHz [7] (30.0 dBm)
> * 2447 MHz [8] (30.0 dBm)
> * 2452 MHz [9] (30.0 dBm)
> * 2457 MHz [10] (30.0 dBm)
> * 2462 MHz [11] (30.0 dBm)
> * 2467 MHz [12] (disabled)
> * 2472 MHz [13] (disabled)
> * 2484 MHz [14] (disabled)
>
> Signed-off-by: Caesar Wang <[email protected]>
> ---
>
> drivers/net/wireless/marvell/mwifiex/cfp.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/cfp.c
> b/drivers/net/wireless/marvell/mwifiex/cfp.c
> index 1ff2205..6e29943 100644
> --- a/drivers/net/wireless/marvell/mwifiex/cfp.c
> +++ b/drivers/net/wireless/marvell/mwifiex/cfp.c
> @@ -350,7 +350,7 @@ mwifiex_get_cfp(struct mwifiex_private *priv, u8
> band, u16 channel, u32 freq)
> }
> }
> if (i == sband->n_channels) {
> - mwifiex_dbg(priv->adapter, ERROR,
> + mwifiex_dbg(priv->adapter, WARN,
> "%s: cannot find cfp by band %d\t"
> "& channel=%d freq=%d\n",
> __func__, band, channel, freq);
> I don't see how this fixes anything, care to explain? And the title
> is quite vague.
> Sorry for the description maybe unclear.
> I'm assuming the print log is expected for marvel wifi driver. Do we
> should use 'WARN' to instead of the 'ERROR' here.
> But does that make any functional difference, isn't the warning still
> printed?
>
>
> At least, that shouldn't be printed log by default. :)
>
> if I read the code is correct. That only the MSG/FATAL/ERROR will
> output by default.
>
> /**
> *enum mwifiex_debug_level - marvell wifi debug level */ enum
> MWIFIEX_DEBUG_LEVEL {
> MWIFIEX_DBG_MSG = 0x00000001,
> MWIFIEX_DBG_FATAL = 0x00000002,
> MWIFIEX_DBG_ERROR = 0x00000004,
> MWIFIEX_DBG_DATA = 0x00000008,
> MWIFIEX_DBG_CMD = 0x00000010,
> MWIFIEX_DBG_EVENT = 0x00000020,
> MWIFIEX_DBG_INTR = 0x00000040,
> MWIFIEX_DBG_IOCTL = 0x00000080,
>
> MWIFIEX_DBG_MPA_D = 0x00008000,
> MWIFIEX_DBG_DAT_D = 0x00010000,
> MWIFIEX_DBG_CMD_D = 0x00020000,
> MWIFIEX_DBG_EVT_D = 0x00040000,
> MWIFIEX_DBG_FW_D = 0x00080000,
> MWIFIEX_DBG_IF_D = 0x00100000,
>
> MWIFIEX_DBG_ENTRY = 0x10000000,
> MWIFIEX_DBG_WARN = 0x20000000,
> MWIFIEX_DBG_INFO = 0x40000000,
> MWIFIEX_DBG_DUMP = 0x80000000,
>
> MWIFIEX_DBG_ANY = 0xffffffff
> };
>
> #define MWIFIEX_DEFAULT_DEBUG_MASK (MWIFIEX_DBG_MSG | \
> MWIFIEX_DBG_FATAL | \
> MWIFIEX_DBG_ERROR)
>
> Heh, makes more sense now :) But you still should improve the title and
> explain in the commit log that WARN level is not printed by default.
>
> But before you submit v2 let's wait what Marvell says about this.
>
> --
> Kalle Valo
>