From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <mablexidana@163.com>
Received: from m13-4.163.com (m13-4.163.com [220.181.13.4])
 by dpdk.org (Postfix) with ESMTP id 174BBC402
 for <dev@dpdk.org>; Fri, 23 Oct 2015 06:40:11 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com;
 s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=ukzeI
 dNx5hwi12Ibo38m2CptzhLmrfdlzE5CV641m5I=; b=k1JpyMsIElvwRBb1NAYou
 P7pdKOx5T6bZrWW+ZoQA6g0n5ZDf75Ev6N7D9j+g1Ua3hDA+2nGjGnyQr1vyy+BN
 +L1+EEqzWM0y+kT2TFnJ/MuccHcCk1/0kJ4+otUQRZa66/xb1ZIzzz5DjdQqaHoH
 CI3I4nBGUGd2w9zP92TujA=
Received: from mablexidana$163.com ( [182.92.253.20] ) by
 ajax-webmail-wmsvr4 (Coremail) ; Fri, 23 Oct 2015 12:40:07 +0800 (CST)
X-Originating-IP: [182.92.253.20]
Date: Fri, 23 Oct 2015 12:40:07 +0800 (CST)
From: mablexidana  <mablexidana@163.com>
To: "Bruce Richardson" <bruce.richardson@intel.com>, dev@dpdk.org
X-Priority: 3
X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build
 20150911(74783.7961) Copyright (c) 2002-2015 www.mailtech.cn 163com
In-Reply-To: <313921ca.4b27.1508d543038.Coremail.mablexidana@163.com>
References: <5e5d9466.100a4.15089d2018f.Coremail.mablexidana@163.com>
 <20151021110749.GD16140@bricha3-MOBL3>
 <313921ca.4b27.1508d543038.Coremail.mablexidana@163.com>
X-CM-CTRLDATA: dn3Lx2Zvb3Rlcl9odG09MjkwMDg6NTY=
MIME-Version: 1.0
Message-ID: <51540495.a2d9.15092ff2946.Coremail.mablexidana@163.com>
X-CM-TRANSID: BMGowADX3gIouilWWhOPAA--.24131W
X-CM-SenderInfo: xpdezvp0lgt0rd6rljoofrz/1tbiMRKcsFUL3JdtuAACsN
X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU==
Content-Type: text/plain; charset=GBK
Content-Transfer-Encoding: base64
X-Content-Filtered-By: Mailman/MimeDel 2.1.15
Subject: Re: [dpdk-dev] [PATCH] fix lpm bugs
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 23 Oct 2015 04:40:14 -0000

