Date: Wed, 26 Mar 2003 11:49:14 -0600 (CST) From: Mike Silbersack <silby@silby.com> To: Doug Ambrisko <ambrisko@ambrisko.com>, Sam Leffler <sam@errno.com>, Maxime Henrion <mux@freebsd.org> Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/conf options src/sys/netinet ip_output.c Message-ID: <20030326114030.U2075@odysseus.silby.com> In-Reply-To: <200303260452.h2Q4quap015364@www.ambrisko.com> References: <200303260452.h2Q4quap015364@www.ambrisko.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-436137172-1048700704=:2075 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: <20030326114511.A2075@odysseus.silby.com> On Tue, 25 Mar 2003, Doug Ambrisko wrote: > | I think that we'll end up being even better off by just making a > | m_defragment function, thereby reducing code duplication even more. I'll > | make sure to test any such function more than I tested the MBUF_FRAG_TEST > | code, however. :) > > Yes, I was thinking that as well. Ok, here's my attempt at a m_defragment function. It seems to work well here, although I have only tested it with the if_xl driver. Could you guys give it a quick lookover to see if it has any bugs? I'll add the ability to copy mbuf chains longer than MCLBYTES once I know all the packet header handling / etc is correct. Also note that the patch contains my changes to if_xl, which are mostly debugging code. You can ignore most of that. One change I _will_ make to if_xl, however, is to walk the chain and find out its length _before_ we do any busdma calls; this moves the defragmentation occur earlier, thereby avoiding the need for a complex error recovery case. I suspect we'll want to do the same in the other network drivers. Thanks, Mike "Silby" Silbersack --0-436137172-1048700704=:2075 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="m_defragment-pass2.patch" Content-Transfer-Encoding: BASE64 Content-ID: <20030326114504.K2075@odysseus.silby.com> Content-Description: Content-Disposition: ATTACHMENT; FILENAME="m_defragment-pass2.patch" ZGlmZiAtdSAtciAvdXNyL3NyYy9zeXMub2xkL2tlcm4vdWlwY19tYnVmLmMg L3Vzci9zcmMvc3lzL2tlcm4vdWlwY19tYnVmLmMNCi0tLSAvdXNyL3NyYy9z eXMub2xkL2tlcm4vdWlwY19tYnVmLmMJVHVlIE1hciAyNSAxOTo1MTo0NCAy MDAzDQorKysgL3Vzci9zcmMvc3lzL2tlcm4vdWlwY19tYnVmLmMJV2VkIE1h ciAyNiAxMTo0Mjo1OCAyMDAzDQpAQCAtNzc4LDMgKzc3OCw1MiBAQA0KIAkJ Kmxhc3QgPSBtOw0KIAlyZXR1cm4gKGxlbik7DQogfQ0KKw0KKy8qDQorICog RGVmcmFnbWVudCBhIG1idWYgY2hhaW4sIHJldHVybmluZyBhIG5ldyBtYnVm IGNoYWluIHdoaWNoIGlzDQorICogY29tcHJpc2VkIG9mIGFzIGZldyBtYnVm cyBhbmQgY2x1c3RlcnMgYXMgcG9zc2libGUuICBSZXR1cm4NCisgKiBOVUxM IGlmIG1idWYgYWxsb2NhdGlvbiBmYWlscywgcmF0aGVyIHRoYW4gcmV0dXJu aW5nIHRoZQ0KKyAqIHN0aWxsIGZyYWdtZW50ZWQgY2hhaW4uICBJZiBhIG5v bi1wYWNrZXQgaGVhZGVyIGlzIHBhc3NlZA0KKyAqIGluLCB0aGUgb3JpZ2lu YWwgbWJ1ZiAoY2hhaW4/KSB3aWxsIGJlIHJldHVybmVkIHVuaGFybWVkLg0K KyAqDQorICogRklYTUU6IERvZXMgbm90IGhhbmRsZSBkYXRhIHNpemVzID4g TUNMQllURVMNCisgKi8NCitzdHJ1Y3QgbWJ1ZiAqDQorbV9kZWZyYWdtZW50 KHN0cnVjdCBtYnVmICptMCwgaW50IGhvdykNCit7DQorCXN0cnVjdCBtYnVm CSptX25ldyA9IE5VTEw7DQorDQorCWlmICghKG0wLT5tX2ZsYWdzICYgTV9Q S1RIRFIpKQ0KKwkJcmV0dXJuIChtMCk7DQorDQorCWlmIChtMC0+bV9wa3Ro ZHIubGVuID4gTUNMQllURVMpDQorCQlnb3RvIG5vc3BhY2U7DQorDQorCW1f bmV3ID0gbV9nZXRoZHIoaG93LCBNVF9EQVRBKTsNCisNCisJaWYgKG1fbmV3 ID09IE5VTEwpDQorCQlnb3RvIG5vc3BhY2U7DQorDQorCWlmICghbV9kdXBf cGt0aGRyKG1fbmV3LCBtMCwgaG93KSkNCisJCWdvdG8gbm9zcGFjZTsNCisJ bV9uZXctPm1fbGVuID0gbTAtPm1fbGVuOw0KKw0KKwlpZiAobTAtPm1fcGt0 aGRyLmxlbiA+IE1ITEVOKSB7DQorCQlNQ0xHRVQobV9uZXcsIGhvdyk7DQor CQlpZiAoKG1fbmV3LT5tX2ZsYWdzICYgTV9FWFQpID09IDApDQorCQkJZ290 byBub3NwYWNlOw0KKwl9DQorDQorCW1fY29weWRhdGEobTAsIDAsIG0wLT5t X3BrdGhkci5sZW4sIG10b2QobV9uZXcsIGNhZGRyX3QpKTsNCisJbV9uZXct Pm1fbGVuID0gbTAtPm1fcGt0aGRyLmxlbjsNCisJbV9mcmVlbShtMCk7DQor CW0wID0gbV9uZXc7DQorCXJldHVybiAobTApOw0KK25vc3BhY2U6DQorCWlm IChtMCkNCisJCW1fZnJlZW0obTApOw0KKwlpZiAobV9uZXcpDQorCQltX2Zy ZWUobV9uZXcpOw0KKwlyZXR1cm4gKE5VTEwpOw0KKw0KK30NCmRpZmYgLXUg LXIgL3Vzci9zcmMvc3lzLm9sZC9wY2kvaWZfeGwuYyAvdXNyL3NyYy9zeXMv cGNpL2lmX3hsLmMNCi0tLSAvdXNyL3NyYy9zeXMub2xkL3BjaS9pZl94bC5j CVR1ZSBNYXIgMjUgMTk6NTA6NTIgMjAwMw0KKysrIC91c3Ivc3JjL3N5cy9w Y2kvaWZfeGwuYwlXZWQgTWFyIDI2IDAxOjU1OjQxIDIwMDMNCkBAIC0yNDEy LDkgKzI0MTIsMzMgQEANCiAJc3RydWN0IHhsX2NoYWluCQkqYzsNCiAJc3Ry dWN0IG1idWYJCSptX2hlYWQ7DQogew0KLQlzdHJ1Y3QgeGxfZnJhZwkJKmYg PSBOVUxMOw0KLQlpbnQJCQllcnJvcjsNCi0JdV9pbnQzMl90CQliYWRkciwg c3RhdHVzOw0KKwlzdHJ1Y3QgbWJ1ZgkJKm1fbmV3Ow0KKwlpbnQJCQllcnJv ciwgY2hhaW5sZW5ndGggPSAwLCBhZnRlciA9IDA7DQorCWludAkJCWxiZWZv cmUgPSAwLCBsYWZ0ZXIgPSAwOw0KKwl1X2ludDMyX3QJCXN0YXR1czsNCisJ DQorCWZvciAobV9uZXcgPSBtX2hlYWQ7IG1fbmV3ICE9IE5VTEw7IG1fbmV3 ID0gbV9uZXctPm1fbmV4dCkgew0KKwkJbGJlZm9yZSArPSBtX25ldy0+bV9s ZW47DQorCQljaGFpbmxlbmd0aCsrOw0KKwl9DQorDQorCWlmIChjaGFpbmxl bmd0aCA+IFhMX01BWEZSQUdTKSB7DQorCQlwcmludGYoIlN0YXJ0aW5nIGRl ZnJhZ21lbnRhdGlvblxuIik7DQorCQltX2hlYWQgPSBtX2RlZnJhZ21lbnQo bV9oZWFkLCBNX0RPTlRXQUlUKTsNCisNCisJCWlmIChtX2hlYWQgPT0gTlVM TCkgew0KKwkJCXByaW50ZigieGwlZDogbm8gbWVtb3J5IGZvciB0eCBsaXN0 XG4iLCBzYy0+eGxfdW5pdCk7DQorCQkJcmV0dXJuICgxKTsNCisJCX0NCisN CisJCWZvciAobV9uZXcgPSBtX2hlYWQ7IG1fbmV3ICE9IE5VTEw7IG1fbmV3 ID0gbV9uZXctPm1fbmV4dCkgew0KKwkJCWxhZnRlciArPSBtX25ldy0+bV9s ZW47DQorCQkJYWZ0ZXIrKzsNCisJCX0NCisNCisJCXByaW50ZigiQmVmb3Jl OiAlaSBBZnRlcjogJWlcbiIsIGNoYWlubGVuZ3RoLCBhZnRlcik7DQorCQlw cmludGYoIkxiZWZvcmU6ICVpIExhZnRlcjogJWlcbiIsIGxiZWZvcmUsIGxh ZnRlcik7DQorCX0NCiANCiAJLyoNCiAgCSAqIFN0YXJ0IHBhY2tpbmcgdGhl IG1idWZzIGluIHRoaXMgY2hhaW4gaW50bw0KQEAgLTI0MjgsNDYgKzI0NTIs NiBAQA0KIAkJbV9mcmVlbShtX2hlYWQpOw0KIAkJcHJpbnRmKCJ4bCVkOiBj YW4ndCBtYXAgbWJ1ZiAoZXJyb3IgJWQpXG4iLCBzYy0+eGxfdW5pdCwgZXJy b3IpOw0KIAkJcmV0dXJuKDEpOw0KLQl9DQotDQotCS8qDQotCSAqIEhhbmRs ZSBzcGVjaWFsIGNhc2U6IHdlIHVzZWQgdXAgYWxsIDYzIGZyYWdtZW50cywN Ci0JICogYnV0IHdlIGhhdmUgbW9yZSBtYnVmcyBsZWZ0IGluIHRoZSBjaGFp bi4gQ29weSB0aGUNCi0JICogZGF0YSBpbnRvIGFuIG1idWYgY2x1c3Rlci4g Tm90ZSB0aGF0IHdlIGRvbid0DQotCSAqIGJvdGhlciBjbGVhcmluZyB0aGUg dmFsdWVzIGluIHRoZSBvdGhlciBmcmFnbWVudA0KLQkgKiBwb2ludGVycy9j b3VudGVyczsgaXQgd291bGRuJ3QgZ2FpbiB1cyBhbnl0aGluZywNCi0JICog YW5kIHdvdWxkIHdhc3RlIGN5Y2xlcy4NCi0JICovDQotCWlmIChlcnJvcikg ew0KLQkJc3RydWN0IG1idWYJCSptX25ldzsNCi0NCi0JCW1fbmV3ID0gbV9o ZWFkLT5tX3BrdGhkci5sZW4gPiBNSExFTiA/DQotCQkgICAgbV9nZXRjbChN X0RPTlRXQUlULCBNVF9EQVRBLCBNX1BLVEhEUikgOg0KLQkJICAgIG1fZ2V0 aGRyKE1fRE9OVFdBSVQsIE1UX0RBVEEpOw0KLQkJaWYgKG1fbmV3ID09IE5V TEwpIHsNCi0JCQltX2ZyZWVtKG1faGVhZCk7DQotCQkJcHJpbnRmKCJ4bCVk OiBubyBtZW1vcnkgZm9yIHR4IGxpc3RcbiIsIHNjLT54bF91bml0KTsNCi0J CQlyZXR1cm4oMSk7DQotCQl9DQotCQltX2NvcHlkYXRhKG1faGVhZCwgMCwg bV9oZWFkLT5tX3BrdGhkci5sZW4sCQ0KLQkJCQkJbXRvZChtX25ldywgY2Fk ZHJfdCkpOw0KLQkJbV9uZXctPm1fcGt0aGRyLmxlbiA9IG1fbmV3LT5tX2xl biA9IG1faGVhZC0+bV9wa3RoZHIubGVuOw0KLQkJbV9mcmVlbShtX2hlYWQp Ow0KLQkJbV9oZWFkID0gbV9uZXc7DQotCQlmID0gJmMtPnhsX3B0ci0+eGxf ZnJhZ1swXTsNCi0JCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkKHNjLT54bF9t dGFnLCBjLT54bF9tYXAsDQotCQkgICAgbXRvZChtX25ldywgdm9pZCAqKSwg TUNMQllURVMsIHhsX2RtYV9tYXBfYWRkciwNCi0JCSAgICAmYmFkZHIsIDAp Ow0KLQkJaWYgKGVycm9yKSB7DQotCQkJbV9mcmVlbShtX25ldyk7DQotCQkJ cHJpbnRmKCJ4bCVkOiBjYW4ndCBtYXAgbWJ1ZiAoZXJyb3IgJWQpXG4iLA0K LQkJCSAgICBzYy0+eGxfdW5pdCwgZXJyb3IpOw0KLQkJCXJldHVybigxKTsN Ci0JCX0NCi0JCWYtPnhsX2FkZHIgPSBodG9sZTMyKGJhZGRyKTsNCi0JCWYt PnhsX2xlbiA9IGh0b2xlMzIobV9uZXctPm1fbGVuIHwgWExfTEFTVF9GUkFH KTsNCi0JCWMtPnhsX3B0ci0+eGxfc3RhdHVzID0gaHRvbGUzMihtX25ldy0+ bV9sZW4pOw0KLQkJYy0+eGxfcHRyLT54bF9uZXh0ID0gMDsNCiAJfQ0KIA0K IAlpZiAoc2MtPnhsX3R5cGUgPT0gWExfVFlQRV85MDVCKSB7DQpkaWZmIC11 IC1yIC91c3Ivc3JjL3N5cy5vbGQvcGNpL2lmX3hscmVnLmggL3Vzci9zcmMv c3lzL3BjaS9pZl94bHJlZy5oDQotLS0gL3Vzci9zcmMvc3lzLm9sZC9wY2kv aWZfeGxyZWcuaAlUdWUgTWFyIDI1IDE5OjUwOjUyIDIwMDMNCisrKyAvdXNy L3NyYy9zeXMvcGNpL2lmX3hscmVnLmgJVHVlIE1hciAyNSAyMToyODo1MyAy MDAzDQpAQCAtNDIwLDcgKzQyMCw3IEBADQogDQogI2RlZmluZSBYTF9MQVNU X0ZSQUcJCTB4ODAwMDAwMDANCiANCi0jZGVmaW5lIFhMX01BWEZSQUdTCQk2 Mw0KKyNkZWZpbmUgWExfTUFYRlJBR1MJCTEwDQogI2RlZmluZSBYTF9SWF9M SVNUX0NOVAkJMTI4DQogI2RlZmluZSBYTF9UWF9MSVNUX0NOVAkJMjU2DQog I2RlZmluZSBYTF9SWF9MSVNUX1NaCQlYTF9SWF9MSVNUX0NOVCAqIHNpemVv ZihzdHJ1Y3QgeGxfbGlzdF9vbmVmcmFnKQ0KZGlmZiAtdSAtciAvdXNyL3Ny Yy9zeXMub2xkL3N5cy9tYnVmLmggL3Vzci9zcmMvc3lzL3N5cy9tYnVmLmgN Ci0tLSAvdXNyL3NyYy9zeXMub2xkL3N5cy9tYnVmLmgJVHVlIE1hciAyNSAx OTo1MDo0NiAyMDAzDQorKysgL3Vzci9zcmMvc3lzL3N5cy9tYnVmLmgJV2Vk IE1hciAyNiAwMTo1ODoxNyAyMDAzDQpAQCAtNDMwLDYgKzQzMCw3IEBADQog c3RydWN0CW1idWYJKm1fY29weW0oc3RydWN0IG1idWYgKiwgaW50LCBpbnQs IGludCk7DQogc3RydWN0CW1idWYJKm1fY29weXBhY2tldChzdHJ1Y3QgbWJ1 ZiAqLCBpbnQpOw0KIHZvaWQJCSBtX2NvcHlfcGt0aGRyKHN0cnVjdCBtYnVm ICosIHN0cnVjdCBtYnVmICopOw0KK3N0cnVjdAltYnVmCSptX2RlZnJhZ21l bnQoc3RydWN0IG1idWYgKiwgaW50KTsNCiBzdHJ1Y3QJbWJ1ZgkqbV9kZXZn ZXQoY2hhciAqLCBpbnQsIGludCwgc3RydWN0IGlmbmV0ICosDQogCQkgICAg dm9pZCAoKikoY2hhciAqLCBjYWRkcl90LCB1X2ludCkpOw0KIHN0cnVjdAlt YnVmCSptX2R1cChzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOw0K --0-436137172-1048700704=:2075--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030326114030.U2075>