T24gV2VkLCBKdW4gMjIsIDIwMTEgYXQgNjoxMiBQTSwgRnJlZCBNYXR0aGV3cyA8ZnJlZG1tQGhv
dG1haWwuY28udWs+IHdyb3RlOgo+Cj4gSGksCj4KPiBJIHVzZWQgdGhhdCBjb21tYW5kIHRvIGRp
c2FibGUgdGhlIHRoaXJkIGFudGVubmEsIGFuZCBhcHBsaWVkIGl0IHRvIGJvdGggQVAKPiBhbmQg
U1RBIEFSOTM4MCBOSUNzLgo+IEkgdGhlbiBwZXJmb3JtZWQgYW4gSVBlcmYgdGVzdCBiZXR3ZWVu
IGJvdGggYW5kIHRoZW4gY2FwdHVyZWQgdGhlIHN0YXRpc3RpY3MKPiBmcm9tIHRoZSBzZW5kZXIs
IChiZWxvdykgLgo+IFlvdSBjYW4gc2VlIHRoYXQgaW4gcmNfc3RhdHMgKG1pbnN0cmVsKSwgdGhl
IHJhdGUgY29udHJvbCBhY3R1YWxseQo+ICJhdHRlbXB0cyIgc2VuZGluZyBvbiAzIHN0cmVhbSBN
Q1NzICgxNi0yMykgYXJvdW5kIDI1NiB0aW1lcyBlYWNoLgoKanVzdCBhIGd1ZXNzLiBhcyB3ZSBh
cmUgY2hhbmdpbmcgdGhlIGNoYWluIG1hc2sgdmlhIGRlYnVnZnMgYW5kIHRoZXJlCm1heSBiZSBh
IGNoYW5jZSB3ZSBtYXkgbm90IGhhdmUgaW5mb3JtZWQgdGhlIG1pbnN0cmVsIHJhdGUgY29udHJv
bAp3aGljaCBpcyBtYWludGFpbmVkIGluIHVwcGVyIGxheWVyKG1hYzgwMjExKSBhbmQgaXQgbWln
aHQgYmUgdGFraW5nCndoYXQgd2UgaGF2ZSBjb25maWd1cmVkIHRoZSBjaGFpbiBtYXNrcyB3aGls
ZSB3ZSBoYWQgaW5pdGlhbGl6ZWQgdGhlCmRldmljZSBhbmQgaSBoYXZlIHZlcnkgbGl0dGxlIGlk
ZWEgYWJvdXQgbWluaXN0cmVsIHJhdGUgY29udHJvbAoKPgo+IElzIHRoZXJlIGFueSB3YXkgdG8g
cHJldmVudCB0aGUgUkMgZnJvbSBldmVuIGF0dGVtcHRpbmcgdGhvc2UgcmF0ZXMsIGFzIGlmIEkK
PiB3aGVyZSB0byBmdWxseSBpbWl0YXRlIGFuIEFSOTI4MCwgaXQgc2hvdWxkbnQgYXR0ZW1wdCBh
dCB0aG9zZSBNQ1NzLgoKbWF5IGJlIHdlIGNhbiB0cnkgd2l0aCBhdGg5ayByYXRlIGNvbnRyb2ws
IGFuZCBzZWUgd2hhdCBoYXBwZW5zIHdoaWNoCmlzIHdpdGhpbiB0aGUgYXRoOWsgZHJpdmVyIGFu
ZCBhZmZlY3RzIHhtaXQuYyBhbmQgaXQgbWF5IGhhdmUgYmVlbgppbmZvcm1lZCBvZiB0aGUgY2hh
aW4gbWFzayBjaGFuZ2UuCgo+Cj4gQ2FuIFN1c2luZGVycyBjb21tZW50cyBhbHNvIGJlIGRldGFp
bGVkLgo+Cj4gVGhhbmtzIGluIGFkdmFuY2UKPgo+ICMgY2F0IC9zeXMva2VybmVsL2RlYnVnL2ll
ZWU4MDIxMS9waHkwL25ldGRldlw6d2xhbjAvc3RhdGlvbnMvMDBcTUFDLwo+Cj4gQVVUSAo+IEFT
U09DCj4gQVVUSE9SSVpFRAo+IFdNRQo+IGh0IHN1cHBvcnRlZAo+IGNhcDogMHgxMWNlCj4goKAg
oEhUMjAvSFQ0MAo+IKCgIKBTTSBQb3dlciBTYXZlIGRpc2FibGVkCj4goKAgoFJYIEhUNDAgU0dJ
Cj4goKAgoFRYIFNUQkMKPiCgoCCgUlggU1RCQyAxLXN0cmVhbQo+IKCgIKBNYXggQU1TRFUgbGVu
Z3RoOiA3OTM1IGJ5dGVzCj4goKAgoERTU1MvQ0NLIEhUNDAKPiBhbXBkdSBmYWN0b3IvZGVuc2l0
eTogMy82Cj4gTUNTIG1hc2s6IGZmIGZmIGZmIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gTUNTIHR4
IHBhcmFtczogMQo+IDc5Mgo+IDE1MCBmZmZmIGZmZmYgZmZmZiBmZmZmIGZmZmYgNjAgZmZmZiBm
ZmZmIGZmZmYgZmZmZiBmZmZmIGZmZmYgZmZmZiBmZmZmIGZmZmYKPiBhNDAKPiAtNzcKPiAwCj4g
dHlwZSCgIKAgoHJhdGUgoCCgIHRocm91Z2hwdXQgoGV3bWEgcHJvYiCgIHRoaXMgcHJvYiCgdGhp
cyBzdWNjL2F0dGVtcHQKPiBzdWNjZXNzIKAgoGF0dGVtcHRzCj4gSFQyMC9MR0kgoCCgTUNTMCCg
IKAgoCCgNi42IKAgoCCgIDk5LjkgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoDE2
Mwo+IKAgoCCgIKAgMjMwCj4gSFQyMC9MR0kgoCCgTUNTMSCgIKAgoCAxMy4xIKAgoCCgMTAwLjAg
oCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA3NQo+IKAgoCCgIKAgoDc1Cj4gSFQy
MC9MR0kgoCCgTUNTMiCgIKAgoCAxOS4zIKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAw
KCCgMCkgoCCgIKAgoDI1Mgo+IKAgoCCgIKAgMjUyCj4gSFQyMC9MR0kgoCCgTUNTMyCgIKAgoCAy
NS40IKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA3NQo+IKAg
oCCgIKAgoDc1Cj4gSFQyMC9MR0kgoCCgTUNTNCCgIKAgoCAzNi4yIKAgoCCgIDk3LjUgoCCgIKAx
MDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoDQxMwo+IKAgoCCgIKAgNDc0Cj4gSFQyMC9MR0kg
oCCgTUNTNSCgIKAgoCCgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkg
oCCgIKAgoCCgMAo+IKAgoCCgIKAgoDc2Cj4gSFQyMC9MR0kgoCCgTUNTNiCgIKAgoCCgMC4wIKAg
oCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAg
oDgwCj4gSFQyMC9MR0kgoCCgTUNTNyCgIKAgoCCgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCg
IKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQyMC9MR0kgoCCgTUNT
OCCgIKAgoCAxMy4xIKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAg
oCA3NQo+IKAgoCCgIKAgoDc1Cj4gSFQyMC9MR0kgoCCgTUNTOSCgIKAgoCAyNS40IKAgoCCgMTAw
LjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA3MAo+IKAgoCCgIKAgoDcwCj4g
SFQyMC9MR0kgoCCgTUNTMTAgoCCgIKAzNC4yIKAgoCCgIDkyLjIgoCCgIKAxMDAuMCCgIKAgoCCg
IKAwKCCgMCkgoCCgIKAgoCA3OQo+IKAgoCCgIKAgoDgyCj4gSFQyMC9MR0kgoCCgTUNTMTEgoCCg
IKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+
IKAgoCCgIKAgoDc2Cj4gSFQyMC9MR0kgoCCgTUNTMTIgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCg
IKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQyMC9M
R0kgoCCgTUNTMTMgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCg
MCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQyMC9MR0kgoCCgTUNTMTQgoCCgIKAgMC4w
IKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCg
IKAgMjU2Cj4gSFQyMC9MR0kgoCCgTUNTMTUgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAu
MCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQyMC9MR0kgoCCg
TUNTMTYgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCg
IKAgoCCgMAo+IKAgoCCgIKAgoDc1Cj4gSFQyMC9MR0kgoCCgTUNTMTcgoCCgIKAgMC4wIKAgoCCg
IKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgoDY4
Cj4gSFQyMC9MR0kgoCCgTUNTMTggoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAg
oCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgoDg1Cj4gSFQyMC9MR0kgoCCgTUNTMTkg
oCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCg
MAo+IKAgoCCgIKAgMjU3Cj4gSFQyMC9MR0kgoCCgTUNTMjAgoCCgIKAgMC4wIKAgoCCgIKAwLjAg
oCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQy
MC9MR0kgoCCgTUNTMjEgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAw
KCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQyMC9MR0kgoCCgTUNTMjIgoCCgIKAg
MC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAg
oCCgIKAgMjU2Cj4gSFQyMC9MR0kgoCCgTUNTMjMgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAg
oDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kg
oCCgTUNTMCCgIKAgoCAxMy42IKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkg
oCCgIKAgoCA3NQo+IKAgoCCgIKAgoDc1Cj4gSFQ0MC9MR0kgoCCgTUNTMSCgIKAgoCAyNi41IKAg
oCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA3Mgo+IKAgoCCgIKAg
oDcyCj4gSFQ0MC9MR0kgoCCgTUNTMiCgIKAgoCAzOC4zIKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCg
IKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA3Mwo+IKAgoCCgIKAgoDczCj4gSFQ0MC9MR0kgoCCgTUNT
MyCgIKAgoCA0OS43IKAgoCCgIDk5LjkgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAg
oCA3MAo+IKAgoCCgIKAgoDczCj4gSFQ0MC9MR0kgoCCgTUNTNCCgIKAgoCCgMC4wIKAgoCCgIKAw
LjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCAxMAo+IKAgoCCgIKAxMjIwCj4g
SFQ0MC9MR0kgoCCgTUNTNSCgIKAgoCCgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCg
IKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTNiCgIKAg
oCCgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+
IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTNyCgIKAgoCCgMC4wIKAgoCCgIKAwLjAgoCCg
IKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9M
R0kgoCCgTUNTOCCgIKAgoCAyNi4yIKAgoCCgIDk4LjkgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCg
MCkgoCCgIKAgoCA3Mwo+IKAgoCCgIKAgoDc0Cj4gSFQ0MC9MR0kgoCCgTUNTOSCgIKAgoCA0OS4z
IKAgoCCgIDk5LjIgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA2Nwo+IKAgoCCg
IKAgoDY5Cj4gSFQ0MC9MR0kgoCCgTUNTMTAgoCCgIKAyMC41IKAgoCCgIDI4LjkgoCCgIKAgoDAu
MCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCAxNAo+IKAgoCCgIKAgMjU1Cj4gSFQ0MC9MR0kgoCCg
TUNTMTEgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCg
IKAgoCCgMAo+IKAgoCCgIKAgMjU3Cj4gSFQ0MC9MR0kgoCCgTUNTMTIgoCCgIKAgMC4wIKAgoCCg
IKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2
Cj4gSFQ0MC9MR0kgoCCgTUNTMTMgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAg
oCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTMTQg
oCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCg
MAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTMTUgoCCgIKAgMC4wIKAgoCCgIKAwLjAg
oCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0
MC9MR0kgoCCgTUNTMTYgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAw
KCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgoDc0Cj4gSFQ0MC9MR0kgoCCgTUNTMTcgoCCgIKAg
MC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAg
oCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTMTggoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAg
oDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU1Cj4gSFQ0MC9MR0kg
oCCgTUNTMTkgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkg
oCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTMjAgoCCgIKAgMC4wIKAg
oCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAg
MjU2Cj4gSFQ0MC9MR0kgoCCgTUNTMjEgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCg
IKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNT
MjIgoCCgIKAgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAg
oCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9MR0kgoCCgTUNTMjMgoCCgIKAgMC4wIKAgoCCgIKAw
LjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4g
SFQ0MC9TR0kgoCCgTUNTMCCgIKAgoCAxNS4xIKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCg
IKAwKCCgMCkgoCCgIKAgoCA3MAo+IKAgoCCgIKAgoDcwCj4gSFQ0MC9TR0kgoCCgTUNTMSCgIKAg
oCAyOS4yIKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA3Mgo+
IKAgoCCgIKAgoDcyCj4gSFQ0MC9TR0kgoHQgTUNTMiCgIKAgoCAzOC41IKAgoCCgIDkxLjMgoCCg
IKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCA4MQo+IKAgoCCgIKAgoDgzCj4gSFQ0MC9T
R0kgoCBQTUNTMyCgIKAgoCA1NC4zIKAgoCCgIDk5LjUgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCg
MCkgoCCgIKA2NjUzNgo+IKAgoCCgIDY3ODAzCj4gSFQ0MC9TR0kgoCCgTUNTNCCgIKAgoCCgMC4w
IKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCg
IKAgMjU2Cj4gSFQ0MC9TR0kgoCCgTUNTNSCgIKAgoCCgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAu
MCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9TR0kgoCCg
TUNTNiCgIKAgoCCgMC4wIKAgoCCgIKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCg
IKAgoCCgMAo+IKAgoCCgIKAgMjU2Cj4gSFQ0MC9TR0kgoCCgTUNTNyCgIKAgoCCgMC4wIKAgoCCg
IKAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCCgMAo+IKAgoCCgIKAgMjU2
Cj4gSFQ0MC9TR0kgoCCgTUNTOCCgIKAgoCAyOS4yIKAgoCCgMTAwLjAgoCCgIKAxMDAuMCCgIKAg
oCCgIKAwKCCgMCkgoCCgIKAgoCA2Nwo+IKAgoCCgIKAgoDY3Cj4gSFQ0MC9TR0kgVCCgTUNTOSCg
IKAgoCA1NC42IKAgoCCgIDk5LjkgoCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIDMxMDIy
Nwo+IKAgoCCgMzEyMzM5Cj4gSFQ0MC9TR0kgoCCgTUNTMTAgoCCgIKAyMi43IKAgoCCgIDI5LjMg
oCCgIKAxMDAuMCCgIKAgoCCgIKAwKCCgMCkgoCCgIKAgoCAxNAo+IKAgoCA0Ni44IE1iaXRzL3Nl
YyCgIKAyNTUKPiBIVDQwL1NHSSCgIKBNQ1MxMSCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCg
MC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NHSSCg
IKBNQ1MxMiCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCg
IKAgoCCgIKAwCj4goCCgIKAgoCAyNTUKPiBIVDQwL1NHSSCgIKBNQ1MxMyCgIKAgoCAwLjAgoCCg
IKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCAy
NTYKPiBIVDQwL1NHSSCgIKBNQ1MxNCCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAg
oCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NHSSCgIKBNQ1Mx
NSCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCg
IKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NHSSCgIKBNQ1MxNiCgIKAgoCAwLjAgoCCgIKAgoDAu
MCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCCgNjgKPiBI
VDQwL1NHSSCgIKBNQ1MxNyCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAg
oDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NHSSCgIKBNQ1MxOCCgIKAg
oCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4g
oCCgIKAgoCAyNTUKPiBIVDQwL1NHSSCgIKBNQ1MxOSCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAg
oCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NH
SSCgIKBNQ1MyMCCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAw
KSCgIKAgoCCgIKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NHSSCgIKBNQ1MyMSCgIKAgoCAwLjAg
oCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAg
oCAyNTYKPiBIVDQwL1NHSSCgIKBNQ1MyMiCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4w
IKAgoCCgIKAgoDAoIKAwKSCgIKAgoCCgIKAwCj4goCCgIKAgoCAyNTYKPiBIVDQwL1NHSSCgIKBN
Q1MyMyCgIKAgoCAwLjAgoCCgIKAgoDAuMCCgIKAgoCCgMC4wIKAgoCCgIKAgoDAoIKAwKSCgIKAg
oCCgIKAwCj4goCCgIKAgoCAyNTYKPgo+IFRvdGFsIHBhY2tldCBjb3VudDo6IKAgoGlkZWFsIDM2
NTA1NiCgIKAgoGxvb2thcm91bmQgMTM3MDIKPiBBdmVyYWdlIEEtTVBEVSBsZW5ndGg6IDUuNAo+
Cj4+IERhdGU6IFR1ZSwgMjEgSnVuIDIwMTEgMTQ6MjU6MzYgKzA1MzAKPj4gU3ViamVjdDogUmU6
IFthdGg5ay1kZXZlbF0gRGlzYWJsaW5nIHRoZSB0aGlyZCBhbnRlbm5hIGZvciBBUjkzODAgaW4g
YXRoOWsKPj4gRnJvbTogc2hhZmkud2lyZWxlc3NAZ21haWwuY29tCj4+IFRvOiBmcmVkbW1AaG90
bWFpbC5jby51awo+PiBDQzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtd2ly
ZWxlc3NAdmdlci5rZXJuZWwub3JnOwo+PiBhdGg5ay1kZXZlbEB2ZW5lbWEuaDRja3IubmV0OyBh
dGg5ay1kZXZlbEBsaXN0cy5hdGg5ay5vcmc7Cj4+IHN1c2luZGVyQHFjYS5xdWFsY29tbS5jb20K
Pj4KPj4gT24gVHVlLCBKdW4gMjEsIDIwMTEgYXQgMjowNyBBTSwgRnJlZCBNYXR0aGV3cyA8ZnJl
ZG1tQGhvdG1haWwuY28udWs+Cj4+IHdyb3RlOgo+PiA+IEhpIGFsbCwKPj4gPiBJIGFtIGluc3Rh
bGxpbmcgdGhlIEFSOTM4MCBOSUMgb24gbGFwdG9wcywgYnV0IHNvbWUgb25seSBoYXZlIHR3byBV
RkwKPj4gPiBjb25uZWN0b3JzLCBhbmQgdGh1cyBJIHdhcyB3b25kZXJpbmcgaWYgdXNpbmcgb25s
eSB0d28gb2YgdGhlIFVGTAo+PiA+IGFudGVubmEKPj4gPiBwb3J0cyB3aWxsIGhhdmUgYW55IG5l
Z2F0aXZlIGVmZmVjdCBvciBkaWZmZXJlbmNlIHRoYW4gaW5zdGFsbGluZyBhIDJ4Mgo+PiA+IE5J
Qwo+PiA+IChBUjkyODAgZm9yIGV4YW1wbGUgd2hpY2ggaGFzIG9ubHkgMiBwb3J0cyBhbnl3YXkp
LiBQbGVhc2Uga2luZGx5Cj4+ID4gZXhwbGFpbgo+PiA+IHdpdGggcmVmZXJlbmNlcyBpZiBwb3Nz
aWJsZS4KPj4gPiBBbHNvIGZvciBleGFtcGxloGlzIHRoZXJlIGFueXdheSB0byBkaXNhYmxlIHRy
YW5zbWlzc2lvbiBvbiB0aGUgdGhpcmQKPj4gPiBVRkwKPj4gPiBwb3J0IChhbnRlbm5hKSBmcm9t
IGF0aDlrIG9yIG90aGVyd2lzZS4KPj4gPiBUaGFuayB5b3UgYWxsIHZlcnkgbXVjaAo+Pgo+PiB5
b3UgY2FuIGNoYW5nZSB0aGUgdHgvcnggY2hhaW5tYXNrIGZvciAzeDMgQVI5MzgwIHRvIGRpc2Fi
bGUKPj4gdHJhbnNtaXNzaW9uIG9uIHRoZSB0aGlyZCBhbnRlbm5hCj4+IGNkIC9zeXMva2VybmVs
L2RlYnVnL2llZWU4MDIxMS9waHkwL2F0aDlrIyBlY2hvIDB4MyA+IHR4X2NoYWlubWFzawo+PiBj
ZCAvc3lzL2tlcm5lbC9kZWJ1Zy9pZWVlODAyMTEvcGh5MC9hdGg5ayMgZWNobyAweDMgPiByeF9j
aGFpbm1hc2sKPj4KPj4gYWZ0ZXIgdGhpcywgaWRlYWxseSBpdCBzaG91bGQgb3BlcmF0ZSBhcyAy
eDIgZGV2aWNlIGFzIHBlciBTdXNpbmRlcnMKPj4gY29tbWVudHMuIGJ1dCBpZiB5b3UgZ290IEFS
OTI4MCBwbGVhc2UgdHJ5IHRvIHVzZSB0aGF0IGlmIDIgYW50ZW5uYSBpcwo+PiB0aGUgY29uc3Ry
YWludC4KPj4KPj4KPj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwo+PiA+IGF0aDlrLWRldmVsIG1haWxpbmcgbGlzdAo+PiA+IGF0aDlrLWRldmVsQGxp
c3RzLmF0aDlrLm9yZwo+PiA+IGh0dHBzOi8vbGlzdHMuYXRoOWsub3JnL21haWxtYW4vbGlzdGlu
Zm8vYXRoOWstZGV2ZWwKPj4gPgo+PiA+Cj4+Cj4+Cj4+Cj4+IC0tCj4+IHNoYWZpCj4KCgoKLS0g
CnNoYWZpCg==
Ah, thanks for digging. You likely need both.. the chainmask may be
used somewhere else that I'm not familiar with.
But it should be limited by the max_streams, as the AR5416/AR9160 is a
3-chain device with two streams, and:
/* set up supported mcs set */
memset(&ht_info->mcs, 0, sizeof(ht_info->mcs));
tx_streams = ath9k_cmn_count_streams(common->tx_chainmask, max_streams);
rx_streams = ath9k_cmn_count_streams(common->rx_chainmask, max_streams);
.. so for the AR5416/AR9160 case, the chainmask is 0x7, max_streams
will be 2, and all the various rate control and MCS negotiation seems
to cope. I think it should be enough to set the TX/RX chainmask and
the max_streams value.
Adrian
On 23 June 2011 21:40, Mohammed Shafi <[email protected]> wrote:
> On Thu, Jun 23, 2011 at 5:52 PM, Adrian Chadd <[email protected]> wrote:
>> As I said, there's a value in the ath9k code that gets set based on
>> the chipset type.
>>
>> static void setup_ht_cap(struct ath_softc *sc,
>> ? ? ? ? ? ? ? ? ? ? ? ? struct ieee80211_sta_ht_cap *ht_info)
>>
>> in init.c
>>
>> That should be all you need to do to communicate to the higher layers
>> that you only support 2 streams.
>
> rather than changing the chain mask via debugfs, the best way is to
> hard code them when we read the chain mask from EEPROM(with inputs
> from Susinder)
>
> diff --git a/drivers/net/wireless/ath/ath9k/hw.c
> b/drivers/net/wireless/ath/ath9k/hw.c
> index 07827b5..b96e380 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.c
> +++ b/drivers/net/wireless/ath/ath9k/hw.c
> @@ -1990,6 +1990,9 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
> ? ? ? ? ? ? ? ?/* Use rx_chainmask from EEPROM. */
> ? ? ? ? ? ? ? ?pCap->rx_chainmask = ah->eep_ops->get_eeprom(ah, EEP_RX_MASK);
>
> + ? ? ? pCap->tx_chainmask = 0x3;
> + ? ? ? pCap->rx_chainmask = 0x3;
> +
> ? ? ? ?ah->misc_mode |= AR_PCU_MIC_NEW_LOC_ENA;
>
> ? ? ? ?/* enable key search for every frame in an aggregate */
>
>
>>
>> You're checking the wrong place. You're seeing _TX_ errors, but what
>> you're not seeing (likely because you don't have a 3 stream peer) is
>> that you're still advertising supporting MCS0->24, so peers may send
>> you MCS16->24 even though you can't receive it.
>>
>> The correct way is to patch the driver to only enable 2 streams in the
>> HT capability setup, so mac80211 and the rate control code only
>> advertises MCS0-15 and TX'es MCS0-15 respectively.
>>
>> (You have to do this as well as disabling the third chain btw.)
>>
>>
>>
>> Adrian
>>
>> On 23 June 2011 20:16, Mohammed Shafi <[email protected]> wrote:
>>> On Thu, Jun 23, 2011 at 5:26 PM, Fred Matthews <[email protected]> wrote:
>>>>
>>>>
>>>> Hi,
>>>>
>>>> Regarding streams used in Minstrel RC, I found that in "net/mac80211/rc80211_minstrel_ht.h", at line 16, there is "#define MINSTREL_MAX_STREAMS ?3", that sets the number of streams for minstrel RC.
>>>>
>>>> Now can someone help to pass this onto debugfs, so that we can change from 3 streams to 2 streams at runtime like the rx_chainmask. I tried creating a u8 stream_number and struct dentry *dbg_stream_number in the header file, then a debugfs_create_u8 in the c file. Then used it to redefine MINSTREL_MAX_STREAMS, but when I tested this I got errors, therefore, can anyone kindly share a patch to do this correctly.
>>>
>>> hi,
>>>
>>> i am not familiar with the minstrel rate control, but as you had asked
>>> I grep'd for MINSTREL_MAX_STREAMS to see if we can quickly add a debug
>>> entry to change it. but usage like this below suggests we can quickly
>>> hack the macro to 2 rather than adding a debug entry
>>>
>>> const struct mcs_group minstrel_mcs_groups[] = {
>>> ? ? ? ?MCS_GROUP(1, 0, 0),
>>> ? ? ? ?MCS_GROUP(2, 0, 0),
>>> #if MINSTREL_MAX_STREAMS >= 3
>>> ? ? ? ?MCS_GROUP(3, 0, 0),
>>> #endif
>>>
>>>
>>>>
>>>> Thanks in advance
>>>>
>>>>
>>>>
>>>> On Wed, Jun 22, 2011 at 3:57 PM, Mohammed Shafi wrote:
>>>>> On Wed, Jun 22, 2011 at 6:12 PM, Fred Matthews wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I used that command to disable the third antenna, and applied it to both AP
>>>>>> and STA AR9380 NICs.
>>>>>> I then performed an IPerf test between both and then captured the statistics
>>>>>> from the sender, (below) .
>>>>>> You can see that in rc_stats (minstrel), the rate control actually
>>>>>> "attempts" sending on 3 stream MCSs (16-23) around 256 times each.
>>>>>
>>>>> just a guess. as we are changing the chain mask via debugfs and there
>>>>> may be a chance we may not have informed the minstrel rate control
>>>>> which is maintained in upper layer(mac80211) and it might be taking
>>>>> what we have configured the chain masks while we had initialized the
>>>>> device and i have very little idea about ministrel rate control
>>>>>
>>>>>>
>>>>>> Is there any way to prevent the RC from even attempting those rates, as if I
>>>>>> where to fully imitate an AR9280, it shouldnt attempt at those MCSs.
>>>>>
>>>>> may be we can try with ath9k rate control, and see what happens which
>>>>> is within the ath9k driver and affects xmit.c and it may have been
>>>>> informed of the chain mask change.
>>>>>
>>>>>>
>>>>>> Can Susinders comments also be detailed.
>>>>>>
>>>>>> Thanks in advance
>>>>>>
>>>>>> # cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/00\MAC/
>>>>>>
>>>>>> AUTH
>>>>>> ASSOC
>>>>>> AUTHORIZED
>>>>>> WME
>>>>>> ht supported
>>>>>> cap: 0x11ce
>>>>>> ? ? HT20/HT40
>>>>>> ? ? SM Power Save disabled
>>>>>> ? ? RX HT40 SGI
>>>>>> ? ? TX STBC
>>>>>> ? ? RX STBC 1-stream
>>>>>> ? ? Max AMSDU length: 7935 bytes
>>>>>> ? ? DSSS/CCK HT40
>>>>>> ampdu factor/density: 3/6
>>>>>> MCS mask: ff ff ff 00 00 00 00 00 00 00
>>>>>> MCS tx params: 1
>>>>>> 792
>>>>>> 150 ffff ffff ffff ffff ffff 60 ffff ffff ffff ffff ffff ffff ffff ffff ffff
>>>>>> a40
>>>>>> -77
>>>>>> 0
>>>>>> type ? ? ?rate ? ? throughput ?ewma prob ? this prob ?this succ/attempt
>>>>>> success ? ?attempts
>>>>>> HT20/LGI ? ?MCS0 ? ? ? ?6.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?163
>>>>>> ? ? ? ? 230
>>>>>> HT20/LGI ? ?MCS1 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>>> ? ? ? ? ?75
>>>>>> HT20/LGI ? ?MCS2 ? ? ? 19.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?252
>>>>>> ? ? ? ? 252
>>>>>> HT20/LGI ? ?MCS3 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>>> ? ? ? ? ?75
>>>>>> HT20/LGI ? ?MCS4 ? ? ? 36.2 ? ? ? 97.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?413
>>>>>> ? ? ? ? 474
>>>>>> HT20/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?76
>>>>>> HT20/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?80
>>>>>> HT20/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS8 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>>> ? ? ? ? ?75
>>>>>> HT20/LGI ? ?MCS9 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>>> ? ? ? ? ?70
>>>>>> HT20/LGI ? ?MCS10 ? ? ?34.2 ? ? ? 92.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 79
>>>>>> ? ? ? ? ?82
>>>>>> HT20/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?76
>>>>>> HT20/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?75
>>>>>> HT20/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?68
>>>>>> HT20/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?85
>>>>>> HT20/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 257
>>>>>> HT20/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT20/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS0 ? ? ? 13.6 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>>> ? ? ? ? ?75
>>>>>> HT40/LGI ? ?MCS1 ? ? ? 26.5 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>>>> ? ? ? ? ?72
>>>>>> HT40/LGI ? ?MCS2 ? ? ? 38.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>>>> ? ? ? ? ?73
>>>>>> HT40/LGI ? ?MCS3 ? ? ? 49.7 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>>> ? ? ? ? ?73
>>>>>> HT40/LGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 10
>>>>>> ? ? ? ?1220
>>>>>> HT40/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS8 ? ? ? 26.2 ? ? ? 98.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>>>> ? ? ? ? ?74
>>>>>> HT40/LGI ? ?MCS9 ? ? ? 49.3 ? ? ? 99.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>>>> ? ? ? ? ?69
>>>>>> HT40/LGI ? ?MCS10 ? ? ?20.5 ? ? ? 28.9 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>>>> ? ? ? ? 255
>>>>>> HT40/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 257
>>>>>> HT40/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?74
>>>>>> HT40/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 255
>>>>>> HT40/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS0 ? ? ? 15.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>>> ? ? ? ? ?70
>>>>>> HT40/SGI ? ?MCS1 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>>>> ? ? ? ? ?72
>>>>>> HT40/SGI ?t MCS2 ? ? ? 38.5 ? ? ? 91.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 81
>>>>>> ? ? ? ? ?83
>>>>>> HT40/SGI ? PMCS3 ? ? ? 54.3 ? ? ? 99.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ?66536
>>>>>> ? ? ? 67803
>>>>>> HT40/SGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS8 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>>>> ? ? ? ? ?67
>>>>>> HT40/SGI T ?MCS9 ? ? ? 54.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? 310227
>>>>>> ? ? ?312339
>>>>>> HT40/SGI ? ?MCS10 ? ? ?22.7 ? ? ? 29.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>>>> ? ? 46.8 Mbits/sec ? ?255
>>>>>> HT40/SGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 255
>>>>>> HT40/SGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? ?68
>>>>>> HT40/SGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 255
>>>>>> HT40/SGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>> HT40/SGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>>> ? ? ? ? 256
>>>>>>
>>>>>> Total packet count:: ? ?ideal 365056 ? ? ?lookaround 13702
>>>>>> Average A-MPDU length: 5.4
>>>>>>
>>>>>>> Date: Tue, 21 Jun 2011 14:25:36 +0530
>>>>>>> Subject: Re: [ath9k-devel] Disabling the third antenna for AR9380 in ath9k
>>>>>>> From: [email protected]
>>>>>>> To: [email protected]
>>>>>>> CC: [email protected]; [email protected];
>>>>>>> [email protected]; [email protected];
>>>>>>> [email protected]
>>>>>>>
>>>>>>> On Tue, Jun 21, 2011 at 2:07 AM, Fred Matthews
>>>>>>> wrote:
>>>>>>> > Hi all,
>>>>>>> > I am installing the AR9380 NIC on laptops, but some only have two UFL
>>>>>>> > connectors, and thus I was wondering if using only two of the UFL
>>>>>>> > antenna
>>>>>>> > ports will have any negative effect or difference than installing a 2x2
>>>>>>> > NIC
>>>>>>> > (AR9280 for example which has only 2 ports anyway). Please kindly
>>>>>>> > explain
>>>>>>> > with references if possible.
>>>>>>> > Also for example is there anyway to disable transmission on the third
>>>>>>> > UFL
>>>>>>> > port (antenna) from ath9k or otherwise.
>>>>>>> > Thank you all very much
>>>>>>>
>>>>>>> you can change the tx/rx chainmask for 3x3 AR9380 to disable
>>>>>>> transmission on the third antenna
>>>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > tx_chainmask
>>>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > rx_chainmask
>>>>>>>
>>>>>>> after this, ideally it should operate as 2x2 device as per Susinders
>>>>>>> comments. but if you got AR9280 please try to use that if 2 antenna is
>>>>>>> the constraint.
>>>>>>>
>>>>>>>
>>>>>>> > _______________________________________________
>>>>>>> > ath9k-devel mailing list
>>>>>>> > [email protected]
>>>>>>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>>>>>>> >
>>>>>>> >
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--
>>>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>>>> the body of a message to [email protected]
>>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>>>
>>>
>>>
>>>
>>> --
>>> shafi
>>>
>>
>
>
>
> --
> shafi
>
On Thu, Jun 23, 2011 at 5:52 PM, Adrian Chadd <[email protected]> wrote:
> As I said, there's a value in the ath9k code that gets set based on
> the chipset type.
>
> static void setup_ht_cap(struct ath_softc *sc,
> ? ? ? ? ? ? ? ? ? ? ? ? struct ieee80211_sta_ht_cap *ht_info)
>
> in init.c
>
> That should be all you need to do to communicate to the higher layers
> that you only support 2 streams.
rather than changing the chain mask via debugfs, the best way is to
hard code them when we read the chain mask from EEPROM(with inputs
from Susinder)
diff --git a/drivers/net/wireless/ath/ath9k/hw.c
b/drivers/net/wireless/ath/ath9k/hw.c
index 07827b5..b96e380 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1990,6 +1990,9 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
/* Use rx_chainmask from EEPROM. */
pCap->rx_chainmask = ah->eep_ops->get_eeprom(ah, EEP_RX_MASK);
+ pCap->tx_chainmask = 0x3;
+ pCap->rx_chainmask = 0x3;
+
ah->misc_mode |= AR_PCU_MIC_NEW_LOC_ENA;
/* enable key search for every frame in an aggregate */
>
> You're checking the wrong place. You're seeing _TX_ errors, but what
> you're not seeing (likely because you don't have a 3 stream peer) is
> that you're still advertising supporting MCS0->24, so peers may send
> you MCS16->24 even though you can't receive it.
>
> The correct way is to patch the driver to only enable 2 streams in the
> HT capability setup, so mac80211 and the rate control code only
> advertises MCS0-15 and TX'es MCS0-15 respectively.
>
> (You have to do this as well as disabling the third chain btw.)
>
>
>
> Adrian
>
> On 23 June 2011 20:16, Mohammed Shafi <[email protected]> wrote:
>> On Thu, Jun 23, 2011 at 5:26 PM, Fred Matthews <[email protected]> wrote:
>>>
>>>
>>> Hi,
>>>
>>> Regarding streams used in Minstrel RC, I found that in "net/mac80211/rc80211_minstrel_ht.h", at line 16, there is "#define MINSTREL_MAX_STREAMS ?3", that sets the number of streams for minstrel RC.
>>>
>>> Now can someone help to pass this onto debugfs, so that we can change from 3 streams to 2 streams at runtime like the rx_chainmask. I tried creating a u8 stream_number and struct dentry *dbg_stream_number in the header file, then a debugfs_create_u8 in the c file. Then used it to redefine MINSTREL_MAX_STREAMS, but when I tested this I got errors, therefore, can anyone kindly share a patch to do this correctly.
>>
>> hi,
>>
>> i am not familiar with the minstrel rate control, but as you had asked
>> I grep'd for MINSTREL_MAX_STREAMS to see if we can quickly add a debug
>> entry to change it. but usage like this below suggests we can quickly
>> hack the macro to 2 rather than adding a debug entry
>>
>> const struct mcs_group minstrel_mcs_groups[] = {
>> ? ? ? ?MCS_GROUP(1, 0, 0),
>> ? ? ? ?MCS_GROUP(2, 0, 0),
>> #if MINSTREL_MAX_STREAMS >= 3
>> ? ? ? ?MCS_GROUP(3, 0, 0),
>> #endif
>>
>>
>>>
>>> Thanks in advance
>>>
>>>
>>>
>>> On Wed, Jun 22, 2011 at 3:57 PM, Mohammed Shafi wrote:
>>>> On Wed, Jun 22, 2011 at 6:12 PM, Fred Matthews wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I used that command to disable the third antenna, and applied it to both AP
>>>>> and STA AR9380 NICs.
>>>>> I then performed an IPerf test between both and then captured the statistics
>>>>> from the sender, (below) .
>>>>> You can see that in rc_stats (minstrel), the rate control actually
>>>>> "attempts" sending on 3 stream MCSs (16-23) around 256 times each.
>>>>
>>>> just a guess. as we are changing the chain mask via debugfs and there
>>>> may be a chance we may not have informed the minstrel rate control
>>>> which is maintained in upper layer(mac80211) and it might be taking
>>>> what we have configured the chain masks while we had initialized the
>>>> device and i have very little idea about ministrel rate control
>>>>
>>>>>
>>>>> Is there any way to prevent the RC from even attempting those rates, as if I
>>>>> where to fully imitate an AR9280, it shouldnt attempt at those MCSs.
>>>>
>>>> may be we can try with ath9k rate control, and see what happens which
>>>> is within the ath9k driver and affects xmit.c and it may have been
>>>> informed of the chain mask change.
>>>>
>>>>>
>>>>> Can Susinders comments also be detailed.
>>>>>
>>>>> Thanks in advance
>>>>>
>>>>> # cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/00\MAC/
>>>>>
>>>>> AUTH
>>>>> ASSOC
>>>>> AUTHORIZED
>>>>> WME
>>>>> ht supported
>>>>> cap: 0x11ce
>>>>> ? ? HT20/HT40
>>>>> ? ? SM Power Save disabled
>>>>> ? ? RX HT40 SGI
>>>>> ? ? TX STBC
>>>>> ? ? RX STBC 1-stream
>>>>> ? ? Max AMSDU length: 7935 bytes
>>>>> ? ? DSSS/CCK HT40
>>>>> ampdu factor/density: 3/6
>>>>> MCS mask: ff ff ff 00 00 00 00 00 00 00
>>>>> MCS tx params: 1
>>>>> 792
>>>>> 150 ffff ffff ffff ffff ffff 60 ffff ffff ffff ffff ffff ffff ffff ffff ffff
>>>>> a40
>>>>> -77
>>>>> 0
>>>>> type ? ? ?rate ? ? throughput ?ewma prob ? this prob ?this succ/attempt
>>>>> success ? ?attempts
>>>>> HT20/LGI ? ?MCS0 ? ? ? ?6.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?163
>>>>> ? ? ? ? 230
>>>>> HT20/LGI ? ?MCS1 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS2 ? ? ? 19.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?252
>>>>> ? ? ? ? 252
>>>>> HT20/LGI ? ?MCS3 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS4 ? ? ? 36.2 ? ? ? 97.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?413
>>>>> ? ? ? ? 474
>>>>> HT20/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?76
>>>>> HT20/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?80
>>>>> HT20/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS8 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS9 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>> ? ? ? ? ?70
>>>>> HT20/LGI ? ?MCS10 ? ? ?34.2 ? ? ? 92.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 79
>>>>> ? ? ? ? ?82
>>>>> HT20/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?76
>>>>> HT20/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?68
>>>>> HT20/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?85
>>>>> HT20/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 257
>>>>> HT20/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS0 ? ? ? 13.6 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT40/LGI ? ?MCS1 ? ? ? 26.5 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>>> ? ? ? ? ?72
>>>>> HT40/LGI ? ?MCS2 ? ? ? 38.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>>> ? ? ? ? ?73
>>>>> HT40/LGI ? ?MCS3 ? ? ? 49.7 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>> ? ? ? ? ?73
>>>>> HT40/LGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 10
>>>>> ? ? ? ?1220
>>>>> HT40/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS8 ? ? ? 26.2 ? ? ? 98.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>>> ? ? ? ? ?74
>>>>> HT40/LGI ? ?MCS9 ? ? ? 49.3 ? ? ? 99.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>>> ? ? ? ? ?69
>>>>> HT40/LGI ? ?MCS10 ? ? ?20.5 ? ? ? 28.9 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>>> ? ? ? ? 255
>>>>> HT40/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 257
>>>>> HT40/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?74
>>>>> HT40/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 255
>>>>> HT40/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS0 ? ? ? 15.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>> ? ? ? ? ?70
>>>>> HT40/SGI ? ?MCS1 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>>> ? ? ? ? ?72
>>>>> HT40/SGI ?t MCS2 ? ? ? 38.5 ? ? ? 91.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 81
>>>>> ? ? ? ? ?83
>>>>> HT40/SGI ? PMCS3 ? ? ? 54.3 ? ? ? 99.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ?66536
>>>>> ? ? ? 67803
>>>>> HT40/SGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS8 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>>> ? ? ? ? ?67
>>>>> HT40/SGI T ?MCS9 ? ? ? 54.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? 310227
>>>>> ? ? ?312339
>>>>> HT40/SGI ? ?MCS10 ? ? ?22.7 ? ? ? 29.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>>> ? ? 46.8 Mbits/sec ? ?255
>>>>> HT40/SGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 255
>>>>> HT40/SGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?68
>>>>> HT40/SGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 255
>>>>> HT40/SGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>>
>>>>> Total packet count:: ? ?ideal 365056 ? ? ?lookaround 13702
>>>>> Average A-MPDU length: 5.4
>>>>>
>>>>>> Date: Tue, 21 Jun 2011 14:25:36 +0530
>>>>>> Subject: Re: [ath9k-devel] Disabling the third antenna for AR9380 in ath9k
>>>>>> From: [email protected]
>>>>>> To: [email protected]
>>>>>> CC: [email protected]; [email protected];
>>>>>> [email protected]; [email protected];
>>>>>> [email protected]
>>>>>>
>>>>>> On Tue, Jun 21, 2011 at 2:07 AM, Fred Matthews
>>>>>> wrote:
>>>>>> > Hi all,
>>>>>> > I am installing the AR9380 NIC on laptops, but some only have two UFL
>>>>>> > connectors, and thus I was wondering if using only two of the UFL
>>>>>> > antenna
>>>>>> > ports will have any negative effect or difference than installing a 2x2
>>>>>> > NIC
>>>>>> > (AR9280 for example which has only 2 ports anyway). Please kindly
>>>>>> > explain
>>>>>> > with references if possible.
>>>>>> > Also for example is there anyway to disable transmission on the third
>>>>>> > UFL
>>>>>> > port (antenna) from ath9k or otherwise.
>>>>>> > Thank you all very much
>>>>>>
>>>>>> you can change the tx/rx chainmask for 3x3 AR9380 to disable
>>>>>> transmission on the third antenna
>>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > tx_chainmask
>>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > rx_chainmask
>>>>>>
>>>>>> after this, ideally it should operate as 2x2 device as per Susinders
>>>>>> comments. but if you got AR9280 please try to use that if 2 antenna is
>>>>>> the constraint.
>>>>>>
>>>>>>
>>>>>> > _______________________________________________
>>>>>> > ath9k-devel mailing list
>>>>>> > [email protected]
>>>>>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>>>>>> >
>>>>>> >
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--
>>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>>> the body of a message to [email protected]
>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>>
>>
>>
>>
>> --
>> shafi
>>
>
--
shafi
On Thu, Jun 23, 2011 at 5:26 PM, Fred Matthews <[email protected]> wrote:
>
>
> Hi,
>
> Regarding streams used in Minstrel RC, I found that in "net/mac80211/rc80211_minstrel_ht.h", at line 16, there is "#define MINSTREL_MAX_STREAMS ?3", that sets the number of streams for minstrel RC.
>
> Now can someone help to pass this onto debugfs, so that we can change from 3 streams to 2 streams at runtime like the rx_chainmask. I tried creating a u8 stream_number and struct dentry *dbg_stream_number in the header file, then a debugfs_create_u8 in the c file. Then used it to redefine MINSTREL_MAX_STREAMS, but when I tested this I got errors, therefore, can anyone kindly share a patch to do this correctly.
hi,
i am not familiar with the minstrel rate control, but as you had asked
I grep'd for MINSTREL_MAX_STREAMS to see if we can quickly add a debug
entry to change it. but usage like this below suggests we can quickly
hack the macro to 2 rather than adding a debug entry
const struct mcs_group minstrel_mcs_groups[] = {
MCS_GROUP(1, 0, 0),
MCS_GROUP(2, 0, 0),
#if MINSTREL_MAX_STREAMS >= 3
MCS_GROUP(3, 0, 0),
#endif
>
> Thanks in advance
>
>
>
> On Wed, Jun 22, 2011 at 3:57 PM, Mohammed Shafi wrote:
>> On Wed, Jun 22, 2011 at 6:12 PM, Fred Matthews wrote:
>>>
>>> Hi,
>>>
>>> I used that command to disable the third antenna, and applied it to both AP
>>> and STA AR9380 NICs.
>>> I then performed an IPerf test between both and then captured the statistics
>>> from the sender, (below) .
>>> You can see that in rc_stats (minstrel), the rate control actually
>>> "attempts" sending on 3 stream MCSs (16-23) around 256 times each.
>>
>> just a guess. as we are changing the chain mask via debugfs and there
>> may be a chance we may not have informed the minstrel rate control
>> which is maintained in upper layer(mac80211) and it might be taking
>> what we have configured the chain masks while we had initialized the
>> device and i have very little idea about ministrel rate control
>>
>>>
>>> Is there any way to prevent the RC from even attempting those rates, as if I
>>> where to fully imitate an AR9280, it shouldnt attempt at those MCSs.
>>
>> may be we can try with ath9k rate control, and see what happens which
>> is within the ath9k driver and affects xmit.c and it may have been
>> informed of the chain mask change.
>>
>>>
>>> Can Susinders comments also be detailed.
>>>
>>> Thanks in advance
>>>
>>> # cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/00\MAC/
>>>
>>> AUTH
>>> ASSOC
>>> AUTHORIZED
>>> WME
>>> ht supported
>>> cap: 0x11ce
>>> ? ? HT20/HT40
>>> ? ? SM Power Save disabled
>>> ? ? RX HT40 SGI
>>> ? ? TX STBC
>>> ? ? RX STBC 1-stream
>>> ? ? Max AMSDU length: 7935 bytes
>>> ? ? DSSS/CCK HT40
>>> ampdu factor/density: 3/6
>>> MCS mask: ff ff ff 00 00 00 00 00 00 00
>>> MCS tx params: 1
>>> 792
>>> 150 ffff ffff ffff ffff ffff 60 ffff ffff ffff ffff ffff ffff ffff ffff ffff
>>> a40
>>> -77
>>> 0
>>> type ? ? ?rate ? ? throughput ?ewma prob ? this prob ?this succ/attempt
>>> success ? ?attempts
>>> HT20/LGI ? ?MCS0 ? ? ? ?6.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?163
>>> ? ? ? ? 230
>>> HT20/LGI ? ?MCS1 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>> ? ? ? ? ?75
>>> HT20/LGI ? ?MCS2 ? ? ? 19.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?252
>>> ? ? ? ? 252
>>> HT20/LGI ? ?MCS3 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>> ? ? ? ? ?75
>>> HT20/LGI ? ?MCS4 ? ? ? 36.2 ? ? ? 97.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?413
>>> ? ? ? ? 474
>>> HT20/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?76
>>> HT20/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?80
>>> HT20/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS8 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>> ? ? ? ? ?75
>>> HT20/LGI ? ?MCS9 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>> ? ? ? ? ?70
>>> HT20/LGI ? ?MCS10 ? ? ?34.2 ? ? ? 92.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 79
>>> ? ? ? ? ?82
>>> HT20/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?76
>>> HT20/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?75
>>> HT20/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?68
>>> HT20/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?85
>>> HT20/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 257
>>> HT20/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT20/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS0 ? ? ? 13.6 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>> ? ? ? ? ?75
>>> HT40/LGI ? ?MCS1 ? ? ? 26.5 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>> ? ? ? ? ?72
>>> HT40/LGI ? ?MCS2 ? ? ? 38.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>> ? ? ? ? ?73
>>> HT40/LGI ? ?MCS3 ? ? ? 49.7 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>> ? ? ? ? ?73
>>> HT40/LGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 10
>>> ? ? ? ?1220
>>> HT40/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS8 ? ? ? 26.2 ? ? ? 98.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>> ? ? ? ? ?74
>>> HT40/LGI ? ?MCS9 ? ? ? 49.3 ? ? ? 99.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>> ? ? ? ? ?69
>>> HT40/LGI ? ?MCS10 ? ? ?20.5 ? ? ? 28.9 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>> ? ? ? ? 255
>>> HT40/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 257
>>> HT40/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?74
>>> HT40/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 255
>>> HT40/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS0 ? ? ? 15.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>> ? ? ? ? ?70
>>> HT40/SGI ? ?MCS1 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>> ? ? ? ? ?72
>>> HT40/SGI ?t MCS2 ? ? ? 38.5 ? ? ? 91.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 81
>>> ? ? ? ? ?83
>>> HT40/SGI ? PMCS3 ? ? ? 54.3 ? ? ? 99.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ?66536
>>> ? ? ? 67803
>>> HT40/SGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS8 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>> ? ? ? ? ?67
>>> HT40/SGI T ?MCS9 ? ? ? 54.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? 310227
>>> ? ? ?312339
>>> HT40/SGI ? ?MCS10 ? ? ?22.7 ? ? ? 29.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>> ? ? 46.8 Mbits/sec ? ?255
>>> HT40/SGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 255
>>> HT40/SGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? ?68
>>> HT40/SGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 255
>>> HT40/SGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>> HT40/SGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>> ? ? ? ? 256
>>>
>>> Total packet count:: ? ?ideal 365056 ? ? ?lookaround 13702
>>> Average A-MPDU length: 5.4
>>>
>>>> Date: Tue, 21 Jun 2011 14:25:36 +0530
>>>> Subject: Re: [ath9k-devel] Disabling the third antenna for AR9380 in ath9k
>>>> From: [email protected]
>>>> To: [email protected]
>>>> CC: [email protected]; [email protected];
>>>> [email protected]; [email protected];
>>>> [email protected]
>>>>
>>>> On Tue, Jun 21, 2011 at 2:07 AM, Fred Matthews
>>>> wrote:
>>>> > Hi all,
>>>> > I am installing the AR9380 NIC on laptops, but some only have two UFL
>>>> > connectors, and thus I was wondering if using only two of the UFL
>>>> > antenna
>>>> > ports will have any negative effect or difference than installing a 2x2
>>>> > NIC
>>>> > (AR9280 for example which has only 2 ports anyway). Please kindly
>>>> > explain
>>>> > with references if possible.
>>>> > Also for example is there anyway to disable transmission on the third
>>>> > UFL
>>>> > port (antenna) from ath9k or otherwise.
>>>> > Thank you all very much
>>>>
>>>> you can change the tx/rx chainmask for 3x3 AR9380 to disable
>>>> transmission on the third antenna
>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > tx_chainmask
>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > rx_chainmask
>>>>
>>>> after this, ideally it should operate as 2x2 device as per Susinders
>>>> comments. but if you got AR9280 please try to use that if 2 antenna is
>>>> the constraint.
>>>>
>>>>
>>>> > _______________________________________________
>>>> > ath9k-devel mailing list
>>>> > [email protected]
>>>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>>>> >
>>>> >
>>>>
>>>>
>>>>
>>>> --
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>
--
shafi
As I said, there's a value in the ath9k code that gets set based on
the chipset type.
static void setup_ht_cap(struct ath_softc *sc,
struct ieee80211_sta_ht_cap *ht_info)
in init.c
That should be all you need to do to communicate to the higher layers
that you only support 2 streams.
You're checking the wrong place. You're seeing _TX_ errors, but what
you're not seeing (likely because you don't have a 3 stream peer) is
that you're still advertising supporting MCS0->24, so peers may send
you MCS16->24 even though you can't receive it.
The correct way is to patch the driver to only enable 2 streams in the
HT capability setup, so mac80211 and the rate control code only
advertises MCS0-15 and TX'es MCS0-15 respectively.
(You have to do this as well as disabling the third chain btw.)
Adrian
On 23 June 2011 20:16, Mohammed Shafi <[email protected]> wrote:
> On Thu, Jun 23, 2011 at 5:26 PM, Fred Matthews <[email protected]> wrote:
>>
>>
>> Hi,
>>
>> Regarding streams used in Minstrel RC, I found that in "net/mac80211/rc80211_minstrel_ht.h", at line 16, there is "#define MINSTREL_MAX_STREAMS ?3", that sets the number of streams for minstrel RC.
>>
>> Now can someone help to pass this onto debugfs, so that we can change from 3 streams to 2 streams at runtime like the rx_chainmask. I tried creating a u8 stream_number and struct dentry *dbg_stream_number in the header file, then a debugfs_create_u8 in the c file. Then used it to redefine MINSTREL_MAX_STREAMS, but when I tested this I got errors, therefore, can anyone kindly share a patch to do this correctly.
>
> hi,
>
> i am not familiar with the minstrel rate control, but as you had asked
> I grep'd for MINSTREL_MAX_STREAMS to see if we can quickly add a debug
> entry to change it. but usage like this below suggests we can quickly
> hack the macro to 2 rather than adding a debug entry
>
> const struct mcs_group minstrel_mcs_groups[] = {
> ? ? ? ?MCS_GROUP(1, 0, 0),
> ? ? ? ?MCS_GROUP(2, 0, 0),
> #if MINSTREL_MAX_STREAMS >= 3
> ? ? ? ?MCS_GROUP(3, 0, 0),
> #endif
>
>
>>
>> Thanks in advance
>>
>>
>>
>> On Wed, Jun 22, 2011 at 3:57 PM, Mohammed Shafi wrote:
>>> On Wed, Jun 22, 2011 at 6:12 PM, Fred Matthews wrote:
>>>>
>>>> Hi,
>>>>
>>>> I used that command to disable the third antenna, and applied it to both AP
>>>> and STA AR9380 NICs.
>>>> I then performed an IPerf test between both and then captured the statistics
>>>> from the sender, (below) .
>>>> You can see that in rc_stats (minstrel), the rate control actually
>>>> "attempts" sending on 3 stream MCSs (16-23) around 256 times each.
>>>
>>> just a guess. as we are changing the chain mask via debugfs and there
>>> may be a chance we may not have informed the minstrel rate control
>>> which is maintained in upper layer(mac80211) and it might be taking
>>> what we have configured the chain masks while we had initialized the
>>> device and i have very little idea about ministrel rate control
>>>
>>>>
>>>> Is there any way to prevent the RC from even attempting those rates, as if I
>>>> where to fully imitate an AR9280, it shouldnt attempt at those MCSs.
>>>
>>> may be we can try with ath9k rate control, and see what happens which
>>> is within the ath9k driver and affects xmit.c and it may have been
>>> informed of the chain mask change.
>>>
>>>>
>>>> Can Susinders comments also be detailed.
>>>>
>>>> Thanks in advance
>>>>
>>>> # cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/00\MAC/
>>>>
>>>> AUTH
>>>> ASSOC
>>>> AUTHORIZED
>>>> WME
>>>> ht supported
>>>> cap: 0x11ce
>>>> ? ? HT20/HT40
>>>> ? ? SM Power Save disabled
>>>> ? ? RX HT40 SGI
>>>> ? ? TX STBC
>>>> ? ? RX STBC 1-stream
>>>> ? ? Max AMSDU length: 7935 bytes
>>>> ? ? DSSS/CCK HT40
>>>> ampdu factor/density: 3/6
>>>> MCS mask: ff ff ff 00 00 00 00 00 00 00
>>>> MCS tx params: 1
>>>> 792
>>>> 150 ffff ffff ffff ffff ffff 60 ffff ffff ffff ffff ffff ffff ffff ffff ffff
>>>> a40
>>>> -77
>>>> 0
>>>> type ? ? ?rate ? ? throughput ?ewma prob ? this prob ?this succ/attempt
>>>> success ? ?attempts
>>>> HT20/LGI ? ?MCS0 ? ? ? ?6.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?163
>>>> ? ? ? ? 230
>>>> HT20/LGI ? ?MCS1 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>> ? ? ? ? ?75
>>>> HT20/LGI ? ?MCS2 ? ? ? 19.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?252
>>>> ? ? ? ? 252
>>>> HT20/LGI ? ?MCS3 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>> ? ? ? ? ?75
>>>> HT20/LGI ? ?MCS4 ? ? ? 36.2 ? ? ? 97.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?413
>>>> ? ? ? ? 474
>>>> HT20/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?76
>>>> HT20/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?80
>>>> HT20/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS8 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>> ? ? ? ? ?75
>>>> HT20/LGI ? ?MCS9 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>> ? ? ? ? ?70
>>>> HT20/LGI ? ?MCS10 ? ? ?34.2 ? ? ? 92.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 79
>>>> ? ? ? ? ?82
>>>> HT20/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?76
>>>> HT20/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?75
>>>> HT20/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?68
>>>> HT20/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?85
>>>> HT20/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 257
>>>> HT20/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT20/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS0 ? ? ? 13.6 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>> ? ? ? ? ?75
>>>> HT40/LGI ? ?MCS1 ? ? ? 26.5 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>> ? ? ? ? ?72
>>>> HT40/LGI ? ?MCS2 ? ? ? 38.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>> ? ? ? ? ?73
>>>> HT40/LGI ? ?MCS3 ? ? ? 49.7 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>> ? ? ? ? ?73
>>>> HT40/LGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 10
>>>> ? ? ? ?1220
>>>> HT40/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS8 ? ? ? 26.2 ? ? ? 98.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>> ? ? ? ? ?74
>>>> HT40/LGI ? ?MCS9 ? ? ? 49.3 ? ? ? 99.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>> ? ? ? ? ?69
>>>> HT40/LGI ? ?MCS10 ? ? ?20.5 ? ? ? 28.9 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>> ? ? ? ? 255
>>>> HT40/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 257
>>>> HT40/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?74
>>>> HT40/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 255
>>>> HT40/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS0 ? ? ? 15.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>> ? ? ? ? ?70
>>>> HT40/SGI ? ?MCS1 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>> ? ? ? ? ?72
>>>> HT40/SGI ?t MCS2 ? ? ? 38.5 ? ? ? 91.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 81
>>>> ? ? ? ? ?83
>>>> HT40/SGI ? PMCS3 ? ? ? 54.3 ? ? ? 99.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ?66536
>>>> ? ? ? 67803
>>>> HT40/SGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS8 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>> ? ? ? ? ?67
>>>> HT40/SGI T ?MCS9 ? ? ? 54.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? 310227
>>>> ? ? ?312339
>>>> HT40/SGI ? ?MCS10 ? ? ?22.7 ? ? ? 29.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>> ? ? 46.8 Mbits/sec ? ?255
>>>> HT40/SGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 255
>>>> HT40/SGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? ?68
>>>> HT40/SGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 255
>>>> HT40/SGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>> HT40/SGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>> ? ? ? ? 256
>>>>
>>>> Total packet count:: ? ?ideal 365056 ? ? ?lookaround 13702
>>>> Average A-MPDU length: 5.4
>>>>
>>>>> Date: Tue, 21 Jun 2011 14:25:36 +0530
>>>>> Subject: Re: [ath9k-devel] Disabling the third antenna for AR9380 in ath9k
>>>>> From: [email protected]
>>>>> To: [email protected]
>>>>> CC: [email protected]; [email protected];
>>>>> [email protected]; [email protected];
>>>>> [email protected]
>>>>>
>>>>> On Tue, Jun 21, 2011 at 2:07 AM, Fred Matthews
>>>>> wrote:
>>>>> > Hi all,
>>>>> > I am installing the AR9380 NIC on laptops, but some only have two UFL
>>>>> > connectors, and thus I was wondering if using only two of the UFL
>>>>> > antenna
>>>>> > ports will have any negative effect or difference than installing a 2x2
>>>>> > NIC
>>>>> > (AR9280 for example which has only 2 ports anyway). Please kindly
>>>>> > explain
>>>>> > with references if possible.
>>>>> > Also for example is there anyway to disable transmission on the third
>>>>> > UFL
>>>>> > port (antenna) from ath9k or otherwise.
>>>>> > Thank you all very much
>>>>>
>>>>> you can change the tx/rx chainmask for 3x3 AR9380 to disable
>>>>> transmission on the third antenna
>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > tx_chainmask
>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > rx_chainmask
>>>>>
>>>>> after this, ideally it should operate as 2x2 device as per Susinders
>>>>> comments. but if you got AR9280 please try to use that if 2 antenna is
>>>>> the constraint.
>>>>>
>>>>>
>>>>> > _______________________________________________
>>>>> > ath9k-devel mailing list
>>>>> > [email protected]
>>>>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>>>>> >
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--
>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>> the body of a message to [email protected]
>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>
>
>
>
> --
> shafi
>
On Thu, Jun 23, 2011 at 5:52 PM, Adrian Chadd <[email protected]> wrote:
> As I said, there's a value in the ath9k code that gets set based on
> the chipset type.
>
> static void setup_ht_cap(struct ath_softc *sc,
> ? ? ? ? ? ? ? ? ? ? ? ? struct ieee80211_sta_ht_cap *ht_info)
>
> in init.c
>
> That should be all you need to do to communicate to the higher layers
> that you only support 2 streams.
Adrian thanks a lot for the pointer, should this be sufficient? or are
we still missing communicating something to the upper layer, all i can
see is this affects rx_mask sent to the upper layer
diff --git a/drivers/net/wireless/ath/ath9k/init.c
b/drivers/net/wireless/ath/ath9k/init.c
index 50103b2..079359e 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -251,6 +251,10 @@ static void setup_ht_cap(struct ath_softc *sc,
max_streams = 3;
else
max_streams = 2;
+ /*
+ * hard code max_streams
+ */
+ max_streams = 2;
if (AR_SREV_9280_20_OR_LATER(ah)) {
if (max_streams >= 2)
>
> You're checking the wrong place. You're seeing _TX_ errors, but what
> you're not seeing (likely because you don't have a 3 stream peer) is
> that you're still advertising supporting MCS0->24, so peers may send
> you MCS16->24 even though you can't receive it.
>
> The correct way is to patch the driver to only enable 2 streams in the
> HT capability setup, so mac80211 and the rate control code only
> advertises MCS0-15 and TX'es MCS0-15 respectively.
>
> (You have to do this as well as disabling the third chain btw.)
>
>
>
> Adrian
>
> On 23 June 2011 20:16, Mohammed Shafi <[email protected]> wrote:
>> On Thu, Jun 23, 2011 at 5:26 PM, Fred Matthews <[email protected]> wrote:
>>>
>>>
>>> Hi,
>>>
>>> Regarding streams used in Minstrel RC, I found that in "net/mac80211/rc80211_minstrel_ht.h", at line 16, there is "#define MINSTREL_MAX_STREAMS ?3", that sets the number of streams for minstrel RC.
>>>
>>> Now can someone help to pass this onto debugfs, so that we can change from 3 streams to 2 streams at runtime like the rx_chainmask. I tried creating a u8 stream_number and struct dentry *dbg_stream_number in the header file, then a debugfs_create_u8 in the c file. Then used it to redefine MINSTREL_MAX_STREAMS, but when I tested this I got errors, therefore, can anyone kindly share a patch to do this correctly.
>>
>> hi,
>>
>> i am not familiar with the minstrel rate control, but as you had asked
>> I grep'd for MINSTREL_MAX_STREAMS to see if we can quickly add a debug
>> entry to change it. but usage like this below suggests we can quickly
>> hack the macro to 2 rather than adding a debug entry
>>
>> const struct mcs_group minstrel_mcs_groups[] = {
>> ? ? ? ?MCS_GROUP(1, 0, 0),
>> ? ? ? ?MCS_GROUP(2, 0, 0),
>> #if MINSTREL_MAX_STREAMS >= 3
>> ? ? ? ?MCS_GROUP(3, 0, 0),
>> #endif
>>
>>
>>>
>>> Thanks in advance
>>>
>>>
>>>
>>> On Wed, Jun 22, 2011 at 3:57 PM, Mohammed Shafi wrote:
>>>> On Wed, Jun 22, 2011 at 6:12 PM, Fred Matthews wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I used that command to disable the third antenna, and applied it to both AP
>>>>> and STA AR9380 NICs.
>>>>> I then performed an IPerf test between both and then captured the statistics
>>>>> from the sender, (below) .
>>>>> You can see that in rc_stats (minstrel), the rate control actually
>>>>> "attempts" sending on 3 stream MCSs (16-23) around 256 times each.
>>>>
>>>> just a guess. as we are changing the chain mask via debugfs and there
>>>> may be a chance we may not have informed the minstrel rate control
>>>> which is maintained in upper layer(mac80211) and it might be taking
>>>> what we have configured the chain masks while we had initialized the
>>>> device and i have very little idea about ministrel rate control
>>>>
>>>>>
>>>>> Is there any way to prevent the RC from even attempting those rates, as if I
>>>>> where to fully imitate an AR9280, it shouldnt attempt at those MCSs.
>>>>
>>>> may be we can try with ath9k rate control, and see what happens which
>>>> is within the ath9k driver and affects xmit.c and it may have been
>>>> informed of the chain mask change.
>>>>
>>>>>
>>>>> Can Susinders comments also be detailed.
>>>>>
>>>>> Thanks in advance
>>>>>
>>>>> # cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/00\MAC/
>>>>>
>>>>> AUTH
>>>>> ASSOC
>>>>> AUTHORIZED
>>>>> WME
>>>>> ht supported
>>>>> cap: 0x11ce
>>>>> ? ? HT20/HT40
>>>>> ? ? SM Power Save disabled
>>>>> ? ? RX HT40 SGI
>>>>> ? ? TX STBC
>>>>> ? ? RX STBC 1-stream
>>>>> ? ? Max AMSDU length: 7935 bytes
>>>>> ? ? DSSS/CCK HT40
>>>>> ampdu factor/density: 3/6
>>>>> MCS mask: ff ff ff 00 00 00 00 00 00 00
>>>>> MCS tx params: 1
>>>>> 792
>>>>> 150 ffff ffff ffff ffff ffff 60 ffff ffff ffff ffff ffff ffff ffff ffff ffff
>>>>> a40
>>>>> -77
>>>>> 0
>>>>> type ? ? ?rate ? ? throughput ?ewma prob ? this prob ?this succ/attempt
>>>>> success ? ?attempts
>>>>> HT20/LGI ? ?MCS0 ? ? ? ?6.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?163
>>>>> ? ? ? ? 230
>>>>> HT20/LGI ? ?MCS1 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS2 ? ? ? 19.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?252
>>>>> ? ? ? ? 252
>>>>> HT20/LGI ? ?MCS3 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS4 ? ? ? 36.2 ? ? ? 97.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ?413
>>>>> ? ? ? ? 474
>>>>> HT20/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?76
>>>>> HT20/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?80
>>>>> HT20/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS8 ? ? ? 13.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS9 ? ? ? 25.4 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>> ? ? ? ? ?70
>>>>> HT20/LGI ? ?MCS10 ? ? ?34.2 ? ? ? 92.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 79
>>>>> ? ? ? ? ?82
>>>>> HT20/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?76
>>>>> HT20/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?75
>>>>> HT20/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?68
>>>>> HT20/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?85
>>>>> HT20/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 257
>>>>> HT20/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT20/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS0 ? ? ? 13.6 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 75
>>>>> ? ? ? ? ?75
>>>>> HT40/LGI ? ?MCS1 ? ? ? 26.5 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>>> ? ? ? ? ?72
>>>>> HT40/LGI ? ?MCS2 ? ? ? 38.3 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>>> ? ? ? ? ?73
>>>>> HT40/LGI ? ?MCS3 ? ? ? 49.7 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>> ? ? ? ? ?73
>>>>> HT40/LGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 10
>>>>> ? ? ? ?1220
>>>>> HT40/LGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS8 ? ? ? 26.2 ? ? ? 98.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 73
>>>>> ? ? ? ? ?74
>>>>> HT40/LGI ? ?MCS9 ? ? ? 49.3 ? ? ? 99.2 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>>> ? ? ? ? ?69
>>>>> HT40/LGI ? ?MCS10 ? ? ?20.5 ? ? ? 28.9 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>>> ? ? ? ? 255
>>>>> HT40/LGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 257
>>>>> HT40/LGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?74
>>>>> HT40/LGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 255
>>>>> HT40/LGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/LGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS0 ? ? ? 15.1 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 70
>>>>> ? ? ? ? ?70
>>>>> HT40/SGI ? ?MCS1 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 72
>>>>> ? ? ? ? ?72
>>>>> HT40/SGI ?t MCS2 ? ? ? 38.5 ? ? ? 91.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 81
>>>>> ? ? ? ? ?83
>>>>> HT40/SGI ? PMCS3 ? ? ? 54.3 ? ? ? 99.5 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ?66536
>>>>> ? ? ? 67803
>>>>> HT40/SGI ? ?MCS4 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS5 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS6 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS7 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS8 ? ? ? 29.2 ? ? ?100.0 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 67
>>>>> ? ? ? ? ?67
>>>>> HT40/SGI T ?MCS9 ? ? ? 54.6 ? ? ? 99.9 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? 310227
>>>>> ? ? ?312339
>>>>> HT40/SGI ? ?MCS10 ? ? ?22.7 ? ? ? 29.3 ? ? ?100.0 ? ? ? ? ?0( ?0) ? ? ? ? 14
>>>>> ? ? 46.8 Mbits/sec ? ?255
>>>>> HT40/SGI ? ?MCS11 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS12 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 255
>>>>> HT40/SGI ? ?MCS13 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS14 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS15 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS16 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? ?68
>>>>> HT40/SGI ? ?MCS17 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS18 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 255
>>>>> HT40/SGI ? ?MCS19 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS20 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS21 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS22 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>> HT40/SGI ? ?MCS23 ? ? ? 0.0 ? ? ? ?0.0 ? ? ? ?0.0 ? ? ? ? ?0( ?0) ? ? ? ? ?0
>>>>> ? ? ? ? 256
>>>>>
>>>>> Total packet count:: ? ?ideal 365056 ? ? ?lookaround 13702
>>>>> Average A-MPDU length: 5.4
>>>>>
>>>>>> Date: Tue, 21 Jun 2011 14:25:36 +0530
>>>>>> Subject: Re: [ath9k-devel] Disabling the third antenna for AR9380 in ath9k
>>>>>> From: [email protected]
>>>>>> To: [email protected]
>>>>>> CC: [email protected]; [email protected];
>>>>>> [email protected]; [email protected];
>>>>>> [email protected]
>>>>>>
>>>>>> On Tue, Jun 21, 2011 at 2:07 AM, Fred Matthews
>>>>>> wrote:
>>>>>> > Hi all,
>>>>>> > I am installing the AR9380 NIC on laptops, but some only have two UFL
>>>>>> > connectors, and thus I was wondering if using only two of the UFL
>>>>>> > antenna
>>>>>> > ports will have any negative effect or difference than installing a 2x2
>>>>>> > NIC
>>>>>> > (AR9280 for example which has only 2 ports anyway). Please kindly
>>>>>> > explain
>>>>>> > with references if possible.
>>>>>> > Also for example is there anyway to disable transmission on the third
>>>>>> > UFL
>>>>>> > port (antenna) from ath9k or otherwise.
>>>>>> > Thank you all very much
>>>>>>
>>>>>> you can change the tx/rx chainmask for 3x3 AR9380 to disable
>>>>>> transmission on the third antenna
>>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > tx_chainmask
>>>>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > rx_chainmask
>>>>>>
>>>>>> after this, ideally it should operate as 2x2 device as per Susinders
>>>>>> comments. but if you got AR9280 please try to use that if 2 antenna is
>>>>>> the constraint.
>>>>>>
>>>>>>
>>>>>> > _______________________________________________
>>>>>> > ath9k-devel mailing list
>>>>>> > [email protected]
>>>>>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>>>>>> >
>>>>>> >
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--
>>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>>> the body of a message to [email protected]
>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>>
>>
>>
>>
>> --
>> shafi
>>
>
--
shafi
Hi,
Regarding streams used in Minstrel RC, I found that in "net/mac80211/rc80211_minstrel_ht.h", at line 16, there is "#define MINSTREL_MAX_STREAMS 3", that sets the number of streams for minstrel RC.
Now can someone help to pass this onto debugfs, so that we can change from 3 streams to 2 streams at runtime like the rx_chainmask. I tried creating a u8 stream_number and struct dentry *dbg_stream_number in the header file, then a debugfs_create_u8 in the c file. Then used it to redefine MINSTREL_MAX_STREAMS, but when I tested this I got errors, therefore, can anyone kindly share a patch to do this correctly.
Thanks in advance
On Wed, Jun 22, 2011 at 3:57 PM, Mohammed Shafi wrote:
> On Wed, Jun 22, 2011 at 6:12 PM, Fred Matthews wrote:
>>
>> Hi,
>>
>> I used that command to disable the third antenna, and applied it to both AP
>> and STA AR9380 NICs.
>> I then performed an IPerf test between both and then captured the statistics
>> from the sender, (below) .
>> You can see that in rc_stats (minstrel), the rate control actually
>> "attempts" sending on 3 stream MCSs (16-23) around 256 times each.
>
> just a guess. as we are changing the chain mask via debugfs and there
> may be a chance we may not have informed the minstrel rate control
> which is maintained in upper layer(mac80211) and it might be taking
> what we have configured the chain masks while we had initialized the
> device and i have very little idea about ministrel rate control
>
>>
>> Is there any way to prevent the RC from even attempting those rates, as if I
>> where to fully imitate an AR9280, it shouldnt attempt at those MCSs.
>
> may be we can try with ath9k rate control, and see what happens which
> is within the ath9k driver and affects xmit.c and it may have been
> informed of the chain mask change.
>
>>
>> Can Susinders comments also be detailed.
>>
>> Thanks in advance
>>
>> # cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan0/stations/00\MAC/
>>
>> AUTH
>> ASSOC
>> AUTHORIZED
>> WME
>> ht supported
>> cap: 0x11ce
>> HT20/HT40
>> SM Power Save disabled
>> RX HT40 SGI
>> TX STBC
>> RX STBC 1-stream
>> Max AMSDU length: 7935 bytes
>> DSSS/CCK HT40
>> ampdu factor/density: 3/6
>> MCS mask: ff ff ff 00 00 00 00 00 00 00
>> MCS tx params: 1
>> 792
>> 150 ffff ffff ffff ffff ffff 60 ffff ffff ffff ffff ffff ffff ffff ffff ffff
>> a40
>> -77
>> 0
>> type rate throughput ewma prob this prob this succ/attempt
>> success attempts
>> HT20/LGI MCS0 6.6 99.9 100.0 0( 0) 163
>> 230
>> HT20/LGI MCS1 13.1 100.0 100.0 0( 0) 75
>> 75
>> HT20/LGI MCS2 19.3 100.0 100.0 0( 0) 252
>> 252
>> HT20/LGI MCS3 25.4 100.0 100.0 0( 0) 75
>> 75
>> HT20/LGI MCS4 36.2 97.5 100.0 0( 0) 413
>> 474
>> HT20/LGI MCS5 0.0 0.0 0.0 0( 0) 0
>> 76
>> HT20/LGI MCS6 0.0 0.0 0.0 0( 0) 0
>> 80
>> HT20/LGI MCS7 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS8 13.1 100.0 100.0 0( 0) 75
>> 75
>> HT20/LGI MCS9 25.4 100.0 100.0 0( 0) 70
>> 70
>> HT20/LGI MCS10 34.2 92.2 100.0 0( 0) 79
>> 82
>> HT20/LGI MCS11 0.0 0.0 0.0 0( 0) 0
>> 76
>> HT20/LGI MCS12 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS13 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS14 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS15 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS16 0.0 0.0 0.0 0( 0) 0
>> 75
>> HT20/LGI MCS17 0.0 0.0 0.0 0( 0) 0
>> 68
>> HT20/LGI MCS18 0.0 0.0 0.0 0( 0) 0
>> 85
>> HT20/LGI MCS19 0.0 0.0 0.0 0( 0) 0
>> 257
>> HT20/LGI MCS20 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS21 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS22 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT20/LGI MCS23 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS0 13.6 100.0 100.0 0( 0) 75
>> 75
>> HT40/LGI MCS1 26.5 100.0 100.0 0( 0) 72
>> 72
>> HT40/LGI MCS2 38.3 100.0 100.0 0( 0) 73
>> 73
>> HT40/LGI MCS3 49.7 99.9 100.0 0( 0) 70
>> 73
>> HT40/LGI MCS4 0.0 0.0 0.0 0( 0) 10
>> 1220
>> HT40/LGI MCS5 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS6 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS7 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS8 26.2 98.9 100.0 0( 0) 73
>> 74
>> HT40/LGI MCS9 49.3 99.2 100.0 0( 0) 67
>> 69
>> HT40/LGI MCS10 20.5 28.9 0.0 0( 0) 14
>> 255
>> HT40/LGI MCS11 0.0 0.0 0.0 0( 0) 0
>> 257
>> HT40/LGI MCS12 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS13 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS14 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS15 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS16 0.0 0.0 0.0 0( 0) 0
>> 74
>> HT40/LGI MCS17 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS18 0.0 0.0 0.0 0( 0) 0
>> 255
>> HT40/LGI MCS19 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS20 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS21 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS22 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/LGI MCS23 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS0 15.1 100.0 100.0 0( 0) 70
>> 70
>> HT40/SGI MCS1 29.2 100.0 100.0 0( 0) 72
>> 72
>> HT40/SGI t MCS2 38.5 91.3 100.0 0( 0) 81
>> 83
>> HT40/SGI PMCS3 54.3 99.5 100.0 0( 0) 66536
>> 67803
>> HT40/SGI MCS4 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS5 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS6 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS7 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS8 29.2 100.0 100.0 0( 0) 67
>> 67
>> HT40/SGI T MCS9 54.6 99.9 100.0 0( 0) 310227
>> 312339
>> HT40/SGI MCS10 22.7 29.3 100.0 0( 0) 14
>> 46.8 Mbits/sec 255
>> HT40/SGI MCS11 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS12 0.0 0.0 0.0 0( 0) 0
>> 255
>> HT40/SGI MCS13 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS14 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS15 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS16 0.0 0.0 0.0 0( 0) 0
>> 68
>> HT40/SGI MCS17 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS18 0.0 0.0 0.0 0( 0) 0
>> 255
>> HT40/SGI MCS19 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS20 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS21 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS22 0.0 0.0 0.0 0( 0) 0
>> 256
>> HT40/SGI MCS23 0.0 0.0 0.0 0( 0) 0
>> 256
>>
>> Total packet count:: ideal 365056 lookaround 13702
>> Average A-MPDU length: 5.4
>>
>>> Date: Tue, 21 Jun 2011 14:25:36 +0530
>>> Subject: Re: [ath9k-devel] Disabling the third antenna for AR9380 in ath9k
>>> From: [email protected]
>>> To: [email protected]
>>> CC: [email protected]; [email protected];
>>> [email protected]; [email protected];
>>> [email protected]
>>>
>>> On Tue, Jun 21, 2011 at 2:07 AM, Fred Matthews
>>> wrote:
>>> > Hi all,
>>> > I am installing the AR9380 NIC on laptops, but some only have two UFL
>>> > connectors, and thus I was wondering if using only two of the UFL
>>> > antenna
>>> > ports will have any negative effect or difference than installing a 2x2
>>> > NIC
>>> > (AR9280 for example which has only 2 ports anyway). Please kindly
>>> > explain
>>> > with references if possible.
>>> > Also for example is there anyway to disable transmission on the third
>>> > UFL
>>> > port (antenna) from ath9k or otherwise.
>>> > Thank you all very much
>>>
>>> you can change the tx/rx chainmask for 3x3 AR9380 to disable
>>> transmission on the third antenna
>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > tx_chainmask
>>> cd /sys/kernel/debug/ieee80211/phy0/ath9k# echo 0x3 > rx_chainmask
>>>
>>> after this, ideally it should operate as 2x2 device as per Susinders
>>> comments. but if you got AR9280 please try to use that if 2 antenna is
>>> the constraint.
>>>
>>>
>>> > _______________________________________________
>>> > ath9k-devel mailing list
>>> > [email protected]
>>> > https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>>> >
>>> >
>>>
>>>
>>>
>>> --