aGk6CkZpeGVzOiAzOTYyODRmMzQ1YTEgKCJhZGQgYXBwL3Rlc3QvdGVzdF9scG0uYyB0ZXN0IGxw
bSwgYWRkIDMgbmV3IGNhc2VzIDEpLGFkZC0+bG9va3VwIDIpLGFkZC0+ZGVsZXRlLT5sb29rdXAg
MyksYWRkLT5kZWxldGUtPmFkZC0+bG9va3VwIikKW1BBVENIXSBhZGQgYXBwL3Rlc3QvdGVzdF9s
cG0uYyB0ZXN0IGxwbSwgYWRkIDMgbmV3IGNhc2VzCgoKdGVzdCBwcm9jZWR1cmU6CiAxKSxhZGQt
Pmxvb2t1cCAKIDIpLGFkZC0+ZGVsZXRlLT5sb29rdXAgCiAzKSxhZGQtPmRlbGV0ZS0+YWRkLT5s
b29rdXAKCgpUaGlzIGlzIHRoZSB0ZXN0IHByb2dyYW0gdG8gdGVzdCBscG0gYnVncy4gCgoKCgpU
aGFua3MKCgpSZWdhcmRzCgoKeXVleGluCi0tLQogYXBwL3Rlc3QvdGVzdF9scG0uYyB8IDQ4MCAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZp
bGUgY2hhbmdlZCwgNDgwIGluc2VydGlvbnMoKykKCgpkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QvdGVz
dF9scG0uYyBiL2FwcC90ZXN0L3Rlc3RfbHBtLmMKaW5kZXggOGI0ZGVkOS4uZDJmOGE1MiAxMDA2
NDQKLS0tIGEvYXBwL3Rlc3QvdGVzdF9scG0uYworKysgYi9hcHAvdGVzdC90ZXN0X2xwbS5jCkBA
IC0zNSw4ICszNSwxMSBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o
PgogI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CiAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CgoKKyNpbmNsdWRlIDxydGVfdmVyc2lvbi5o
PgogI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4KICNpbmNsdWRlIDxydGVfY3ljbGVzLmg+CiAjaW5j
bHVkZSA8cnRlX21lbW9yeS5oPgpAQCAtNDQsNiArNDcsNyBAQAogI2luY2x1ZGUgPHJ0ZV9icmFu
Y2hfcHJlZGljdGlvbi5oPgogI2luY2x1ZGUgPHJ0ZV9pcC5oPgogI2luY2x1ZGUgPHRpbWUuaD4K
KyNpbmNsdWRlIDxzeXMvdGltZS5oPgoKCiAjaW5jbHVkZSAidGVzdC5oIgoKCkBAIC03Nyw4ICs4
MSw2OSBAQCBzdGF0aWMgaW50MzJfdCB0ZXN0MTQodm9pZCk7CiBzdGF0aWMgaW50MzJfdCB0ZXN0
MTUodm9pZCk7CiBzdGF0aWMgaW50MzJfdCB0ZXN0MTYodm9pZCk7CiBzdGF0aWMgaW50MzJfdCB0
ZXN0MTcodm9pZCk7CitzdGF0aWMgaW50MzJfdCB0ZXN0X3JhbmRvbSh2b2lkKTsKIHN0YXRpYyBp
bnQzMl90IHBlcmZfdGVzdCh2b2lkKTsKCgorI2lmbmRlZiBSVEVfVkVSU0lPTl9OVU0KKyNkZWZp
bmUgUlRFX1ZFUlNJT05fTlVNKGEsYixjLGQpICgoYSkgPDwgMjQgfCAoYikgPDwgMTYgfCAoYykg
PDwgOCB8IChkKSkKKyNlbmRpZgorCisjaWZuZGVmIFJURV9WRVJTSU9OCisjZGVmaW5lIFJURV9W
RVJTSU9OIFJURV9WRVJTSU9OX05VTSggXAorICAgICAgICAgICAgUlRFX1ZFUl9NQUpPUiwgXAor
ICAgICAgICAgICAgUlRFX1ZFUl9NSU5PUiwgXAorICAgICAgICAgICAgUlRFX1ZFUl9QQVRDSF9M
RVZFTCxcCisgICAgICAgICAgICAwKQorI2VuZGlmCisKKworI2RlZmluZSBMUE1fQUREX1JPVVRF
X01BWCAgICAgICAxMDAKKyNkZWZpbmUgTFBNX1RFU1RfTE9PS1VQX0NPVU5UICAgMQorI2RlZmlu
ZSAgQVJHICAgICAgICAgICAgICAgICAgICAzMgorCisjZGVmaW5lIFJURV9MUE1fVjNfTUFYX0RF
UFRIICAgIDMyCisjZGVmaW5lIFJBTkRfU0VFRCAgICAgICAgICAgICAgIDEwMjQKKworCisjZGVm
aW5lIFBSSU5UX0lQX0ZPUk1BVCAgICAgICAgICIldS4ldS4ldS4ldSIKKyNkZWZpbmUgIFBSSU5U
X0hJUCh4KVwKKyAgICAgICAgKCh4ID4+IDI0KSAmIDB4RkYpLFwKKyAgICAgICAgKCh4ID4+IDE2
KSAmIDB4RkYpLFwKKyAgICAgICAgKCh4ID4+ICA4KSAmIDB4RkYpLFwKKyAgICAgICAgKCh4ID4+
ICAwKSAmIDB4RkYpCisKKy8qcm91dGUgc3RydWN0IG5vZGUgZGVmaW5lKi8KK3N0cnVjdCByb3V0
ZV9ub2RlIHsKKyAgICB1aW50MzJfdCBkaXA7CisgICAgdWludDMyX3QgZGVwdGg7CisgICAgdWlu
dDE2X3QgbmV4dF9ob3A7CisgICAgdWludDE2X3QgZmxhZ3M7Cit9OworCisvKmdsb2JhbCB2YXJp
YmxlIGRlZmluZSovCitzdHJ1Y3Qgcm91dGVfbm9kZSByb3V0ZV90YWJsZV9hcnJhcnlbTFBNX0FE
RF9ST1VURV9NQVhdOworCisKKy8qZm9yIHRlc3RfcmFuZG9tIHJvdXRlIHRhYmxlIHRlc3QgZnVu
Y3Rpb25zKi8KK2xvbmcgZ2V0Q3VycmVudFRpbWUodm9pZCk7CitpbnQgdGVzdF9yYW5kb21fbHBt
X2Nhc2VfMShzdHJ1Y3QgcnRlX2xwbSAqbHBtKTsKK2ludCB0ZXN0X3JhbmRvbV9scG1fY2FzZV8y
KHN0cnVjdCBydGVfbHBtICpscG0pOworaW50IHRlc3RfcmFuZG9tX2xwbV9jYXNlXzMoc3RydWN0
IHJ0ZV9scG0gKmxwbSk7CitpbnQgbHBtX3JhbmRvbV9sb29rdXAoc3RydWN0IHJ0ZV9scG0gKmxw
bV90cmVlLCB1aW50MzJfdCBkaXBfY291bnQpOworaW50IGxwbV9yYW5kb21fYWRkKHN0cnVjdCBy
dGVfbHBtICpscG1fdHJlZSwgaW50IGNvdW50KTsKK2ludCBscG1fcmFuZG9tX2RlbGV0ZShzdHJ1
Y3QgcnRlX2xwbSAqbHBtX3RyZWUsIHVpbnQzMl90IGluZGV4KTsKK2ludCBscG1fcmFuZG9tX2Fk
ZF9uZXh0aG9wKHN0cnVjdCBydGVfbHBtICpscG1fdHJlZSwgaW50IGNvdW50LCBpbnQgbmV4dF9o
b3ApOwordm9pZCBscG1fcm91dGVfc2hvdyhzdHJ1Y3QgcnRlX2xwbSAqbHBtKTsKK3ZvaWQgbHBt
X3JvdXRlX3Nob3dfdjIoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgaG9wMSwgdWludDMy
X3QgaG9wMik7CitpbnQgcm91dGVfdGFibGVfYXJyYXJ5X2NyZWF0ZSh2b2lkKTsKK2ludCByb3V0
ZV90YWJsZV9hcnJhcnlfYWRkKHVpbnQzMl90IGRpcCwgdWludDhfdCBkZXB0aCwgdWludDMyX3Qg
bmV4dF9ob3ApOworI2lmIFJURV9WRVJTSU9OID49IFJURV9WRVJTSU9OX05VTSgyLCAxLCAwLCAw
KQordWludDMyX3QgZGVwdGhfdG9fbWFzayh1aW50OF90IGRlcHRoKTsKK2ludCByb3V0ZV90YWJs
ZV9scG1fbG9va3VwKHN0cnVjdCBydGVfbHBtICpscG1fdHJlZSwgdWludDMyX3QgZGlwLCB1aW50
OF90ICpuZXh0X2hvcCk7CisjZWxzZQoraW50IHJvdXRlX3RhYmxlX2xwbV9sb29rdXAoc3RydWN0
IHJ0ZV9scG0gKmxwbV90cmVlLCB1aW50MzJfdCBkaXAsIHVpbnQxNl90ICpuZXh0X2hvcCk7Cisj
ZW5kaWYKKwogcnRlX2xwbV90ZXN0IHRlc3RzW10gPSB7CiAvKiBUZXN0IENhc2VzICovCiB0ZXN0
MCwKQEAgLTk5LDYgKzE2NCw3IEBAIHJ0ZV9scG1fdGVzdCB0ZXN0c1tdID0gewogdGVzdDE1LAog
dGVzdDE2LAogdGVzdDE3LAordGVzdF9yYW5kb20sCiBwZXJmX3Rlc3QsCiB9OwoKCkBAIC0xMTM3
LDYgKzEyMDMsNDIwIEBAIHRlc3QxNyh2b2lkKQogcmV0dXJuIFBBU1M7CiB9CgoKK2xvbmcKK2dl
dEN1cnJlbnRUaW1lKHZvaWQpCit7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgZ2V0dGlt
ZW9mZGF5KCZ0dixOVUxMKTsKKyAgICByZXR1cm4gdHYudHZfc2VjICogMTAwMCArIHR2LnR2X3Vz
ZWMgLyAxMDAwOworfQorCisjaWYgUlRFX1ZFUlNJT04gPj0gUlRFX1ZFUlNJT05fTlVNKDIsIDEs
IDAsIDApCisvKmNvbnZlcnR0IHRoZSBkZXB0aCB0byBuZXQgbWFzayovCit1aW50MzJfdCBkZXB0
aF90b19tYXNrKHVpbnQ4X3QgZGVwdGgpCit7CisgICAgcmV0dXJuIChpbnQpMHg4MDAwMDAwMCA+
PiAoZGVwdGggLSAxKTsKK30KKyNlbmRpZgorCisvKmZvciByb3V0ZSB0ZXN0IHRhYmxlIG9wZXJh
dGUqLworaW50Cityb3V0ZV90YWJsZV9hcnJhcnlfY3JlYXRlKHZvaWQpCit7CisgICAgbWVtc2V0
KHJvdXRlX3RhYmxlX2FycmFyeSwgMCwgc2l6ZW9mKHN0cnVjdCByb3V0ZV9ub2RlKSAqIExQTV9B
RERfUk9VVEVfTUFYKTsKKyAgICByZXR1cm4gMDsKK30KKworLyphZGQgdGhlIHJvdXRlIHRvIHRo
ZSByb3V0ZSB0ZXN0IHRhYmxlKi8KK2ludAorcm91dGVfdGFibGVfYXJyYXJ5X2FkZCh1aW50MzJf
dCBkaXAsIHVpbnQ4X3QgZGVwdGgsIHVpbnQzMl90IG5leHRfaG9wKQoreworICAgIHVpbnQzMl90
IGkgPSAwOworICAgIHVpbnQzMl90IGRpcF9tYXNrZWQgPSBkaXAgJiBkZXB0aF90b19tYXNrKGRl
cHRoKTsKKworICAgIGZvcihpID0gMDsgaSA8IExQTV9BRERfUk9VVEVfTUFYOyBpKyspIHsKKyAg
ICAgICAgaWYocm91dGVfdGFibGVfYXJyYXJ5W2ldLmZsYWdzID09IDEKKyAgICAgICAgICAgICAg
ICAmJiByb3V0ZV90YWJsZV9hcnJhcnlbaV0uZGlwID09IGRpcAorICAgICAgICAgICAgICAgICYm
IHJvdXRlX3RhYmxlX2FycmFyeVtpXS5kZXB0aCA9PSBkZXB0aCkgeworCisgICAgICAgICAgICBy
b3V0ZV90YWJsZV9hcnJhcnlbaV0uZGlwID0gZGlwX21hc2tlZDsKKyAgICAgICAgICAgIHJvdXRl
X3RhYmxlX2FycmFyeVtpXS5kZXB0aCA9IGRlcHRoOworICAgICAgICAgICAgcm91dGVfdGFibGVf
YXJyYXJ5W2ldLm5leHRfaG9wID0gbmV4dF9ob3A7CisKKyAgICAgICAgICAgIHJldHVybiAwOyAg
IC8vZXhzaXQsIHVwZGF0ZQorICAgICAgICB9CisgICAgfQorCisgICAgZm9yKGkgPSAwOyBpIDwg
TFBNX0FERF9ST1VURV9NQVg7IGkrKykgeworICAgICAgICBpZihyb3V0ZV90YWJsZV9hcnJhcnlb
aV0uZmxhZ3MgPT0gMCkgeyAgLy9hZGQgdGhlIHJvdXRlCisgICAgICAgICAgICByb3V0ZV90YWJs
ZV9hcnJhcnlbaV0uZmxhZ3MgPSAxOworICAgICAgICAgICAgcm91dGVfdGFibGVfYXJyYXJ5W2ld
LmRpcCA9IGRpcF9tYXNrZWQ7CisgICAgICAgICAgICByb3V0ZV90YWJsZV9hcnJhcnlbaV0uZGVw
dGggPSBkZXB0aDsKKyAgICAgICAgICAgIHJvdXRlX3RhYmxlX2FycmFyeVtpXS5uZXh0X2hvcCA9
IG5leHRfaG9wOworCisgICAgICAgICAgICByZXR1cm4gMDsgICAvL2FkZCBvbmUgYnkgb25lLCBz
dWNjZXNzCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLTE7ICAvL2FkZCBmYWlsZWQK
K30KKworI2lmIFJURV9WRVJTSU9OID49IFJURV9WRVJTSU9OX05VTSgyLCAxLCAwLCAwKQoraW50
IHJvdXRlX3RhYmxlX2xwbV9sb29rdXAoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgZGlw
LCB1aW50OF90ICpuZXh0X2hvcCkKKyNlbHNlCitpbnQgcm91dGVfdGFibGVfbHBtX2xvb2t1cChz
dHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdCBkaXAsIHVpbnQxNl90ICpuZXh0X2hvcCkKKyNl
bmRpZgoreworICAgIGludCBpLCBqOworICAgIGludCBzdGFydCwgZW5kOworICAgIHVpbnQzMl90
IG1hc2s7CisKKyAgICBmb3IoaSA9IFJURV9MUE1fVjNfTUFYX0RFUFRIIC0gMTsgaSA+PSAwIDsg
aS0tKSB7CisjaWYgUlRFX1ZFUlNJT04gPj0gUlRFX1ZFUlNJT05fTlVNKDIsIDEsIDAsIDApCisg
ICAgICAgIHN0YXJ0ID0gbHBtLT5ydWxlX2luZm9baV0uZmlyc3RfcnVsZTsgICAvL2ZpbmQgZnJv
bSBtYXggZGVwdGggcnVsZQorICAgICAgICBlbmQgPSBzdGFydCArIGxwbS0+cnVsZV9pbmZvW2ld
LnVzZWRfcnVsZXM7CisjZWxzZQorICAgICAgICBzdGFydCA9IGkgKiBscG0tPm1heF9ydWxlc19w
ZXJfZGVwdGg7CisgICAgICAgIGVuZCA9IHN0YXJ0ICsgbHBtLT51c2VkX3J1bGVzX2F0X2RlcHRo
W2ldOworI2VuZGlmCisgICAgICAgIGZvcihqID0gc3RhcnQ7IGogPCBlbmQ7IGorKykgeworICAg
ICAgICAgICAgbWFzayA9IGRlcHRoX3RvX21hc2soaSArIDEpOworCisgICAgICAgICAgICBpZigo
ZGlwICYgbWFzaykgPT0gbHBtLT5ydWxlc190Ymxbal0uaXApIHsKKyAgICAgICAgICAgICAgICAq
bmV4dF9ob3AgPSBscG0tPnJ1bGVzX3RibFtqXS5uZXh0X2hvcDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAt
MTsKK30KKworLypzaG93IGxwbSdzIHJvdXRlIGVudHJpZXMqLwordm9pZCBscG1fcm91dGVfc2hv
dyhzdHJ1Y3QgcnRlX2xwbSAqbHBtKQoreworICAgIHVpbnQzMl90IGkgPSAwLCBqID0gMDsKKyAg
ICB1aW50MzJfdCBzdGFydCA9IDAsIGVuZCA9IDAsIGNvdW50ID0gMDsKKworICAgIHByaW50Zigi
WyVzOiVkXXNob3cgcnVsZSBpbiBscG0gdHJlZS4uLlxuIixfX2Z1bmNfXyxfX0xJTkVfXyk7CisK
KyAgICBmb3IoaSA9IDA7IGkgPCBSVEVfTFBNX1YzX01BWF9ERVBUSDsgaSsrKXsKKyNpZiBSVEVf
VkVSU0lPTiA+PSBSVEVfVkVSU0lPTl9OVU0oMiwgMSwgMCwgMCkKKyAgICAgICAgc3RhcnQgPSBs
cG0tPnJ1bGVfaW5mb1tpXS5maXJzdF9ydWxlOworICAgICAgICBlbmQgPSBzdGFydCArIGxwbS0+
cnVsZV9pbmZvW2ldLnVzZWRfcnVsZXM7CisjZWxzZQorICAgICAgICBzdGFydCA9IGkgKiBscG0t
Pm1heF9ydWxlc19wZXJfZGVwdGg7CisgICAgICAgIGVuZCA9IHN0YXJ0ICsgbHBtLT51c2VkX3J1
bGVzX2F0X2RlcHRoW2ldOworI2VuZGlmCisgICAgICAgIGZvcihqID0gc3RhcnQ7IGogPCBlbmQ7
IGorKykgeworICAgICAgICAgICAgcHJpbnRmKCJcdHJ1bGUgaWQgOiAldSwgaXAgOiAiUFJJTlRf
SVBfRk9STUFUIi8ldSwgbmV4dF9ob3AgOiAldSwgXHRcdCBscG0gYXJyYXJ5KCV1IC0gJXUgLSAl
dSlcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50LCBQUklOVF9ISVAobHBtLT5y
dWxlc190Ymxbal0uaXApLCBpICsgMSwgbHBtLT5ydWxlc190Ymxbal0ubmV4dF9ob3AsIGksIHN0
YXJ0LCBlbmQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuOworfQorCisvKnNob3cg
bHBtJ3Mgcm91dGUgZW50cmllcyBvbiBob3AxIGFuZCBob3AyKi8KK3ZvaWQKK2xwbV9yb3V0ZV9z
aG93X3YyKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGhvcDEsIHVpbnQzMl90IGhvcDIp
Cit7CisgICAgdWludDMyX3QgaSA9IDAsIGogPSAwOworICAgIHVpbnQzMl90IHN0YXJ0ID0gMCwg
ZW5kID0gMCwgY291bnQgPSAwOworCisgICAgcHJpbnRmKCJbJXM6JWRdc2hvdyBydWxlIGluIGxw
bSB0cmVlLi4uXG4iLF9fZnVuY19fLF9fTElORV9fKTsKKworICAgIGZvcihpID0gMDsgaSA8IFJU
RV9MUE1fVjNfTUFYX0RFUFRIOyBpKyspeworI2lmIFJURV9WRVJTSU9OID49IFJURV9WRVJTSU9O
X05VTSgyLCAxLCAwLCAwKQorICAgICAgICBzdGFydCA9IGxwbS0+cnVsZV9pbmZvW2ldLmZpcnN0
X3J1bGU7CisgICAgICAgIGVuZCA9IHN0YXJ0ICsgbHBtLT5ydWxlX2luZm9baV0udXNlZF9ydWxl
czsKKyNlbHNlCisgICAgICAgIHN0YXJ0ID0gaSAqIGxwbS0+bWF4X3J1bGVzX3Blcl9kZXB0aDsK
KyAgICAgICAgZW5kID0gc3RhcnQgKyBscG0tPnVzZWRfcnVsZXNfYXRfZGVwdGhbaV07CisjZW5k
aWYKKyAgICAgICAgZm9yKGogPSBzdGFydDsgaiA8IGVuZDsgaisrKSB7CisgICAgICAgICAgICBp
ZihscG0tPnJ1bGVzX3RibFtqXS5uZXh0X2hvcCA9PSBob3AxIHx8IGxwbS0+cnVsZXNfdGJsW2pd
Lm5leHRfaG9wID09IGhvcDIpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIlx0cnVsZSBpZCA6
ICV1LCBpcCA6ICJQUklOVF9JUF9GT1JNQVQiLyV1LCBuZXh0X2hvcCA6ICV1LCBcdFx0IGxwbSBh
cnJhcnkoJXUgLSAldSAtICV1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQs
IFBSSU5UX0hJUChscG0tPnJ1bGVzX3RibFtqXS5pcCksIGkgKyAxLCBscG0tPnJ1bGVzX3RibFtq
XS5uZXh0X2hvcCwgaSwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm47Cit9CisKK2ludAorbHBtX3JhbmRvbV9hZGRfbmV4dGhvcChzdHJ1
Y3QgcnRlX2xwbSAqbHBtX3RyZWUsIGludCBjb3VudCwgaW50IG5leHRfaG9wKQoreworICAgIGlu
dDMyX3QgaTsKKyAgICBpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgdWludDMyX3QgYWRkX2RpcCA9
IDA7CisgICAgdWludDhfdCBhZGRfZGVwdGggPSAwOworICAgIHVpbnQ4X3QgbmV4dF9ob3BfYWRk
ID0gMDsKK3VpbnQzMl90IGRpcF9tYXNrZWQgPSAwOworICAgIHVpbnQ2NF90IHNlZWQgPSAwOwor
ICAgIGludCBuaCA9IG5leHRfaG9wLTE7CisKKyAgICBzZWVkID0gZ2V0Q3VycmVudFRpbWUoKTsK
K3J0ZV9zcmFuZChzZWVkKTsKKworZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKK25leHRf
aG9wX2FkZCA9IG5oKys7CisKK2FkZF9kaXAgPSAweDEwMjAwMDAwICsgKHJ0ZV9yYW5kKCkgPj4g
NDgpOworICAgICAgICBhZGRfZGVwdGggPSBydGVfcmFuZCgpICUgMzIgKyAxOworZGlwX21hc2tl
ZCA9IGFkZF9kaXAgJiBkZXB0aF90b19tYXNrKGFkZF9kZXB0aCk7CisKK2lmKGRpcF9tYXNrZWQg
PT0gMCkgeworaS0tOworY29udGludWU7Cit9CisKKyAgICAgICAgc3RhdHVzID0gcnRlX2xwbV9h
ZGQobHBtX3RyZWUsIGRpcF9tYXNrZWQsIGFkZF9kZXB0aCwgbmV4dF9ob3BfYWRkKTsKKyAgICAg
ICAgaWYoc3RhdHVzICE9IDApIHsKKyAgICAgICAgICAgIHByaW50ZigibHBtIGFkZCByb3V0ZXMg
ZmFpbGVkLCByZXQgOiAlZC4uLlxuIiwgc3RhdHVzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
fQorCisgICAgICAgIHJvdXRlX3RhYmxlX2FycmFyeV9hZGQoZGlwX21hc2tlZCwgYWRkX2RlcHRo
LCBuZXh0X2hvcF9hZGQpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKmZvciByYW5k
b20gcm91dGUgYWRkLCBmb3Igcm91dGUgdGFibGUgJiBscG0gc3RydWN0Ki8KK2ludCBscG1fcmFu
ZG9tX2FkZChzdHJ1Y3QgcnRlX2xwbSAqbHBtX3RyZWUsIGludCBjb3VudCkKK3sKKyAgICBpbnQz
Ml90IGk7CisgICAgaW50MzJfdCBzdGF0dXMgPSAwOworICAgIHVpbnQzMl90IGFkZF9kaXAgPSAw
OworICAgIHVpbnQ4X3QgYWRkX2RlcHRoID0gMDsKKyAgICB1aW50OF90IG5leHRfaG9wX2FkZCA9
IDA7Cit1aW50MzJfdCBkaXBfbWFza2VkID0gMDsKKyAgICB1aW50NjRfdCBzZWVkID0gMDsKKwor
ICAgIHNlZWQgPSBnZXRDdXJyZW50VGltZSgpOworcnRlX3NyYW5kKHNlZWQpOworICAgIHByaW50
Zigic2VlZCA9ICVsZFxuIiwgc2VlZCk7CisKK2ZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7
CituZXh0X2hvcF9hZGQgPSBpICUgMjU2OworCithZGRfZGlwID0gMHgxMDIwMDAwMCArIChydGVf
cmFuZCgpID4+IDQ4KTsKKyAgICAgICAgYWRkX2RlcHRoID0gcnRlX3JhbmQoKSAlIDMyICsgMTsK
K2RpcF9tYXNrZWQgPSBhZGRfZGlwICYgZGVwdGhfdG9fbWFzayhhZGRfZGVwdGgpOworCitpZihk
aXBfbWFza2VkID09IDApIHsKK2ktLTsKK2NvbnRpbnVlOworfQorCisgICAgICAgIHN0YXR1cyA9
IHJ0ZV9scG1fYWRkKGxwbV90cmVlLCBkaXBfbWFza2VkLCBhZGRfZGVwdGgsIG5leHRfaG9wX2Fk
ZCk7CisgICAgICAgIGlmKHN0YXR1cyAhPSAwKSB7CisgICAgICAgICAgICBwcmludGYoImxwbSBh
ZGQgcm91dGVzIGZhaWxlZCwgcmV0IDogJWQuLi5cbiIsIHN0YXR1cyk7CisgICAgICAgICAgICBj
b250aW51ZTsKK30KKworICAgICAgICByb3V0ZV90YWJsZV9hcnJhcnlfYWRkKGRpcF9tYXNrZWQs
IGFkZF9kZXB0aCwgbmV4dF9ob3BfYWRkKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor
Lypmb3IgcmFuZG9tIGxvb2t1cCB0aGUgcm91dGUqLworaW50IGxwbV9yYW5kb21fbG9va3VwKHN0
cnVjdCBydGVfbHBtICpscG1fdHJlZSwgdWludDMyX3QgcXVlcnlfY291bnQpCit7CisgICAgdWlu
dDMyX3QgaSA9IDA7CisjaWYgUlRFX1ZFUlNJT04gPj0gUlRFX1ZFUlNJT05fTlVNKDIsIDEsIDAs
IDApCisgICAgdWludDhfdCBsb29rdXBfbmV4dF9ob3BfMCA9IDA7CisgICAgdWludDhfdCBsb29r
dXBfbmV4dF9ob3BfMSA9IDA7CisjZWxzZQorICAgIHVpbnQxNl90IGxvb2t1cF9uZXh0X2hvcF8w
ID0gMDsKKyAgICB1aW50MTZfdCBsb29rdXBfbmV4dF9ob3BfMSA9IDA7CisjZW5kaWYKKwordWlu
dDMyX3QgZGlwOworICAgIGludDMyX3Qgc3RhdHVzXzAgPSAwLCBzdGF0dXNfMSA9IDA7CisKK3J0
ZV9zcmFuZChnZXRDdXJyZW50VGltZSgpKTsKKworZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2NvdW50
OyBpKyspIHsKK2RpcCA9IDB4MTAyMDAwMDAgKyAocnRlX3JhbmQoKSA+PiA0OCk7CisKK2xvb2t1
cF9uZXh0X2hvcF8wID0gMHhmZjsKK2xvb2t1cF9uZXh0X2hvcF8xID0gMHhmZjsKKworc3RhdHVz
XzAgPSByb3V0ZV90YWJsZV9scG1fbG9va3VwKGxwbV90cmVlLCBkaXAsICZsb29rdXBfbmV4dF9o
b3BfMCk7CisgICAgICAgIHN0YXR1c18xID0gcnRlX2xwbV9sb29rdXAobHBtX3RyZWUsIGRpcCwg
Jmxvb2t1cF9uZXh0X2hvcF8xKTsKKworICAgICAgICBpZihzdGF0dXNfMCA9PSAwICYmIHN0YXR1
c18xID09IDApIHsKKyAgICAgICAgICAgIGlmKGxvb2t1cF9uZXh0X2hvcF8wICE9IGxvb2t1cF9u
ZXh0X2hvcF8xKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJsb29rdXAgdGltZXMgOiAldSwg
ZmFpbGVkLCBkaXAgOiAiUFJJTlRfSVBfRk9STUFUIiwgbmV4dF9ob3BfMCA6ICV1LCBuZXh0X2hv
cF8xIDogJXVcbiIsCitpLCBQUklOVF9ISVAoZGlwKSwgbG9va3VwX25leHRfaG9wXzAsIGxvb2t1
cF9uZXh0X2hvcF8xKTsKKyAgICAgICAgICAgIHN0YXR1c18xID0gcnRlX2xwbV9sb29rdXAobHBt
X3RyZWUsIGRpcCwgJmxvb2t1cF9uZXh0X2hvcF8xKTsKK3ByaW50Zigic2xpdCAxLCBmb3IgY2hl
Y2sgYSB0aW1lLCBzdGF0dXNfMSAlZCwgbmV4dF9ob3AgOiAldVxuIiwgc3RhdHVzXzEsIGxvb2t1
cF9uZXh0X2hvcF8xKTsKK2xwbV9yb3V0ZV9zaG93X3YyKGxwbV90cmVlLCBsb29rdXBfbmV4dF9o
b3BfMCwgbG9va3VwX25leHRfaG9wXzEpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZihzdGF0dXNfMCA8IDAgJiYgc3RhdHVzXzEgPCAwKSB7Cisg
ICAgICAgICAgICAvL3ByaW50ZigiaSA6ICV1LCBscG0gbG9va3VwIGRvbid0IGV4c2l0LCBzdGF0
dXNfMCA6ICVkLCBzdGF0dXNfMSA6JWRcbiIsIGksIHN0YXR1c18wLCBzdGF0dXNfMSk7CisgICAg
ICAgIGNvbnRpbnVlOworfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50ZigibG9va3VwIHRpbWVz
IDogJXUsIGZhaWxlZCwgIGRpcCA6ICJQUklOVF9JUF9GT1JNQVQiICwgc3RhdHVzXzAgOiAlZCwg
c3RhdHVzXzEgOiVkLCBuZXh0X2hvcF8wIDogJXUsIG5leHRfaG9wXzEgOiAldVxuIiwKK2ksIFBS
SU5UX0hJUChkaXApLCBzdGF0dXNfMCwgc3RhdHVzXzEsIGxvb2t1cF9uZXh0X2hvcF8wLCBsb29r
dXBfbmV4dF9ob3BfMSk7CisgICAgICAgICAgICBzdGF0dXNfMSA9IHJ0ZV9scG1fbG9va3VwKGxw
bV90cmVlLCBkaXAsICZsb29rdXBfbmV4dF9ob3BfMSk7CitwcmludGYoInNsaXQgMiwgZm9yIGNo
ZWNrIGEgdGltZSwgc3RhdHVzXzEgJWQsIG5leHRfaG9wIDogJXVcbiIsIHN0YXR1c18xLCBsb29r
dXBfbmV4dF9ob3BfMSk7CitscG1fcm91dGVfc2hvd192MihscG1fdHJlZSwgbG9va3VwX25leHRf
aG9wXzAsIGxvb2t1cF9uZXh0X2hvcF8xKTsKK3JldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiAwOworfQorCisvKmZvciBkZWx0ZSB0aGUgcm91dGUgYnkgc2VnbWVudCwg
ZnJvbSBzdGFydCB0byBlbmQqLworaW50IGxwbV9yYW5kb21fZGVsZXRlKHN0cnVjdCBydGVfbHBt
ICpscG1fdHJlZSwgdWludDMyX3QgaW5kZXgpCit7CisgICAgaW50IHJldCA9IDA7CisgICAgdWlu
dDMyX3QgZGlwID0gMDsKKyAgICB1aW50OF90ICBkZXB0aDsKKyAgICB1aW50MTZfdCBuZXh0X2hv
cDsKK3VpbnQzMl90IGRpcF9tYXNrZWQ7CisKK2lmKHJvdXRlX3RhYmxlX2FycmFyeVtpbmRleF0u
ZmxhZ3MgPT0gMSkgeworZGlwID0gcm91dGVfdGFibGVfYXJyYXJ5W2luZGV4XS5kaXA7CitkZXB0
aCA9IHJvdXRlX3RhYmxlX2FycmFyeVtpbmRleF0uZGVwdGg7CituZXh0X2hvcCA9IHJvdXRlX3Rh
YmxlX2FycmFyeVtpbmRleF0ubmV4dF9ob3A7CitkaXBfbWFza2VkID0gZGlwICYgZGVwdGhfdG9f
bWFzayhkZXB0aCk7CisKK3JvdXRlX3RhYmxlX2FycmFyeVtpbmRleF0uZmxhZ3MgPSAwOworcm91
dGVfdGFibGVfYXJyYXJ5W2luZGV4XS5kaXAgPSAwOworcm91dGVfdGFibGVfYXJyYXJ5W2luZGV4
XS5kZXB0aCA9IDA7Cityb3V0ZV90YWJsZV9hcnJhcnlbaW5kZXhdLm5leHRfaG9wID0gMDsKKwor
cmV0ID0gcnRlX2xwbV9kZWxldGUobHBtX3RyZWUsIGRpcF9tYXNrZWQsIGRlcHRoKTsKK2lmKHJl
dCA8IDApIHsKKyAgIHByaW50ZigiZGVsZXRlLCBmYWlsZWQsIGluZGV4IDogJXUsIGRpcCA6ICJQ
UklOVF9JUF9GT1JNQVQiLCBkZXB0aCA6ICV1XG4iLCBpbmRleCwgUFJJTlRfSElQKGRpcCksIGRl
cHRoKTsKKyAgIHJldHVybiAtMTsKK30KK30KKworICAgIHJldHVybiAwOworfQorCisKKy8qYWRk
IC0+IGxvb2t1cCovCitpbnQKK3Rlc3RfcmFuZG9tX2xwbV9jYXNlXzEoc3RydWN0IHJ0ZV9scG0g
KmxwbSkKK3sKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIHJldCA9IGxwbV9yYW5kb21fYWRkKGxw
bSwgTFBNX0FERF9ST1VURV9NQVgpOworICAgIGlmKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJu
IHJldDsKKyAgICB9CisKKyAgICByZXQgPSBscG1fcmFuZG9tX2xvb2t1cChscG0sIExQTV9URVNU
X0xPT0tVUF9DT1VOVCk7CisgICAgaWYocmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0Owor
ICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKmFkZCAtPiBkZWwgLT4gbG9va3VwKi8KK2lu
dAordGVzdF9yYW5kb21fbHBtX2Nhc2VfMihzdHJ1Y3QgcnRlX2xwbSAqbHBtKQoreworICAgIGlu
dCBpID0gMCwgcmV0ID0gMDsKKworICAgIGZvcihpID0gMDsgaSA8ICBMUE1fQUREX1JPVVRFX01B
WDsgaSsrKSB7CisgICAgICAgIGxwbV9yYW5kb21fZGVsZXRlKGxwbSwgaSk7CisKKyAgICAgICAg
cmV0ID0gbHBtX3JhbmRvbV9sb29rdXAobHBtLCBMUE1fVEVTVF9MT09LVVBfQ09VTlQpOworICAg
ICAgICBpZihyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLypmb3IgbiB0aW1lczogZGVsIC0+YWRkIC0+IGxv
b2t1cCovCitpbnQKK3Rlc3RfcmFuZG9tX2xwbV9jYXNlXzMoc3RydWN0IHJ0ZV9scG0gKmxwbSkK
K3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgaSA9IDA7CisgICAgaW50IGhvcHMgPSAwOwor
ICAgIGludCBhZGQgPSAxOworICAgIHJldCA9IGxwbV9yYW5kb21fYWRkKGxwbSwgTFBNX0FERF9S
T1VURV9NQVgpOworICAgIGlmKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9
CisgICAgaG9wcyA9IDIwMDsKKyAgICBmb3IoaSA9IDA7IGkgPCAgTFBNX0FERF9ST1VURV9NQVg7
IGkrKykgeworICAgICAgICB1c2xlZXAoMTAwMCk7CisgICAgICAgIGxwbV9yYW5kb21fZGVsZXRl
KGxwbSwgaSk7CisgICAgICAgIGxwbV9yYW5kb21fYWRkX25leHRob3AobHBtLGFkZCxob3BzKTsK
KyAgICAgICAgaG9wcyA9IGhvcHMgKyBhZGQ7CisgICAgICAgIHJldCA9IGxwbV9yYW5kb21fbG9v
a3VwKGxwbSwgTFBNX1RFU1RfTE9PS1VQX0NPVU5UKTsKKyAgICAgICAgICAgIGlmKHJldCA8IDAp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUZXN0IGZvciByYW5kb20gcm91dGluZyBhZGQsIGRl
bCBhbmQgbG9va3VwCisgKi8KK2ludDMyX3QKK3Rlc3RfcmFuZG9tKHZvaWQpIHsKKyAgICBpbnQg
cmV0ID0gUEFTUzsKKy8vICAgIGludCBjYXNlX3Byb2Nlc3MsaTsKKyAgICBzdHJ1Y3QgcnRlX2xw
bSAqbHBtID0gTlVMTDsKKyAgICBscG0gPSBydGVfbHBtX2NyZWF0ZShfX2Z1bmNfXywgU09DS0VU
X0lEX0FOWSwgTFBNX0FERF9ST1VURV9NQVggICogQVJHLCAwKTsKK1RFU1RfTFBNX0FTU0VSVChs
cG0gIT0gTlVMTCk7CisKKyAgICByb3V0ZV90YWJsZV9hcnJhcnlfY3JlYXRlKCk7CisKKworICAg
IHJldCA9IHRlc3RfcmFuZG9tX2xwbV9jYXNlXzEobHBtKTsKKyAgICBpZihyZXQgIT0gMCkgewor
ICAgICAgICBscG1fcm91dGVfc2hvdyhscG0pOworICAgICAgICBwcmludGYoInRlc3RfcmFuZG9t
X2xwbV9jYXNlXzEsIGZhaWxlZC4uLlxuIik7CisgICAgICAgIHJldCA9IC0xOworICAgICAgICBn
b3RvIE9VVDsKKyAgICB9CisgICAgcHJpbnRmKCJ0ZXN0X3JhbmRvbV9scG1fY2FzZV8xLCBvay4u
LlxuIik7CisKKworICAgIHJldCA9IHRlc3RfcmFuZG9tX2xwbV9jYXNlXzIobHBtKTsKKyAgICBp
ZihyZXQgIT0gMCkgeworICAgICAgICBscG1fcm91dGVfc2hvdyhscG0pOworICAgICAgICBwcmlu
dGYoInRlc3RfcmFuZG9tX2xwbV9jYXNlXzIsIGZhaWxlZC4uLlxuIik7CisgICAgICAgIHJldCA9
IC0xOworICAgICAgICBnb3RvIE9VVDsKKyAgICB9CisgICAgcHJpbnRmKCJ0ZXN0X3JhbmRvbV9s
cG1fY2FzZV8yLCBvay4uLlxuIik7CisKKyAgICByZXQgPSB0ZXN0X3JhbmRvbV9scG1fY2FzZV8z
KGxwbSk7CisgICAgaWYocmV0ICE9IDApIHsKKyAgICAgICAgbHBtX3JvdXRlX3Nob3cobHBtKTsK
KyAgICAgICAgcHJpbnRmKCJ0ZXN0X3JhbmRvbV9scG1fY2FzZV8zLCBmYWlsZWQuLi5cbiIpOwor
ICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgZ290byBPVVQ7CisgICAgfQorICAgIHByaW50Zigi
dGVzdF9yYW5kb21fbHBtX2Nhc2VfMywgb2suLi5cbiIpOworCitPVVQ6CisgICAgcnRlX2xwbV9m
cmVlKGxwbSkgOworICAgIHJldHVybiByZXQ7Cit9CisKKwogLyoKICAqIExvb2t1cCBwZXJmb3Jt
YW5jZSB0ZXN0CiAgKi8KLS0KMS44LjUuMiAoQXBwbGUgR2l0LTQ4KQoKCgoKCgoK
>From wenzhuol@shecgisg004.sh.intel.com  Fri Oct 23 07:05:41 2015
Return-Path: <wenzhuol@shecgisg004.sh.intel.com>
Received: from mga02.intel.com (mga02.intel.com [134.134.136.20])
 by dpdk.org (Postfix) with ESMTP id 817C6C34C
 for <dev@dpdk.org>; Fri, 23 Oct 2015 07:05:41 +0200 (CEST)
