From MAILER-DAEMON Sat Dec 17 18:29:17 2005 Date: 17 Dec 2005 18:29:17 -0800 From: Mail System Internal Data Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA X-IMAP: 1134872957 0000000000 Status: RO This text is part of the internal format of your mail folder, and is not a real message. It is created automatically by the mail system software. If deleted, important folder data will be lost, and it will be re-created with the data reset to initial values. From netdev-owner@vger.kernel.org Sat Dec 17 18:23:13 2005 Return-Path: Delivered-To: dean@arctic.org X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on twinlark.arctic.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.1.0 Received: (qmail 22535 invoked from network); 18 Dec 2005 02:22:44 -0000 Received: from unknown (HELO vger.kernel.org) (209.132.176.167) by 207.7.145.18 with ESMTP; 18 Dec 2005 02:22:43 -0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932662AbVLRCWm (ORCPT ); Sat, 17 Dec 2005 21:22:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932670AbVLRCWm (ORCPT ); Sat, 17 Dec 2005 21:22:42 -0500 Received: from twinlark.arctic.org ([207.7.145.18]:59781 "EHLO twinlark.arctic.org") by vger.kernel.org with ESMTP id S932662AbVLRCWl (ORCPT ); Sat, 17 Dec 2005 21:22:41 -0500 Received: (qmail 22486 invoked from network); 18 Dec 2005 02:22:41 -0000 Received: from unknown (HELO localhost) (127.0.0.1) by 127.0.0.1 with ESMTPS (AES256-SHA); 18 Dec 2005 02:22:40 -0000 Date: Sat, 17 Dec 2005 18:22:40 -0800 (PST) From: dean gaudet To: netdev@vger.kernel.org Subject: [patch] SFQ "noports" and "nosrcip" support and hash revamp Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="131011217-167635637-1134872335=:1567" Sender: netdev-owner@vger.kernel.org Precedence: bulk X-Mailing-List: netdev@vger.kernel.org Status: R X-Status: X-Keywords: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --131011217-167635637-1134872335=:1567 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII hi, i've always found it unfortunate that sfq includes the destination port in the hash because so-called "download accelerators" which issue a bunch of simultaneous http range-requests with non-overlapping ranges end up getting an unfair share of the bandwidth. so i've modified sfq with an option to ignore the ports in the hash function. i know this has a negative effect on people with shared NAT for example, but i feel the probability of unfair treatment of shared NAT users is lower than the probability of unfair bandwidth allocation to download accelerators on pipes of lower bandwidth. i also prefer all outbound traffic for a particular destination to be in the same bucket... i've been using a patch much like this one on pipes <10mbit for a few years now and it works great. this patch adds "noports" and "nosrcip" flags to tc and sch_sfq. as part of testing these changes i noticed the hash function in sfq is weak. it's not weak enough to be noticed when the destination port is part of the hash, which is probably why it hasn't been noticed yet. there's a few problems: - the src/dst ip addresses are used in network endian form, but the hash output uses only the host-endian low 20 bits. given the assumption that destination IP addresses vary in the (network endian) low bits this means a little endian host ends up using the least varying bits of the destination IP address. this is especially noticable for hosts on the same network. - there's a comment about a rotation in the source but the code isn't a rotation :) it uses 0x1f - pert and shoudl be 0x20 - pert to get a rotation. - the perturbation affects bits from the source address only, and so two destinations which collide will still collide under another perturbation. this is really obvious when the destination ports are removed from the hash. - even when the perturbation works it tends to cause collisions between the same hosts 1/32nd of the time, about 3%. rather than invent a new hash i've switched to using jhash_3words. this has the advantage of using all bits of the inputs, and lets us use a full 32-bit perturbation... which hopefully reduces the incidence of collision even further. the only disadvantage i can see to using jhash as opposed to an improvised hash is the cycle cost. note that iptables hashlimit module uses jhash, so i think it should be ok to use jhash in sfq as well... but if people are worried about the perf impact i have an improvised hash idea using only 4 shifts which would probably be sufficient. given that jhash uses all bits of the inputs i didn't see any reason to insert ntohl... so this patch produces different results on big/little endian hosts. i doubt it's an issue. note in the patch i had to grow struct tc_sfq_qopt to include a flags field. in the kernel patch i test the size of the incoming structure in order to handle older versions of tc which didn't include a flags field. one other thing i considered rather than "noports" and "nosrcip" was a single "dstonly" option... let me know if you'd prefer that. let me know what you think... i'd like to get something like this patch included upstream so i can eliminate a patch from several of my kernels. thanks -dean p.s. sorry for the attachments, but there's two packages being patched here... Signed-off-by: dean gaudet --131011217-167635637-1134872335=:1567 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=linux-2.6.14.4-sfq-hash.patch Content-Transfer-Encoding: BASE64 Content-Description: Content-Disposition: ATTACHMENT; FILENAME=linux-2.6.14.4-sfq-hash.patch ZGlmZiAtcHJ1IC1YIGxpbnV4LTIuNi4xNC40L0RvY3VtZW50YXRpb24vZG9u dGRpZmYgbGludXgtMi42LjE0LjQub3JpZy9pbmNsdWRlL2xpbnV4L3BrdF9z Y2hlZC5oIGxpbnV4LTIuNi4xNC40L2luY2x1ZGUvbGludXgvcGt0X3NjaGVk LmgNCi0tLSBsaW51eC0yLjYuMTQuNC5vcmlnL2luY2x1ZGUvbGludXgvcGt0 X3NjaGVkLmgJMjAwNS0xMC0yNyAxNzowMjowOC4wMDAwMDAwMDAgLTA3MDAN CisrKyBsaW51eC0yLjYuMTQuNC9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5o CTIwMDUtMTItMTcgMTc6MjE6NTIuMDAwMDAwMDAwIC0wODAwDQpAQCAtMTM2 LDYgKzEzNiw5IEBAIHN0cnVjdCB0Y19zZnFfcW9wdA0KIAlfX3UzMgkJbGlt aXQ7CQkvKiBNYXhpbWFsIHBhY2tldHMgaW4gcXVldWUgKi8NCiAJdW5zaWdu ZWQJZGl2aXNvcjsJLyogSGFzaCBkaXZpc29yICAqLw0KIAl1bnNpZ25lZAlm bG93czsJCS8qIE1heGltYWwgbnVtYmVyIG9mIGZsb3dzICAqLw0KKwl1bnNp Z25lZCBjaGFyCWZsYWdzOw0KKyNkZWZpbmUgVENfU0ZRX05PUE9SVFMJKDEp CQkvKiBpZ25vcmUgc3JjL2RzdCBwb3J0cyBpbiBoYXNoICovDQorI2RlZmlu ZSBUQ19TRlFfTk9TUkNJUAkoMikJCS8qIGlnbm9yZSBzcmMgaXAgYWRkcmVz cyBpbiBoYXNoICovDQogfTsNCiANCiAvKg0KZGlmZiAtcHJ1IC1YIGxpbnV4 LTIuNi4xNC40L0RvY3VtZW50YXRpb24vZG9udGRpZmYgbGludXgtMi42LjE0 LjQub3JpZy9uZXQvc2NoZWQvc2NoX3NmcS5jIGxpbnV4LTIuNi4xNC40L25l dC9zY2hlZC9zY2hfc2ZxLmMNCi0tLSBsaW51eC0yLjYuMTQuNC5vcmlnL25l dC9zY2hlZC9zY2hfc2ZxLmMJMjAwNS0xMC0yNyAxNzowMjowOC4wMDAwMDAw MDAgLTA3MDANCisrKyBsaW51eC0yLjYuMTQuNC9uZXQvc2NoZWQvc2NoX3Nm cS5jCTIwMDUtMTItMTcgMTc6MjM6NDkuMDAwMDAwMDAwIC0wODAwDQpAQCAt MzYsNiArMzYsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4NCiAj aW5jbHVkZSA8bmV0L3NvY2suaD4NCiAjaW5jbHVkZSA8bmV0L3BrdF9zY2hl ZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9qaGFzaC5oPg0KIA0KIA0KIC8qCVN0 b2NoYXN0aWMgRmFpcm5lc3MgUXVldWluZyBhbGdvcml0aG0uDQpAQCAtMTA2 LDEwICsxMDcsMTEgQEAgc3RydWN0IHNmcV9zY2hlZF9kYXRhDQogCWludAkJ cGVydHVyYl9wZXJpb2Q7DQogCXVuc2lnbmVkCXF1YW50dW07CS8qIEFsbG90 bWVudCBwZXIgcm91bmQ6IE1VU1QgQkUgPj0gTVRVICovDQogCWludAkJbGlt aXQ7DQorCXVuc2lnbmVkCWZsYWdzOw0KIA0KIC8qIFZhcmlhYmxlcyAqLw0K IAlzdHJ1Y3QgdGltZXJfbGlzdCBwZXJ0dXJiX3RpbWVyOw0KLQlpbnQJCXBl cnR1cmJhdGlvbjsNCisJdTMyCQlwZXJ0dXJiYXRpb247DQogCXNmcV9pbmRl eAl0YWlsOwkJLyogSW5kZXggb2YgY3VycmVudCBzbG90IGluIHJvdW5kICov DQogCXNmcV9pbmRleAltYXhfZGVwdGg7CS8qIE1heGltYWwgZGVwdGggKi8N CiANCkBAIC0xMjEsNDkgKzEyMyw0NyBAQCBzdHJ1Y3Qgc2ZxX3NjaGVkX2Rh dGENCiAJc3RydWN0IHNmcV9oZWFkCWRlcFtTRlFfREVQVEgqMl07CS8qIExp bmtlZCBsaXN0IG9mIHNsb3RzLCBpbmRleGVkIGJ5IGRlcHRoICovDQogfTsN CiANCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBzZnFfZm9sZF9oYXNo KHN0cnVjdCBzZnFfc2NoZWRfZGF0YSAqcSwgdTMyIGgsIHUzMiBoMSkNCi17 DQotCWludCBwZXJ0ID0gcS0+cGVydHVyYmF0aW9uOw0KLQ0KLQkvKiBIYXZl IHdlIGFueSByb3RhdGlvbiBwcmltaXRpdmVzPyBJZiBub3QsIFdIWT8gKi8N Ci0JaCBePSAoaDE8PHBlcnQpIF4gKGgxPj4oMHgxRiAtIHBlcnQpKTsNCi0J aCBePSBoPj4xMDsNCi0JcmV0dXJuIGggJiAweDNGRjsNCi19DQotDQogc3Rh dGljIHVuc2lnbmVkIHNmcV9oYXNoKHN0cnVjdCBzZnFfc2NoZWRfZGF0YSAq cSwgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiB7DQotCXUzMiBoLCBoMjsNCisJ dTMyIGgxLCBoMiwgaDM7DQogDQorCWgzID0gMDsNCiAJc3dpdGNoIChza2It PnByb3RvY29sKSB7DQogCWNhc2UgX19jb25zdGFudF9odG9ucyhFVEhfUF9J UCk6DQogCXsNCiAJCXN0cnVjdCBpcGhkciAqaXBoID0gc2tiLT5uaC5pcGg7 DQotCQloID0gaXBoLT5kYWRkcjsNCi0JCWgyID0gaXBoLT5zYWRkcl5pcGgt PnByb3RvY29sOw0KLQkJaWYgKCEoaXBoLT5mcmFnX29mZiZodG9ucyhJUF9N RnxJUF9PRkZTRVQpKSAmJg0KKwkJaDEgPSBpcGgtPmRhZGRyOw0KKwkJaDIg PSAocS0+ZmxhZ3MgJiBUQ19TRlFfTk9TUkNJUCkNCisJCQk/IDAgOiAoaXBo LT5zYWRkcl5pcGgtPnByb3RvY29sKTsNCisJCWlmICghKHEtPmZsYWdzICYg VENfU0ZRX05PUE9SVFMpICYmDQorCQkgICAgIShpcGgtPmZyYWdfb2ZmJmh0 b25zKElQX01GfElQX09GRlNFVCkpICYmDQogCQkgICAgKGlwaC0+cHJvdG9j b2wgPT0gSVBQUk9UT19UQ1AgfHwNCiAJCSAgICAgaXBoLT5wcm90b2NvbCA9 PSBJUFBST1RPX1VEUCB8fA0KIAkJICAgICBpcGgtPnByb3RvY29sID09IElQ UFJPVE9fRVNQKSkNCi0JCQloMiBePSAqKCgodTMyKilpcGgpICsgaXBoLT5p aGwpOw0KKwkJCWgzIF49ICooKCh1MzIqKWlwaCkgKyBpcGgtPmlobCk7DQog CQlicmVhazsNCiAJfQ0KIAljYXNlIF9fY29uc3RhbnRfaHRvbnMoRVRIX1Bf SVBWNik6DQogCXsNCiAJCXN0cnVjdCBpcHY2aGRyICppcGggPSBza2ItPm5o LmlwdjZoOw0KLQkJaCA9IGlwaC0+ZGFkZHIuczZfYWRkcjMyWzNdOw0KLQkJ aDIgPSBpcGgtPnNhZGRyLnM2X2FkZHIzMlszXV5pcGgtPm5leHRoZHI7DQot CQlpZiAoaXBoLT5uZXh0aGRyID09IElQUFJPVE9fVENQIHx8DQotCQkgICAg aXBoLT5uZXh0aGRyID09IElQUFJPVE9fVURQIHx8DQotCQkgICAgaXBoLT5u ZXh0aGRyID09IElQUFJPVE9fRVNQKQ0KLQkJCWgyIF49ICoodTMyKikmaXBo WzFdOw0KKwkJaDEgPSBpcGgtPmRhZGRyLnM2X2FkZHIzMlszXTsNCisJCWgy ID0gKHEtPmZsYWdzICYgVENfU0ZRX05PU1JDSVApDQorCQkJPyAwIDogKGlw aC0+c2FkZHIuczZfYWRkcjMyWzNdXmlwaC0+bmV4dGhkcik7DQorCQlpZiAo IShxLT5mbGFncyAmIFRDX1NGUV9OT1BPUlRTKSAmJg0KKwkJICAgIChpcGgt Pm5leHRoZHIgPT0gSVBQUk9UT19UQ1AgfHwNCisJCSAgICAgaXBoLT5uZXh0 aGRyID09IElQUFJPVE9fVURQIHx8DQorCQkgICAgIGlwaC0+bmV4dGhkciA9 PSBJUFBST1RPX0VTUCkpDQorCQkJaDMgXj0gKih1MzIqKSZpcGhbMV07DQog CQlicmVhazsNCiAJfQ0KIAlkZWZhdWx0Og0KLQkJaCA9ICh1MzIpKHVuc2ln bmVkIGxvbmcpc2tiLT5kc3Rec2tiLT5wcm90b2NvbDsNCi0JCWgyID0gKHUz MikodW5zaWduZWQgbG9uZylza2ItPnNrOw0KKwkJaDEgPSAodTMyKSh1bnNp Z25lZCBsb25nKXNrYi0+ZHN0Ow0KKwkJaDIgPSAocS0+ZmxhZ3MgJiBUQ19T RlFfTk9TUkNJUCkNCisJCQk/IDAgOiAodTMyKSh1bnNpZ25lZCBsb25nKXNr Yi0+c2s7DQorCQloMyA9IHNrYi0+cHJvdG9jb2w7DQogCX0NCi0JcmV0dXJu IHNmcV9mb2xkX2hhc2gocSwgaCwgaDIpOw0KKwlyZXR1cm4gamhhc2hfM3dv cmRzKGgxLCBoMiwgaDMsIHEtPnBlcnR1cmJhdGlvbikNCisJCSYgKFNGUV9I QVNIX0RJVklTT1ItMSk7DQogfQ0KIA0KIHN0YXRpYyBpbmxpbmUgdm9pZCBz ZnFfbGluayhzdHJ1Y3Qgc2ZxX3NjaGVkX2RhdGEgKnEsIHNmcV9pbmRleCB4 KQ0KQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCBzZnFfcGVydHVy YmF0aW9uKHVuc2lnbmVkIGxvDQogCXN0cnVjdCBRZGlzYyAqc2NoID0gKHN0 cnVjdCBRZGlzYyopYXJnOw0KIAlzdHJ1Y3Qgc2ZxX3NjaGVkX2RhdGEgKnEg PSBxZGlzY19wcml2KHNjaCk7DQogDQotCXEtPnBlcnR1cmJhdGlvbiA9IG5l dF9yYW5kb20oKSYweDFGOw0KKwlxLT5wZXJ0dXJiYXRpb24gPSBuZXRfcmFu ZG9tKCk7DQogDQogCWlmIChxLT5wZXJ0dXJiX3BlcmlvZCkgew0KIAkJcS0+ cGVydHVyYl90aW1lci5leHBpcmVzID0gamlmZmllcyArIHEtPnBlcnR1cmJf cGVyaW9kOw0KQEAgLTM4Niw3ICszODYsOCBAQCBzdGF0aWMgaW50IHNmcV9j aGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsDQogCXN0cnVjdCBzZnFfc2NoZWRf ZGF0YSAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCiAJc3RydWN0IHRjX3NmcV9x b3B0ICpjdGwgPSBSVEFfREFUQShvcHQpOw0KIA0KLQlpZiAob3B0LT5ydGFf bGVuIDwgUlRBX0xFTkdUSChzaXplb2YoKmN0bCkpKQ0KKwkvKiBzdXBwb3J0 IG9sZGVyIHRjX3NmcV9xb3B0IHdpdGhvdXQgYSBmbGFncyBmaWVsZCAqLw0K KwlpZiAob3B0LT5ydGFfbGVuIDwgUlRBX0xFTkdUSChvZmZzZXRvZihzdHJ1 Y3QgdGNfc2ZxX3FvcHQsIGZsYWdzKSkpDQogCQlyZXR1cm4gLUVJTlZBTDsN CiANCiAJc2NoX3RyZWVfbG9jayhzY2gpOw0KQEAgLTQwMyw2ICs0MDQsMTQg QEAgc3RhdGljIGludCBzZnFfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLA0K IAkJcS0+cGVydHVyYl90aW1lci5leHBpcmVzID0gamlmZmllcyArIHEtPnBl cnR1cmJfcGVyaW9kOw0KIAkJYWRkX3RpbWVyKCZxLT5wZXJ0dXJiX3RpbWVy KTsNCiAJfQ0KKw0KKwkvKiBtdXN0IGNoZWNrIGlmIGZsYWdzIGZpZWxkIGlz IHByZXNlbnQgKi8NCisJaWYgKG9wdC0+cnRhX2xlbiA+PSBSVEFfTEVOR1RI KHNpemVvZihzdHJ1Y3QgdGNfc2ZxX3FvcHQpKSkgew0KKwkJcS0+ZmxhZ3Mg PSBjdGwtPmZsYWdzOw0KKwl9DQorCWVsc2Ugew0KKwkJcS0+ZmxhZ3MgPSAw Ow0KKwl9DQogCXNjaF90cmVlX3VubG9jayhzY2gpOw0KIAlyZXR1cm4gMDsN CiB9DQpAQCAtNDU3LDYgKzQ2Niw3IEBAIHN0YXRpYyBpbnQgc2ZxX2R1bXAo c3RydWN0IFFkaXNjICpzY2gsIHMNCiAJb3B0LmxpbWl0ID0gcS0+bGltaXQ7 DQogCW9wdC5kaXZpc29yID0gU0ZRX0hBU0hfRElWSVNPUjsNCiAJb3B0LmZs b3dzID0gcS0+bGltaXQ7DQorCW9wdC5mbGFncyA9IHEtPmZsYWdzOw0KIA0K IAlSVEFfUFVUKHNrYiwgVENBX09QVElPTlMsIHNpemVvZihvcHQpLCAmb3B0 KTsNCiANCg== --131011217-167635637-1134872335=:1567 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=iproute2-2.6.14-051107-sfq-hash.patch Content-Transfer-Encoding: BASE64 Content-Description: Content-Disposition: ATTACHMENT; FILENAME=iproute2-2.6.14-051107-sfq-hash.patch ZGlmZiAtcHJ1IC14ICcqLm8nIGlwcm91dGUyLTIuNi4xNC0wNTExMDcub3Jp Zy9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oIGlwcm91dGUyLTIuNi4xNC0w NTExMDcvaW5jbHVkZS9saW51eC9wa3Rfc2NoZWQuaA0KLS0tIGlwcm91dGUy LTIuNi4xNC0wNTExMDcub3JpZy9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5o CTIwMDUtMDgtMDggMTM6MjQ6NDEuMDAwMDAwMDAwIC0wNzAwDQorKysgaXBy b3V0ZTItMi42LjE0LTA1MTEwNy9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5o CTIwMDUtMTItMTcgMTc6MzM6MjMuMDAwMDAwMDAwIC0wODAwDQpAQCAtMTM2 LDYgKzEzNiw5IEBAIHN0cnVjdCB0Y19zZnFfcW9wdA0KIAlfX3UzMgkJbGlt aXQ7CQkvKiBNYXhpbWFsIHBhY2tldHMgaW4gcXVldWUgKi8NCiAJdW5zaWdu ZWQJZGl2aXNvcjsJLyogSGFzaCBkaXZpc29yICAqLw0KIAl1bnNpZ25lZAlm bG93czsJCS8qIE1heGltYWwgbnVtYmVyIG9mIGZsb3dzICAqLw0KKwl1bnNp Z25lZAlmbGFnczsNCisjZGVmaW5lIFRDX1NGUV9OT1BPUlRTCSgxKQkJLyog aWdub3JlIHNyYy9kc3QgcG9ydHMgaW4gaGFzaCAqLw0KKyNkZWZpbmUgVENf U0ZRX05PU1JDSVAJKDIpCQkvKiBpZ25vcmUgc3JjIGlwIGFkZHJlc3MgaW4g aGFzaCAqLw0KIH07DQogDQogLyoNCmRpZmYgLXBydSAteCAnKi5vJyBpcHJv dXRlMi0yLjYuMTQtMDUxMTA3Lm9yaWcvbWFuL21hbjgvdGMtc2ZxLjggaXBy b3V0ZTItMi42LjE0LTA1MTEwNy9tYW4vbWFuOC90Yy1zZnEuOA0KLS0tIGlw cm91dGUyLTIuNi4xNC0wNTExMDcub3JpZy9tYW4vbWFuOC90Yy1zZnEuOAky MDA0LTA2LTA4IDEzOjM0OjE3LjAwMDAwMDAwMCAtMDcwMA0KKysrIGlwcm91 dGUyLTIuNi4xNC0wNTExMDcvbWFuL21hbjgvdGMtc2ZxLjgJMjAwNS0xMi0x NyAxNzo0NToyNi4wMDAwMDAwMDAgLTA4MDANCkBAIC02LDYgKzYsMTEgQEAg c2ZxIFwtIFN0b2NoYXN0aWMgRmFpcm5lc3MgUXVldWVpbmcNCiBzZWNvbmRz DQogLkIgcXVhbnR1bQ0KIGJ5dGVzDQorLkIgWyBsaW1pdA0KK3BhY2tldHMN CisuQiBdDQorLkIgWyBub3BvcnRzIF0NCisuQiBbIG5vc3JjaXAgXQ0KIA0K IC5TSCBERVNDUklQVElPTg0KIA0KQEAgLTIyLDIxICsyNywxMyBAQCBUaGlz IG1heSBpbiBmYWN0IGhhdmUgc29tZSBlZmZlY3QgaW4gbWl0DQogDQogU0ZR IGlzIHdvcmstY29uc2VydmluZyBhbmQgdGhlcmVmb3JlIGFsd2F5cyBkZWxp dmVycyBhIHBhY2tldCBpZiBpdCBoYXMgb25lIGF2YWlsYWJsZS4NCiAuU0gg QUxHT1JJVEhNDQotT24gZW5xdWV1ZWluZywgZWFjaCBwYWNrZXQgaXMgYXNz aWduZWQgdG8gYSBoYXNoIGJ1Y2tldCwgYmFzZWQgb24NCi0uVFANCi0oaSkN Ci1Tb3VyY2UgYWRkcmVzcw0KLS5UUA0KLShpaSkNCi1EZXN0aW5hdGlvbiBh ZGRyZXNzDQotLlRQDQotKGlpaSkNCi1Tb3VyY2UgcG9ydA0KLS5QDQotSWYg dGhlc2UgYXJlIGF2YWlsYWJsZS4gU0ZRIGtub3dzIGFib3V0IGlwdjQgYW5k IGlwdjYgYW5kIGFsc28gVURQLCBUQ1AgYW5kIEVTUC4gDQotUGFja2V0cyB3 aXRoIG90aGVyIHByb3RvY29scyBhcmUgaGFzaGVkIGJhc2VkIG9uIHRoZSAz MmJpdHMgcmVwcmVzZW50YXRpb24gb2YgdGhlaXIgDQotZGVzdGluYXRpb24g YW5kIHRoZSBzb2NrZXQgdGhleSBiZWxvbmcgdG8uIEEgZmxvdyBjb3JyZXNw b25kcyBtb3N0bHkgdG8gYSBUQ1AvSVAgDQotY29ubmVjdGlvbi4NCitPbiBl bnF1ZXVlaW5nLCBlYWNoIHBhY2tldCBpcyBhc3NpZ25lZCB0byBhIGhhc2gg YnVja2V0LCBiYXNlZCBvbiBhIGZ1bmN0aW9uIG9mDQorc291cmNlIGFkZHJl c3MsIHNvdXJjZSBwb3J0LCBkZXN0aW5hdGlvbiBhZGRyZXNzLCBhbmQgZGVz dGluYXRpb24gcG9ydC4NCisNCitTRlEga25vd3MgYWJvdXQgaXB2NCBhbmQg aXB2NiBhbmQgYWxzbyBVRFAsIFRDUCBhbmQgRVNQLiAgUGFja2V0cyB3aXRo DQorb3RoZXIgcHJvdG9jb2xzIGFyZSBoYXNoZWQgYmFzZWQgb24gdGhlIDMy Yml0cyByZXByZXNlbnRhdGlvbiBvZiB0aGVpcg0KK2Rlc3RpbmF0aW9uIGFu ZCB0aGUgc29ja2V0IHRoZXkgYmVsb25nIHRvLiBBIGZsb3cgY29ycmVzcG9u ZHMgbW9zdGx5IHRvDQorYSBUQ1AvSVAgY29ubmVjdGlvbi4NCiANCiBFYWNo IG9mIHRoZXNlIGJ1Y2tldHMgc2hvdWxkIHJlcHJlc2VudCBhIHVuaXF1ZSBm bG93LiBCZWNhdXNlIG11bHRpcGxlIGZsb3dzIG1heQ0KIGdldCBoYXNoZWQg dG8gdGhlIHNhbWUgYnVja2V0LCB0aGUgaGFzaGluZyBhbGdvcml0aG0gaXMg cGVydHVyYmVkIGF0IGNvbmZpZ3VyYWJsZSANCkBAIC01OSw2ICs1NiwyNSBA QCByZW9yZGVyaW5nLiBBZHZpc2VkIHZhbHVlOiAxMA0KIHF1YW50dW0NCiBB bW91bnQgb2YgYnl0ZXMgYSBmbG93IGlzIGFsbG93ZWQgdG8gZGVxdWV1ZSBk dXJpbmcgYSByb3VuZCBvZiB0aGUgcm91bmQgcm9iaW4gcHJvY2Vzcy4NCiBE ZWZhdWx0cyB0byB0aGUgTVRVIG9mIHRoZSBpbnRlcmZhY2Ugd2hpY2ggaXMg YWxzbyB0aGUgYWR2aXNlZCB2YWx1ZSBhbmQgdGhlIG1pbmltdW0gdmFsdWUu DQorLlRQDQorbGltaXQNCitOdW1iZXIgb2YgcGFja2V0cyBwZXJtaXR0ZWQg aW4gdGhlIFNGUSBhdCBvbmUgdGltZS4gIE11c3QgYmUgYXQgbGVhc3QgMSwg YW5kIGF0DQorbW9zdCAxMjguDQorLlRQDQorbm9wb3J0cw0KK0lmIHNwZWNp ZmllZCB0aGVuIHRoZSBzb3VyY2UvZGVzdGluYXRpb24gcG9ydHMgYXJlIG5v dCBpbmNsdWRlZCBpbiB0aGUgaGFzaA0KK2Z1bmN0aW9uLiAgVGhpcyB3aWxs IGZvcmNlIGFsbCBmbG93cyBmb3IgYSBwYXJ0aWN1bGFyIHNvdXJjZS9kZXN0 aW5hdGlvbiBhZGRyZXNzDQorcGFpciB0byBiZSBwbGFjZWQgaW4gdGhlIHNh bWUgYnVja2V0LiAgSXQgbWF5IGJlIHVzZWZ1bCBmb3IgZGVmZWF0aW5nIHNv LWNhbGxlZA0KKyJkb3dubG9hZCBhY2NlbGVyYXRvcnMiLiAgVGhlc2UgImFj Y2VsZXJhdG9ycyIgdXNlIEhUVFAgcmFuZ2UtcmVxdWVzdHMgaW4gb3JkZXIN Cit0byBpc3N1ZSBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHMgdG8g YSB3ZWJzZXJ2ZXIgaW4gYW4gYXR0ZW1wdCB0byBnZXQNCithbiB1bmZhaXIg c2hhcmUgb2YgYXZhaWxhYmxlIGJhbmR3aWR0aC4gIE5vdGUgdGhhdCB0aGlz IG9wdGlvbiBkb2VzIHVuZmFpcmx5DQorcGVuYWxpemUgaG9zdHMgc2hhcmlu ZyBhbiBJUCBhZGRyZXNzLCBzdWNoIGFzIGhvc3RzIGJlaGluZCBhIHNoYXJl ZCBOQVQuDQorLlRQDQorbm9zcmNpcA0KK0lmIHNwZWNpZmllZCB0aGVuIHRo ZSBzb3VyY2UgYWRkcmVzcyBpcyBub3QgY29uc2lkZXJlZCBpbiB0aGUgaGFz aCBmdW5jdGlvbi4NCitUaGlzIGlzIHVzZWZ1bCBmb3Igd2hlbiB5b3Ugd2lz aCBhbGwgb3V0Ym91bmQgdHJhZmZpYyBmb3IgYSBwYXJ0aWN1bGFyDQorZGVz dGluYXRpb24gdG8gYmUgY29uc2lkZXJlZCB3aXRob3V0IGNvbnNpZGVyYXRp b24gZm9yIHdoaWNoIHNvdXJjZSBhZGRyZXNzDQorZ2VuZXJhdGVkIGl0Lg0K IA0KIC5TSCBFWEFNUExFICYgVVNBR0UNCiANCmRpZmYgLXBydSAteCAnKi5v JyBpcHJvdXRlMi0yLjYuMTQtMDUxMTA3Lm9yaWcvdGMvcV9zZnEuYyBpcHJv dXRlMi0yLjYuMTQtMDUxMTA3L3RjL3Ffc2ZxLmMNCi0tLSBpcHJvdXRlMi0y LjYuMTQtMDUxMTA3Lm9yaWcvdGMvcV9zZnEuYwkyMDA0LTA5LTI4IDExOjM1 OjQ5LjAwMDAwMDAwMCAtMDcwMA0KKysrIGlwcm91dGUyLTIuNi4xNC0wNTEx MDcvdGMvcV9zZnEuYwkyMDA1LTEyLTE3IDE3OjI2OjUyLjAwMDAwMDAwMCAt MDgwMA0KQEAgLTI1LDcgKzI1LDcgQEANCiANCiBzdGF0aWMgdm9pZCBleHBs YWluKHZvaWQpDQogew0KLQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAuLi4g c2ZxIFsgbGltaXQgTlVNQkVSIF0gWyBwZXJ0dXJiIFNFQ1MgXSBbIHF1YW50 dW0gQllURVMgXVxuIik7DQorCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IC4u LiBzZnEgWyBsaW1pdCBOVU1CRVIgXSBbIHBlcnR1cmIgU0VDUyBdIFsgcXVh bnR1bSBCWVRFUyBdIFsgbm9wb3J0cyBdIFsgbm9zcmNpcCBdXG4iKTsNCiB9 DQogDQogI2RlZmluZSB1c2FnZSgpIHJldHVybigtMSkNCkBAIC02Myw2ICs2 MywxMiBAQCBzdGF0aWMgaW50IHNmcV9wYXJzZV9vcHQoc3RydWN0IHFkaXNj X3V0DQogCQkJCXJldHVybiAtMTsNCiAJCQl9DQogCQkJb2srKzsNCisJCX0g ZWxzZSBpZiAoc3RyY21wKCphcmd2LCAibm9wb3J0cyIpID09IDApIHsNCisJ CQlvcHQuZmxhZ3MgfD0gVENfU0ZRX05PUE9SVFM7DQorCQkJb2srKzsNCisJ CX0gZWxzZSBpZiAoc3RyY21wKCphcmd2LCAibm9zcmNpcCIpID09IDApIHsN CisJCQlvcHQuZmxhZ3MgfD0gVENfU0ZRX05PU1JDSVA7DQorCQkJb2srKzsN CiAJCX0gZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiaGVscCIpID09IDApIHsN CiAJCQlleHBsYWluKCk7DQogCQkJcmV0dXJuIC0xOw0KQEAgLTk3LDYgKzEw MywxMCBAQCBzdGF0aWMgaW50IHNmcV9wcmludF9vcHQoc3RydWN0IHFkaXNj X3V0DQogCX0NCiAJaWYgKHFvcHQtPnBlcnR1cmJfcGVyaW9kKQ0KIAkJZnBy aW50ZihmLCAicGVydHVyYiAlZHNlYyAiLCBxb3B0LT5wZXJ0dXJiX3Blcmlv ZCk7DQorCWlmIChxb3B0LT5mbGFncyAmIFRDX1NGUV9OT1BPUlRTKQ0KKwkJ ZnByaW50ZihmLCAibm9wb3J0cyAiKTsNCisJaWYgKHFvcHQtPmZsYWdzICYg VENfU0ZRX05PU1JDSVApDQorCQlmcHJpbnRmKGYsICJub3NyY2lwICIpOw0K IAlyZXR1cm4gMDsNCiB9DQogDQo= --131011217-167635637-1134872335=:1567-- - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html