From MAILER-DAEMON Sat Dec 17 18:29:17 2005
Date: 17 Dec 2005 18:29:17 -0800
From: Mail System Internal Data <MAILER-DAEMON@arctic.org>
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: <netdev-owner@vger.kernel.org>
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 <rfc822;dean@arctic.org>);
	Sat, 17 Dec 2005 21:22:42 -0500
Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932670AbVLRCWm
	(ORCPT <rfc822;netdev-outgoing>); 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 <rfc822;netdev@vger.kernel.org>);
	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 <dean@arctic.org>
To:	netdev@vger.kernel.org
Subject: [patch] SFQ "noports" and "nosrcip" support and hash revamp
Message-ID: <Pine.LNX.4.63.0512171753080.1567@twinlark.arctic.org>
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 <dean@arctic.org>
--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