Received: from fmsmga002.fm.intel.com ([10.253.24.26])
 by orsmga101.jf.intel.com with ESMTP; 22 Oct 2015 22:05:40 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.20,185,1444719600"; d="scan'208";a="833590588"
Received: from shvmail01.sh.intel.com ([10.239.29.42])
 by fmsmga002.fm.intel.com with ESMTP; 22 Oct 2015 22:05:39 -0700
Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com
 [10.239.29.89])
 by shvmail01.sh.intel.com with ESMTP id t9N55cmu012334;
 Fri, 23 Oct 2015 13:05:38 +0800
Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1])
 by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id
 t9N55Y8B023623; Fri, 23 Oct 2015 13:05:36 +0800
Received: (from wenzhuol@localhost)
 by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id t9N55YTV023619;
 Fri, 23 Oct 2015 13:05:34 +0800
From: Wenzhuo Lu <wenzhuo.lu@intel.com>
To: dev@dpdk.org
Date: Fri, 23 Oct 2015 13:05:32 +0800
Message-Id: <1445576732-23589-1-git-send-email-wenzhuo.lu@intel.com>
X-Mailer: git-send-email 1.7.4.1
In-Reply-To: <1444445798-23929-1-git-send-email-wenzhuo.lu@intel.com>
References: <1444445798-23929-1-git-send-email-wenzhuo.lu@intel.com>
Subject: [dpdk-dev] [PATCH v3] ixgbe: Drop flow control frames from VFs
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 23 Oct 2015 05:05:41 -0000

