Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 May 2011 14:43:27 +0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@freebsd.org
Subject:   [net80211] patch: properly handle sequence checking for HT non-aggregation; refactor out shared code
Message-ID:  <BANLkTimseMFe-=y-1rkK%2BhaAxskV6usSfg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--bcaec5489e4342a47904a24557cf
Content-Type: text/plain; charset=ISO-8859-1

Hi,

The attached patch does two things:

Firstly, it abstracts out the sequence number checks in
{sta,hostap,mesh,adhoc,wds} into a new function,
ieee80211_check_rxseq(). A lot of the input path code is shared; I'm
not going to try and refactor all of it.

Secondly, it attempts to do the HT mode checking correctly. The
existing code assumes HT == AMPDU, so don't worry about re-ordering.
Instead, my replacement code checks whether QOS/WME is enabled and if
so, checks whether AMPDU-RX is running. If it is, it ignores the
sequence number check. If it isn't running AMPDU-RX, it enforces the
same sequence number check for non-HT modes.

This gets rid of the duplicate packet issues I've seen when doing 11n
(non AMPDU-RX)  but it doesn't fix the out of order TCP packet
behaviour plaguing performance.


Adrian

--bcaec5489e4342a47904a24557cf
Content-Type: application/octet-stream; name="net80211-rxseq-ht.diff"
Content-Disposition: attachment; filename="net80211-rxseq-ht.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gn71g7qe0

