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>