This patch will drop flow control frames from being transmitted
from VSIs.
With this patch in place a malicious VF cannot send flow control
or PFC packets out on the wire.

V2:
Reword the comments.

V3:
Move the check of set_ethertype_anti_spoofing to the top of the function,
to avoid occupying an ethertype_filter entity without using it.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/ixgbe/ixgbe_pf.c | 47 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/drivers/net/ixgbe/ixgbe_pf.c b/drivers/net/ixgbe/ixgbe_pf.c
index fd1c4ca..1627030 100644
--- a/drivers/net/ixgbe/ixgbe_pf.c
+++ b/drivers/net/ixgbe/ixgbe_pf.c
@@ -55,6 +55,7 @@
 #define IXGBE_MAX_VFTA     (128)
 #define IXGBE_VF_MSG_SIZE_DEFAULT 1
 #define IXGBE_VF_GET_QUEUE_MSG_SIZE 5
+#define IXGBE_ETHERTYPE_FLOW_CTRL 0x8808
 
 static inline uint16_t
 dev_num_vf(struct rte_eth_dev *eth_dev)
@@ -166,6 +167,50 @@ void ixgbe_pf_host_uninit(struct rte_eth_dev *eth_dev)
 	*vfinfo = NULL;
 }
 
+static void
+ixgbe_add_tx_flow_control_drop_filter(struct rte_eth_dev *eth_dev)
+{
+	struct ixgbe_hw *hw =
+		IXGBE_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	struct ixgbe_filter_info *filter_info =
+		IXGBE_DEV_PRIVATE_TO_FILTER_INFO(eth_dev->data->dev_private);
+	uint16_t vf_num;
+	int i;
+
+	if (!hw->mac.ops.set_ethertype_anti_spoofing) {
+		RTE_LOG(INFO, PMD, "ether type anti-spoofing is not"
+			" supported.\n");
+		return;
+	}
+
+	/* occupy an entity of ether type filter */
+	for (i = 0; i < IXGBE_MAX_ETQF_FILTERS; i++) {
+		if (!(filter_info->ethertype_mask & (1 << i))) {
+			filter_info->ethertype_mask |= 1 << i;
+			filter_info->ethertype_filters[i] =
+				IXGBE_ETHERTYPE_FLOW_CTRL;
+			break;
+		}
+	}
+	if (i == IXGBE_MAX_ETQF_FILTERS) {
+		RTE_LOG(ERR, PMD, "Cannot find an unused ether type filter"
+			" entity for flow control.\n");
+		return;
+	}
+
+	IXGBE_WRITE_REG(hw, IXGBE_ETQF(i),
+			(IXGBE_ETQF_FILTER_EN |
+			IXGBE_ETQF_TX_ANTISPOOF |
+			IXGBE_ETHERTYPE_FLOW_CTRL));
+
+	vf_num = dev_num_vf(eth_dev);
+	for (i = 0; i < vf_num; i++) {
+		hw->mac.ops.set_ethertype_anti_spoofing(hw, true, i);
+	}
+
+	return;
+}
+
 int ixgbe_pf_host_configure(struct rte_eth_dev *eth_dev)
 {
 	uint32_t vtctl, fcrth;
@@ -262,6 +307,8 @@ int ixgbe_pf_host_configure(struct rte_eth_dev *eth_dev)
 		IXGBE_WRITE_REG(hw, IXGBE_FCRTH_82599(i), fcrth);
 	}
 
+	ixgbe_add_tx_flow_control_drop_filter(eth_dev);
+
 	return 0;
 }
 
-- 
1.9.3