SW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfc3RhLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25l
dDgwMjExL2llZWU4MDIxMV9zdGEuYwkocmV2aXNpb24gMjIwOTExKQorKysgc3lzL25ldDgwMjEx
L2llZWU4MDIxMV9zdGEuYwkod29ya2luZyBjb3B5KQpAQCAtNTEyLDcgKzUxMiw2IEBACiBzdGF0
aWMgaW50CiBzdGFfaW5wdXQoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwgc3RydWN0IG1idWYg
Km0sIGludCByc3NpLCBpbnQgbmYpCiB7Ci0jZGVmaW5lCVNFUV9MRVEoYSxiKQkoKGludCkoKGEp
LShiKSkgPD0gMCkKICNkZWZpbmUJSEFTX1NFUSh0eXBlKQkoKHR5cGUgJiAweDQpID09IDApCiAJ
c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gbmktPm5pX3ZhcDsKIAlzdHJ1Y3QgaWVlZTgwMjEx
Y29tICppYyA9IG5pLT5uaV9pYzsKQEAgLTU5MSw5ICs1OTAsNyBAQAogCQkJICAgIFRJRF9UT19X
TUVfQUModGlkKSA+PSBXTUVfQUNfVkkpCiAJCQkJaWMtPmljX3dtZS53bWVfaGlwcmlfdHJhZmZp
YysrOwogCQkJcnhzZXEgPSBsZTE2dG9oKCoodWludDE2X3QgKil3aC0+aV9zZXEpOwotCQkJaWYg
KChuaS0+bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9IVCkgPT0gMCAmJgotCQkJICAgICh3aC0+
aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFfUkVUUlkpICYmCi0JCQkgICAgU0VRX0xFUShyeHNlcSwg
bmktPm5pX3J4c2Vxc1t0aWRdKSkgeworCQkJaWYgKCEgaWVlZTgwMjExX2NoZWNrX3J4c2VxKG5p
LCB3aCkpIHsKIAkJCQkvKiBkdXBsaWNhdGUsIGRpc2NhcmQgKi8KIAkJCQlJRUVFODAyMTFfRElT
Q0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0lOUFVULAogCQkJCSAgICBic3NpZCwgImR1cGxp
Y2F0ZSIsCkBAIC05MTAsNyArOTA3LDYgQEAKIAkJbV9mcmVlbShtKTsKIAl9CiAJcmV0dXJuIHR5
cGU7Ci0jdW5kZWYgU0VRX0xFUQogfQogCiBzdGF0aWMgdm9pZApJbmRleDogc3lzL25ldDgwMjEx
L2llZWU4MDIxMV93ZHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3dk
cy5jCShyZXZpc2lvbiAyMjA5MTEpCisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3dkcy5jCSh3
b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2LDYgQEAKIHN0YXRpYyBpbnQKIHdkc19pbnB1dChz
dHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IHJzc2ksIGludCBu
ZikKIHsKLSNkZWZpbmUJU0VRX0xFUShhLGIpCSgoaW50KSgoYSktKGIpKSA8PSAwKQogI2RlZmlu
ZQlIQVNfU0VRKHR5cGUpCSgodHlwZSAmIDB4NCkgPT0gMCkKIAlzdHJ1Y3QgaWVlZTgwMjExdmFw
ICp2YXAgPSBuaS0+bmlfdmFwOwogCXN0cnVjdCBpZWVlODAyMTFjb20gKmljID0gbmktPm5pX2lj
OwpAQCAtNDk1LDkgKzQ5NCw3IEBACiAJCSAgICBUSURfVE9fV01FX0FDKHRpZCkgPj0gV01FX0FD
X1ZJKQogCQkJaWMtPmljX3dtZS53bWVfaGlwcmlfdHJhZmZpYysrOwogCQlyeHNlcSA9IGxlMTZ0
b2goKih1aW50MTZfdCAqKXdoLT5pX3NlcSk7Ci0JCWlmICgobmktPm5pX2ZsYWdzICYgSUVFRTgw
MjExX05PREVfSFQpID09IDAgJiYKLQkJICAgICh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFf
UkVUUlkpICYmCi0JCSAgICBTRVFfTEVRKHJ4c2VxLCBuaS0+bmlfcnhzZXFzW3RpZF0pKSB7CisJ
CWlmICghIGllZWU4MDIxMV9jaGVja19yeHNlcShuaSwgd2gpKSB7CiAJCQkvKiBkdXBsaWNhdGUs
IGRpc2NhcmQgKi8KIAkJCUlFRUU4MDIxMV9ESVNDQVJEX01BQyh2YXAsIElFRUU4MDIxMV9NU0df
SU5QVVQsCiAJCQkgICAgd2gtPmlfYWRkcjEsICJkdXBsaWNhdGUiLApAQCAtNzQxLDcgKzczOCw2
IEBACiAJCW1fZnJlZW0obSk7CiAJfQogCXJldHVybiB0eXBlOwotI3VuZGVmIFNFUV9MRVEKIH0K
IAogc3RhdGljIHZvaWQKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaG9zdGFwLmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9ob3N0YXAuYwkocmV2aXNpb24gMjIw
OTExKQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9ob3N0YXAuYwkod29ya2luZyBjb3B5KQpA
QCAtNDcyLDcgKzQ3Miw2IEBACiBzdGF0aWMgaW50CiBob3N0YXBfaW5wdXQoc3RydWN0IGllZWU4
MDIxMV9ub2RlICpuaSwgc3RydWN0IG1idWYgKm0sIGludCByc3NpLCBpbnQgbmYpCiB7Ci0jZGVm
aW5lCVNFUV9MRVEoYSxiKQkoKGludCkoKGEpLShiKSkgPD0gMCkKICNkZWZpbmUJSEFTX1NFUSh0
eXBlKQkoKHR5cGUgJiAweDQpID09IDApCiAJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gbmkt
Pm5pX3ZhcDsKIAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IG5pLT5uaV9pYzsKQEAgLTU3Miw5
ICs1NzEsNyBAQAogCQkJICAgIFRJRF9UT19XTUVfQUModGlkKSA+PSBXTUVfQUNfVkkpCiAJCQkJ
aWMtPmljX3dtZS53bWVfaGlwcmlfdHJhZmZpYysrOwogCQkJcnhzZXEgPSBsZTE2dG9oKCoodWlu
dDE2X3QgKil3aC0+aV9zZXEpOwotCQkJaWYgKChuaS0+bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9E
RV9IVCkgPT0gMCAmJgotCQkJICAgICh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFfUkVUUlkp
ICYmCi0JCQkgICAgU0VRX0xFUShyeHNlcSwgbmktPm5pX3J4c2Vxc1t0aWRdKSkgeworCQkJaWYg
KCEgaWVlZTgwMjExX2NoZWNrX3J4c2VxKG5pLCB3aCkpIHsKIAkJCQkvKiBkdXBsaWNhdGUsIGRp
c2NhcmQgKi8KIAkJCQlJRUVFODAyMTFfRElTQ0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0lO
UFVULAogCQkJCSAgICBic3NpZCwgImR1cGxpY2F0ZSIsCkBAIC05MTQsNyArOTExLDYgQEAKIAkJ
bV9mcmVlbShtKTsKIAl9CiAJcmV0dXJuIHR5cGU7Ci0jdW5kZWYgU0VRX0xFUQogfQogCiBzdGF0
aWMgdm9pZApJbmRleDogc3lzL25ldDgwMjExL2llZWU4MDIxMV9tZXNoLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9tZXNoLmMJKHJldmlzaW9uIDIyMDkxMSkKKysrIHN5
cy9uZXQ4MDIxMS9pZWVlODAyMTFfbWVzaC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQwLDcgKzEw
NDAsNiBAQAogc3RhdGljIGludAogbWVzaF9pbnB1dChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5p
LCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IHJzc2ksIGludCBuZikKIHsKLSNkZWZpbmUJU0VRX0xFUShh
LGIpCSgoaW50KSgoYSktKGIpKSA8PSAwKQogI2RlZmluZQlIQVNfU0VRKHR5cGUpCSgodHlwZSAm
IDB4NCkgPT0gMCkKIAlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAgPSBuaS0+bmlfdmFwOwogCXN0
cnVjdCBpZWVlODAyMTFjb20gKmljID0gbmktPm5pX2ljOwpAQCAtMTA5NCw5ICsxMDkzLDcgQEAK
IAkJCSAgICBUSURfVE9fV01FX0FDKHRpZCkgPj0gV01FX0FDX1ZJKQogCQkJCWljLT5pY193bWUu
d21lX2hpcHJpX3RyYWZmaWMrKzsKIAkJCXJ4c2VxID0gbGUxNnRvaCgqKHVpbnQxNl90ICopd2gt
Pmlfc2VxKTsKLQkJCWlmICgobmktPm5pX2ZsYWdzICYgSUVFRTgwMjExX05PREVfSFQpID09IDAg
JiYKLQkJCSAgICAod2gtPmlfZmNbMV0gJiBJRUVFODAyMTFfRkMxX1JFVFJZKSAmJgotCQkJICAg
IFNFUV9MRVEocnhzZXEsIG5pLT5uaV9yeHNlcXNbdGlkXSkpIHsKKwkJCWlmICghIGllZWU4MDIx
MV9jaGVja19yeHNlcShuaSwgd2gpKSB7CiAJCQkJLyogZHVwbGljYXRlLCBkaXNjYXJkICovCiAJ
CQkJSUVFRTgwMjExX0RJU0NBUkRfTUFDKHZhcCwgSUVFRTgwMjExX01TR19JTlBVVCwKIAkJCQkg
ICAgd2gtPmlfYWRkcjEsICJkdXBsaWNhdGUiLApJbmRleDogc3lzL25ldDgwMjExL2llZWU4MDIx
MV9pbnB1dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW5wdXQuYwko
cmV2aXNpb24gMjIwOTExKQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9pbnB1dC5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NjAsNiArNzYwLDU3IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBD
aGVjayB0aGUgY3VycmVudCBmcmFtZSBzZXF1ZW5jZSBudW1iZXIgYWdhaW5zdCB0aGUgY3VycmVu
dCBUSUQKKyAqIHN0YXRlIGFuZCByZXR1cm4gd2hldGhlciBpdCdzIGluIHNlcXVlbmNlIG9yIHNo
b3VsZCBiZSBkcm9wcGVkLgorICovCitpbnQKK2llZWU4MDIxMV9jaGVja19yeHNlcShzdHJ1Y3Qg
aWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3QgaWVlZTgwMjExX2ZyYW1lICp3aCkKK3sKKyNkZWZp
bmUJU0VRX0xFUShhLGIpCSgoaW50KSgoYSktKGIpKSA8PSAwKQorI2RlZmluZQlIQVNfU0VRKHR5
cGUpCSgodHlwZSAmIDB4NCkgPT0gMCkKKwl1aW50MTZfdCByeHNlcTsKKwl1aW50OF90IHR5cGU7
CisJdWludDhfdCB0aWQ7CisJc3RydWN0IGllZWU4MDIxMV9yeF9hbXBkdSAqcmFwOworCisJcnhz
ZXEgPSBsZTE2dG9oKCoodWludDE2X3QgKil3aC0+aV9zZXEpOworCXR5cGUgPSB3aC0+aV9mY1sw
XSAmIElFRUU4MDIxMV9GQzBfVFlQRV9NQVNLOworCisJLyogVHlwZXMgd2l0aCBubyBzZXF1ZW5j
ZSBudW1iZXIgYXJlIGFsd2F5cyB0cmVhdGVkIHZhbGlkICovCisJaWYgKCEgSEFTX1NFUSh0eXBl
KSkKKwkJcmV0dXJuIDE7CisKKwl0aWQgPSBpZWVlODAyMTFfZ2V0dGlkKHdoKTsKKworCS8qCisJ
ICogT25seSBkbyB0aGUgSFQgQU1QRFUgY2hlY2sgZm9yIFdNRSBzdGF0aW9uczsgbm9uLVdNRSBI
VCBzdGF0aW9ucworCSAqIHNob3VsZG4ndCBleGlzdCBvdXRzaWRlIG9mIGRlYnVnZ2luZy4gV2Ug
c2hvdWxkIGF0IGxlYXN0CisJICogaGFuZGxlIHRoYXQuCisJICovCisJaWYgKHRpZCA8IFdNRV9O
VU1fVElEKSB7CisJCXJhcCA9ICZuaS0+bmlfcnhfYW1wZHVbdGlkXTsKKwkJLyogSFQgbm9kZXMg
Y3VycmVudGx5IGRvaW5nIFJYIEFNUERVIGFyZSBhbHdheXMgdmFsaWQgKi8KKwkJaWYgKChuaS0+
bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9IVCkgJiYKKwkJICAgIChyYXAtPnJ4YV9mbGFncyAm
IElFRUU4MDIxMV9BR0dSX1JVTk5JTkcpKQorCQkJcmV0dXJuIDE7CisJfQorCisJLyoJCisJICog
T3RoZXJ3aXNlLCByZXRyaWVzIGZvciBwYWNrZXRzIGJlbG93IG9yIGVxdWFsIHRvIHRoZSBsYXN0
CisJICogc2VlbiBzZXF1ZW5jZSBudW1iZXIgc2hvdWxkIGJlIGRyb3BwZWQuCisJICoKKwkgKiBY
WFggVGhpcyBzaG91bGQgYmUgcmV2aXNpdGVkIHRvIHRydWVseSBpZGVudGlmeS9sb2cgdmVyeQor
CSAqIFhYWCBvdXQgb2Ygb3JkZXIgcGFja2V0cyAoZHVlIHRvIHZlbmRvciBidWdzKSwgcmF0aGVy
IHRoYW4KKwkgKiBYWFggc2ltcGx5IHJldHJhbnNtaXRzLgorCSAqLworCWlmICgod2gtPmlfZmNb
MV0gJiBJRUVFODAyMTFfRkMxX1JFVFJZKSAmJgorCSAgICBTRVFfTEVRKHJ4c2VxLCBuaS0+bmlf
cnhzZXFzW3RpZF0pKQorCQlyZXR1cm4gMDsKKworCXJldHVybiAxOworfQorCiAjaWZkZWYgSUVF
RTgwMjExX0RFQlVHCiAvKgogICogRGVidWdnaW5nIHN1cHBvcnQuCkluZGV4OiBzeXMvbmV0ODAy
MTEvaWVlZTgwMjExX2lucHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIx
MV9pbnB1dC5oCShyZXZpc2lvbiAyMjA5MTEpCisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX2lu
cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw0ICsxNTcsNiBAQAogaW50CWllZWU4MDIxMV9w
YXJzZV9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9ub2RlICosIHN0cnVjdCBtYnVmICosCiAJCXN0
cnVjdCBpZWVlODAyMTFfc2NhbnBhcmFtcyAqKTsKIGludAlpZWVlODAyMTFfcGFyc2VfYWN0aW9u
KHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKK2ludAlpZWVlODAyMTFf
Y2hlY2tfcnhzZXEoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKKwkJc3RydWN0IGllZWU4MDIx
MV9mcmFtZSAqd2gpOwogI2VuZGlmIC8qIF9ORVQ4MDIxMV9JRUVFODAyMTFfSU5QVVRfSF8gKi8K
SW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfYWRob2MuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
bmV0ODAyMTEvaWVlZTgwMjExX2FkaG9jLmMJKHJldmlzaW9uIDIyMDkxMSkKKysrIHN5cy9uZXQ4
MDIxMS9pZWVlODAyMTFfYWRob2MuYwkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw2IEBA
CiBzdGF0aWMgaW50CiBhZGhvY19pbnB1dChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IHJzc2ksIGludCBuZikKIHsKLSNkZWZpbmUJU0VRX0xFUShhLGIpCSgo
aW50KSgoYSktKGIpKSA8PSAwKQogI2RlZmluZQlIQVNfU0VRKHR5cGUpCSgodHlwZSAmIDB4NCkg
PT0gMCkKIAlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAgPSBuaS0+bmlfdmFwOwogCXN0cnVjdCBp
ZWVlODAyMTFjb20gKmljID0gbmktPm5pX2ljOwpAQCAtNDEyLDkgKzQxMSw3IEBACiAJCQkgICAg
VElEX1RPX1dNRV9BQyh0aWQpID49IFdNRV9BQ19WSSkKIAkJCQlpYy0+aWNfd21lLndtZV9oaXBy
aV90cmFmZmljKys7CiAJCQlyeHNlcSA9IGxlMTZ0b2goKih1aW50MTZfdCAqKXdoLT5pX3NlcSk7
Ci0JCQlpZiAoKG5pLT5uaV9mbGFncyAmIElFRUU4MDIxMV9OT0RFX0hUKSA9PSAwICYmCi0JCQkg
ICAgKHdoLT5pX2ZjWzFdICYgSUVFRTgwMjExX0ZDMV9SRVRSWSkgJiYKLQkJCSAgICBTRVFfTEVR
KHJ4c2VxLCBuaS0+bmlfcnhzZXFzW3RpZF0pKSB7CisJCQlpZiAoISBpZWVlODAyMTFfY2hlY2tf
cnhzZXEobmksIHdoKSkgewogCQkJCS8qIGR1cGxpY2F0ZSwgZGlzY2FyZCAqLwogCQkJCUlFRUU4
MDIxMV9ESVNDQVJEX01BQyh2YXAsIElFRUU4MDIxMV9NU0dfSU5QVVQsCiAJCQkJICAgIGJzc2lk
LCAiZHVwbGljYXRlIiwKQEAgLTY2MCw3ICs2NTcsNiBAQAogCQltX2ZyZWVtKG0pOwogCX0KIAly
ZXR1cm4gdHlwZTsKLSN1bmRlZiBTRVFfTEVRCiB9CiAKIHN0YXRpYyBpbnQK
--bcaec5489e4342a47904a24557cf--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTimseMFe-=y-1rkK%2BhaAxskV6usSfg>