Date: Tue, 14 Feb 2012 23:14:57 +0100 From: Monthadar Al Jaberi <monthadar@gmail.com> To: freebsd-wireless@freebsd.org Cc: Rui Paulo <rpaulo@freebsd.org>, Bernhard Schmidt <bschmidt@freebsd.org> Subject: Fragment and 11s inconsistency Message-ID: <CA%2BsBSoJGzabfyt8EXoT-g=GTJD0upX5jbRqfLWKQKzXu2FivaA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--20cf3011da15e12aee04b8f3ec09 Content-Type: text/plain; charset=ISO-8859-1 Hi, I cant verify this yet, but isn't there something wrong in current FreeBSD? lets say an 11s data frame need to be fragmented in ieee80211_encap: if (addqos) hdrsize = sizeof(struct ieee80211_qosframe); else hdrsize = sizeof(struct ieee80211_frame); ... if (vap->iv_opmode == IEEE80211_M_MBSS) { ... if (!IEEE80211_IS_MULTICAST(eh.ether_dhost)) hdrsize += IEEE80211_ADDR_LEN; /* unicast are 4-addr */ meshhdrsize = sizeof(struct ieee80211_meshcntl); } ... if (__predict_true((m->m_flags & M_FF) == 0)) { /* * Normal frame. */ m = ieee80211_mbuf_adjust(vap, hdrspace + meshhdrsize, key, m); } M_PREPEND(m, hdrspace + meshhdrsize, M_DONTWAIT); if (txfrag && !ieee80211_fragment(vap, m, hdrsize, key != NULL ? key->wk_cipher->ic_header : 0, vap->iv_fragthreshold)) goto bad; This means we send meshcontrol only in first segment, because we never add meshhdrsize to hdrsize... but in mesh_input switch (type) { case IEEE80211_FC0_TYPE_DATA: ... meshdrlen = sizeof(struct ieee80211_meshcntl) + (mc->mc_flags & 3) * IEEE80211_ADDR_LEN; hdrspace += meshdrlen; ... /* * Potentially forward packet. See table s36 (p140) * for the rules. XXX tap fwd'd packets not for us? */ if (dir == IEEE80211_FC1_DIR_FROMDS || !mesh_isucastforme(vap, wh, mc)) { mesh_forward(vap, m, mc); ... if (!IEEE80211_IS_MULTICAST(wh->i_addr1)) { m = ieee80211_defrag(ni, m, hdrspace); if (m == NULL) { This seems wrong to me, how can we potentially forward before defragin the frame? this will fail cause sub-frag have no mesh control as code shows above. shouldnt the defrag code be moved above? I am attaching a patch that both moves the defrag, validates that mesh control is present and makes 11s data frames QoS and set Mesh control bit present to 1 as the amendment specifies. br, -- Monthadar Al Jaberi --20cf3011da15e12aee04b8f3ec09 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Make-mesh-data-frames-to-be-quality-of-service-QoS.patch" Content-Disposition: attachment; filename="0001-Make-mesh-data-frames-to-be-quality-of-service-QoS.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gynhniow0 RnJvbSA4MmFhNTg2OWNlMTQwNTg4Mjc0YzgwMjFhNWQ0MDQyMDI1ZDFmMWFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNb250aGFkYXIgQWwgSmFiZXJpIDxtb250aGFkYXJAZ21haWwu Y29tPgpEYXRlOiBUdWUsIDE0IEZlYiAyMDEyIDE2OjQ3OjQzICswMTAwClN1YmplY3Q6IFtQQVRD SF0gTWFrZSBtZXNoIGRhdGEgZnJhbWVzIHRvIGJlIHF1YWxpdHkgb2Ygc2VydmljZSAoUW9TKS4K CiogSW50cm9kdWNlIG5ldyBmbGFnIGZvciBRb1MgY29udHJvbCBmaWVsZDsKKiBDaGFuZ2UgaW4g bWVzaF9pbnB1dCB0byB2YWxpZGF0ZSB0aGF0IFFvUyBpcyBzZXQgYW5kIE1lc2ggQ29udHJvbCBm aWVsZAppcyBwcmVzZW50LCBhbHNvIGJvdGggYnl0ZXMgb2YgdGhlIFFvUyBhcmUgcmVhZDsKKiBN b3ZlZCBkZWZyYWdtZW50YXRpb24gaW4gbWVzaF9pbnB1dCBiZWZvcmUgd2UgdHJ5IHRvIGZvcndh cmQgcGFja2V0IGFzCmluZmVycmVkIGZyb20gYW1lbmRtZW50IHNwZWMsIGJlY2F1c2UgTWVzaCBD b250cm9sIGZpZWxkIG9ubHkgcHJlc2VudCBpbiBmaXJzdApmcmFnbWVudDsKKiBDaGFuZ2VkIGlu IGllZWU4MDIxMV9lbmNhcCB0byBzZXQgUW9TIHN1YnR5cGUgYW5kIE1lc2ggQ29udHJvbCBmaWVs ZCBwcmVzZW50OwotLS0KIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTEuaCAgICAgICAgfCAgICA3ICsr Kwogc3lzL25ldDgwMjExL2llZWU4MDIxMV9tZXNoLmMgICB8ICAgODMgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX291dHB1dC5j IHwgICAxMyArKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgMjggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2llZWU4MDIxMS5oIGIvc3lzL25l dDgwMjExL2llZWU4MDIxMS5oCmluZGV4IDAyOGFmZWMuLjI5YmZhM2MgMTAwNjQ0Ci0tLSBhL3N5 cy9uZXQ4MDIxMS9pZWVlODAyMTEuaAorKysgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExLmgKQEAg LTE5OSw2ICsxOTksMTMgQEAgc3RydWN0IGllZWU4MDIxMV9xb3NmcmFtZV9hZGRyNCB7CiAjZGVm aW5lCUlFRUU4MDIxMV9RT1NfRU9TUAkJCTB4MTAJLyogRW5kT2ZTZXJ2aWNlIFBlcmlvZCovCiAj ZGVmaW5lCUlFRUU4MDIxMV9RT1NfRU9TUF9TCQkJNAogI2RlZmluZQlJRUVFODAyMTFfUU9TX1RJ RAkJCTB4MGYKKy8qIHFvc1sxXSBieXRlIHVzZWQgZm9yIGFsbCBmcmFtZXMgc2VudCBieSBtZXNo IFNUQXMgaW4gYSBtZXNoIEJTUyAqLworI2RlZmluZSBJRUVFODAyMTFfUU9TX01DCQkJMHgxMAkv KiBNZXNoIGNvbnRyb2wgKi8KKy8qIE1lc2ggcG93ZXIgc2F2ZSBsZXZlbCovCisjZGVmaW5lIElF RUU4MDIxMV9RT1NfTUVTSF9QU0wJCQkweDIwCisvKiBNZXNoIFJlY2VpdmVyIFNlcnZpY2UgUGVy aW9kIEluaXRpYXRlZCAqLworI2RlZmluZSBJRUVFODAyMTFfUU9TX1JTUEkJCQkweDQwCisvKiBi aXRzIDExIHRvIDE1IHJlc2VydmVkICovCiAKIC8qIGRvZXMgZnJhbWUgaGF2ZSBRb1Mgc2VxdWVu Y2UgY29udHJvbCBkYXRhICovCiAjZGVmaW5lCUlFRUU4MDIxMV9RT1NfSEFTX1NFUSh3aCkgXApk aWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9tZXNoLmMgYi9zeXMvbmV0ODAyMTEv aWVlZTgwMjExX21lc2guYwppbmRleCBiOTJmNjk1Li5hMjAzNjA0IDEwMDY0NAotLS0gYS9zeXMv bmV0ODAyMTEvaWVlZTgwMjExX21lc2guYworKysgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21l c2guYwpAQCAtMTA0Nyw5ICsxMDQ3LDkgQEAgbWVzaF9pbnB1dChzdHJ1Y3QgaWVlZTgwMjExX25v ZGUgKm5pLCBzdHJ1Y3QgbWJ1ZiAqbSwgaW50IHJzc2ksIGludCBuZikKIAlzdHJ1Y3QgaWVlZTgw MjExX2ZyYW1lICp3aDsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21lc2hjbnRsICptYzsKIAlp bnQgaGRyc3BhY2UsIG1lc2hkcmxlbiwgbmVlZF90YXA7Ci0JdWludDhfdCBkaXIsIHR5cGUsIHN1 YnR5cGUsIHFvczsKKwl1aW50OF90IGRpciwgdHlwZSwgc3VidHlwZTsKIAl1aW50MzJfdCBzZXE7 Ci0JdWludDhfdCAqYWRkcjsKKwl1aW50OF90ICphZGRyLCBxb3NbMl07CiAJaWVlZTgwMjExX3Nl cSByeHNlcTsKIAogCUtBU1NFUlQobmkgIT0gTlVMTCwgKCJudWxsIG5vZGUiKSk7CkBAIC0xMTQ2 LDggKzExNDYsNjIgQEAgbWVzaF9pbnB1dChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1 Y3QgbWJ1ZiAqbSwgaW50IHJzc2ksIGludCBuZikKIAkJCXZhcC0+aXZfc3RhdHMuaXNfcnhfd3Jv bmdkaXIrKzsKIAkJCWdvdG8gZXJyOwogCQl9Ci0JCS8qIHB1bGwgdXAgZW5vdWdoIHRvIGdldCB0 byB0aGUgbWVzaCBjb250cm9sICovCisKKwkJLyogQWxsIE1lc2ggZGF0YSBmcmFtZXMgYXJlIFFv UyBzdWJ0eXBlICovCisJCWlmICghSEFTX1NFUSh0eXBlKSkgeworCQkJSUVFRTgwMjExX0RJU0NB UkQodmFwLCBJRUVFODAyMTFfTVNHX0lOUFVULAorCQkJICAgIHdoLCAiZGF0YSIsICJpbmNvcnJl Y3Qgc3VidHlwZSAweCV4Iiwgc3VidHlwZSk7CisJCQl2YXAtPml2X3N0YXRzLmlzX3J4X2JhZHN1 YnR5cGUrKzsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJLyoKKwkJICogTmV4dCB1cCwgYW55IGZy YWdtZW50YXRpb24uCisJCSAqIFhYWDogd2UgZGVmcmFnIGJlZm9yZSB3ZSBldmVuIHRyeSB0byBm b3J3YXJkLAorCQkgKiBNZXNoIENvbnRyb2wgZmllbGQgaXMgbm90IHByZXNlbnQgaW4gc3ViLXNl cXVlbnQKKwkJICogZnJhZ21lbnRlZCBmcmFtZXMuIFRoaXMgaXMgaW4gY29uc3RyYXN0IHRvIERy YWYgNC4wLgorCQkgKi8KIAkJaGRyc3BhY2UgPSBpZWVlODAyMTFfaGRyc3BhY2UoaWMsIHdoKTsK KwkJaWYgKCFJRUVFODAyMTFfSVNfTVVMVElDQVNUKHdoLT5pX2FkZHIxKSkgeworCQkJbSA9IGll ZWU4MDIxMV9kZWZyYWcobmksIG0sIGhkcnNwYWNlKTsKKwkJCWlmIChtID09IE5VTEwpIHsKKwkJ CQkvKiBGcmFnbWVudCBkcm9wcGVkIG9yIGZyYW1lIG5vdCBjb21wbGV0ZSB5ZXQgKi8KKwkJCQln b3RvIG91dDsKKwkJCX0KKwkJfQorCQl3aCA9IG10b2QobSwgc3RydWN0IGllZWU4MDIxMV9mcmFt ZSAqKTsgLyogTkI6IGFmdGVyIGRlZnJhZyAqLworCisJCS8qCisJCSAqIE5vdyB3ZSBoYXZlIGEg Y29tcGxldGUgTWVzaCBEYXRhIGZyYW1lLgorCQkgKi8KKworCQkvKgorCQkgKiBPbmx5IGdyb3Vw IGFkZHJlc3NlZCBNZXNoIGRhdGEgZnJhbWVzIGFyZSAzIGFkZHJlc3MKKwkJICogcW9zIGZyYW1l cyBhbW9uZyB0aGUgZGlmZmVyZW50IE1lc2ggRGF0YSBmcmFtZXMgYXMKKwkJICogc3BlY2lmaWVk IGluIGFtZW5kbWVudC4KKwkJICovCisJCSoodWludDE2X3QgKilxb3MgPSAqKHVpbnQxNl90ICop CisJCSAgICAoKChJRUVFODAyMTFfSVNfTVVMVElDQVNUKHdoLT5pX2FkZHIxKSAmJgorCQkgICAg ZGlyID09IElFRUU4MDIxMV9GQzFfRElSX0ZST01EUykpID8KKwkJICAgICgoc3RydWN0IGllZWU4 MDIxMV9xb3NmcmFtZSAqKXdoKS0+aV9xb3MgOgorCQkgICAgKChzdHJ1Y3QgaWVlZTgwMjExX3Fv c2ZyYW1lX2FkZHI0ICopd2gpLT5pX3Fvcyk7CisKKwkJLyoKKwkJICogTkI6IFRoZSBtZXNoIFNU QSBzZXRzIHRoZSBNZXNoIENvbnRyb2wgUHJlc2VudAorCQkgKiBzdWJmaWVsZCB0byAxIGluIHRo ZSBNZXNoIERhdGEgZnJhbWUgY29udGFpbmluZworCQkgKiBhbiB1bmZyYWdtZW50ZWQgTVNEVSwg YW4gQS1NU0RVLCBvciB0aGUgZmlyc3QKKwkJICogZnJhZ21lbnQgb2YgYW4gTVNEVS4KKwkJICog QWZ0ZXIgZGVmcmFnIGl0IHNob3VsZCBhbHdheXMgYmUgcHJlc2VudC4KKwkJICovCisJCWlmICgh KHFvc1sxXSAmIElFRUU4MDIxMV9RT1NfTUMpKSB7CisJCQlJRUVFODAyMTFfRElTQ0FSRF9NQUMo dmFwLCBJRUVFODAyMTFfTVNHX01FU0gsCisJCQkgICAgbmktPm5pX21hY2FkZHIsIE5VTEwsCisJ CQkgICAgIiVzIiwgIk1lc2ggY29udHJvbCBmaWVsZCBub3QgcHJlc2VudCIpOworCQkJdmFwLT5p dl9zdGF0cy5pc19yeF9lbGVtX21pc3NpbmcrKzsgLyogWFhYOiBraW5kYSAqLworCQkJZ290byBl cnI7CisJCX0KKworCQkvKiBwdWxsIHVwIGVub3VnaCB0byBnZXQgdG8gdGhlIG1lc2ggY29udHJv bCAqLwogCQlpZiAobS0+bV9sZW4gPCBoZHJzcGFjZSArIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjEx X21lc2hjbnRsKSAmJgogCQkgICAgKG0gPSBtX3B1bGx1cChtLCBoZHJzcGFjZSArCiAJCSAgICAg ICAgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfbWVzaGNudGwpKSkgPT0gTlVMTCkgewpAQCAtMTE5 NSwyNyArMTI0OSw2IEBAIG1lc2hfaW5wdXQoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwgc3Ry dWN0IG1idWYgKm0sIGludCByc3NpLCBpbnQgbmYpCiAJCQkvKiBOQjogZmFsbCB0aHJ1IHRvIGRl bGl2ZXIgbWNhc3QgZnJhbWVzIGxvY2FsbHkgKi8KIAkJfQogCi0JCS8qCi0JCSAqIFNhdmUgUW9T IGJpdHMgZm9yIHVzZSBiZWxvdy0tYmVmb3JlIHdlIHN0cmlwIHRoZSBoZWFkZXIuCi0JCSAqLwot CQlpZiAoc3VidHlwZSA9PSBJRUVFODAyMTFfRkMwX1NVQlRZUEVfUU9TKSB7Ci0JCQlxb3MgPSAo ZGlyID09IElFRUU4MDIxMV9GQzFfRElSX0RTVE9EUykgPwotCQkJICAgICgoc3RydWN0IGllZWU4 MDIxMV9xb3NmcmFtZV9hZGRyNCAqKXdoKS0+aV9xb3NbMF0gOgotCQkJICAgICgoc3RydWN0IGll ZWU4MDIxMV9xb3NmcmFtZSAqKXdoKS0+aV9xb3NbMF07Ci0JCX0gZWxzZQotCQkJcW9zID0gMDsK LQkJLyoKLQkJICogTmV4dCB1cCwgYW55IGZyYWdtZW50YXRpb24uCi0JCSAqLwotCQlpZiAoIUlF RUU4MDIxMV9JU19NVUxUSUNBU1Qod2gtPmlfYWRkcjEpKSB7Ci0JCQltID0gaWVlZTgwMjExX2Rl ZnJhZyhuaSwgbSwgaGRyc3BhY2UpOwotCQkJaWYgKG0gPT0gTlVMTCkgewotCQkJCS8qIEZyYWdt ZW50IGRyb3BwZWQgb3IgZnJhbWUgbm90IGNvbXBsZXRlIHlldCAqLwotCQkJCWdvdG8gb3V0Owot CQkJfQotCQl9Ci0JCXdoID0gTlVMTDsJCS8qIG5vIGxvbmdlciB2YWxpZCwgY2F0Y2ggYW55IHVz ZXMgKi8KLQogCQlpZiAoaWVlZTgwMjExX3JhZGlvdGFwX2FjdGl2ZV92YXAodmFwKSkKIAkJCWll ZWU4MDIxMV9yYWRpb3RhcF9yeCh2YXAsIG0pOwogCQluZWVkX3RhcCA9IDA7CkBAIC0xMjM2LDcg KzEyNjksNyBAQCBtZXNoX2lucHV0KHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksIHN0cnVjdCBt YnVmICptLCBpbnQgcnNzaSwgaW50IG5mKQogCQkJSUVFRTgwMjExX05PREVfU1RBVChuaSwgcnhf ZGVjYXApOwogCQkJZ290byBlcnI7CiAJCX0KLQkJaWYgKHFvcyAmIElFRUU4MDIxMV9RT1NfQU1T RFUpIHsKKwkJaWYgKHFvc1swXSAmIElFRUU4MDIxMV9RT1NfQU1TRFUpIHsKIAkJCW0gPSBpZWVl ODAyMTFfZGVjYXBfYW1zZHUobmksIG0pOwogCQkJaWYgKG0gPT0gTlVMTCkKIAkJCQlyZXR1cm4g SUVFRTgwMjExX0ZDMF9UWVBFX0RBVEE7CmRpZmYgLS1naXQgYS9zeXMvbmV0ODAyMTEvaWVlZTgw MjExX291dHB1dC5jIGIvc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRwdXQuYwppbmRleCBmNjE3 N2Q5Li44YjJiNTAxIDEwMDY0NAotLS0gYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX291dHB1dC5j CisrKyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfb3V0cHV0LmMKQEAgLTEwNjksOSArMTA2OSwx MSBAQCBpZWVlODAyMTFfZW5jYXAoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVl ZTgwMjExX25vZGUgKm5pLAogCSAqIGFwJ3MgcmVxdWlyZSBhbGwgZGF0YSBmcmFtZXMgdG8gYmUg UW9TLWVuY2Fwc3VsYXRlZAogCSAqIG9uY2UgbmVnb3RpYXRlZCBpbiB3aGljaCBjYXNlIHdlJ2xs IG5lZWQgdG8gbWFrZSB0aGlzCiAJICogY29uZmlndXJhYmxlLgorCSAqIE5COiBtZXNoIGRhdGEg ZnJhbWVzIGFyZSBRb1MuCiAJICovCi0JYWRkcW9zID0gKG5pLT5uaV9mbGFncyAmIChJRUVFODAy MTFfTk9ERV9RT1N8SUVFRTgwMjExX05PREVfSFQpKSAmJgotCQkgKG0tPm1fZmxhZ3MgJiBNX0VB UE9MKSA9PSAwOworCWFkZHFvcyA9ICgobmktPm5pX2ZsYWdzICYgKElFRUU4MDIxMV9OT0RFX1FP U3xJRUVFODAyMTFfTk9ERV9IVCkpIHx8CisJICAgICh2YXAtPml2X29wbW9kZSA9PSBJRUVFODAy MTFfTV9NQlNTKSkgJiYKKwkgICAgKG0tPm1fZmxhZ3MgJiBNX0VBUE9MKSA9PSAwOwogCWlmIChh ZGRxb3MpCiAJCWhkcnNpemUgPSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9xb3NmcmFtZSk7CiAJ ZWxzZQpAQCAtMTI3Nyw3ICsxMjc5LDEyIEBAIGllZWU4MDIxMV9lbmNhcChzdHJ1Y3QgaWVlZTgw MjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCXFvc1swXSA9IHRpZCAm IElFRUU4MDIxMV9RT1NfVElEOwogCQlpZiAoaWMtPmljX3dtZS53bWVfd21lQ2hhblBhcmFtcy5j YXBfd21lUGFyYW1zW2FjXS53bWVwX25vYWNrUG9saWN5KQogCQkJcW9zWzBdIHw9IElFRUU4MDIx MV9RT1NfQUNLUE9MSUNZX05PQUNLOwotCQlxb3NbMV0gPSAwOworI2lmZGVmIElFRUU4MDIxMV9T VVBQT1JUX01FU0gKKwkJaWYgKHZhcC0+aXZfb3Btb2RlID09IElFRUU4MDIxMV9NX01CU1MpIHsK KwkJCXFvc1sxXSB8PSBJRUVFODAyMTFfUU9TX01DOworCQl9IGVsc2UKKyNlbmRpZgorCQkJcW9z WzFdID0gMDsKIAkJd2gtPmlfZmNbMF0gfD0gSUVFRTgwMjExX0ZDMF9TVUJUWVBFX1FPUzsKIAog CQlpZiAoKG0tPm1fZmxhZ3MgJiBNX0FNUERVX01QRFUpID09IDApIHsKLS0gCjEuNy40LjEKCg== --20cf3011da15e12aee04b8f3ec09--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BsBSoJGzabfyt8EXoT-g=GTJD0upX5jbRqfLWKQKzXu2FivaA>