From owner-freebsd-wireless@FreeBSD.ORG Wed Jan 11 04:40:59 2012 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9BE5A1065729 for ; Wed, 11 Jan 2012 04:40:59 +0000 (UTC) (envelope-from monthadar@gmail.com) Received: from mail-iy0-f182.google.com (mail-iy0-f182.google.com [209.85.210.182]) by mx1.freebsd.org (Postfix) with ESMTP id 64AA68FC0A for ; Wed, 11 Jan 2012 04:40:59 +0000 (UTC) Received: by iazz13 with SMTP id z13so728409iaz.13 for ; Tue, 10 Jan 2012 20:40:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=HS5V38v8jPmLjgTPvbUsjYhk6abGltF94oZkTqxi25A=; b=GtzbBQK62zEBVZlQ40Xykh0RwfGgCU+rahgn+FaGIuRLzc6JGhqddbEq+rArusd4+w JrgxCo5BE9KUil3BuGhaxSfLMYw3syq8PZPx87azx9640vXpRMpNaQ1MjbTQnsIY/IaE Qsn9z9r4c7Qgu9perJ1GXzfsr5v6zhHlck0tw= MIME-Version: 1.0 Received: by 10.50.180.233 with SMTP id dr9mr4942074igc.11.1326256858984; Tue, 10 Jan 2012 20:40:58 -0800 (PST) Received: by 10.50.237.68 with HTTP; Tue, 10 Jan 2012 20:40:58 -0800 (PST) Date: Wed, 11 Jan 2012 05:40:58 +0100 Message-ID: From: Monthadar Al Jaberi To: freebsd-wireless@freebsd.org Content-Type: multipart/mixed; boundary=14dae9340cc7f5f09404b6393c41 Subject: 11s mesh path setup problem X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jan 2012 04:40:59 -0000 --14dae9340cc7f5f09404b6393c41 Content-Type: text/plain; charset=ISO-8859-1 Hi, Current hwmp cant handle to setup a path between 4 nodes in a line topology (among other things it cant handle) Below you will find a small patch to correct this with some debug output cleanup and comments. After the patch, you should be able to e.g. ping from node 4 to node 1 and get a ping reply back, he is what the output from ifconfig list mesh should look like on all 4 nodes after one ping packet. Node1# ifconfig wlan1 list mesh DEST NEXT HOP HOPS METRIC LIFETIME MSEQ FLAGS Node2 Node2 1 17018 5000 0 V Node3 Node2 2 34036 5000 0 V Node4 Node2 3 34036 5000 3 V Node2# ifconfig wlan1 list mesh DEST NEXT HOP HOPS METRIC LIFETIME MSEQ FLAGS Node1 Node1 1 17018 5000 3 V Node3 Node3 1 17018 5000 0 V Node4 Node3 2 17018 5000 3 V Node3# ifconfig wlan1 list mesh DEST NEXT HOP HOPS METRIC LIFETIME MSEQ FLAGS Node2 Node2 1 0 5000 0 V Node4 Node4 1 0 5000 3 V Node1 Node2 2 34036 5000 3 V Node4# ifconfig wlan1 list mesh DEST NEXT HOP HOPS METRIC LIFETIME MSEQ FLAGS Node3 Node3 1 0 5000 0 V Node1 Node3 3 51054 5000 3 V If anyone could try it that would be nice, either on real hardware as I did above, or in a simulated environment (https://github.com/monthadar/FreeBSD-IEEE80211s-simulator/wiki) :) and please do test other scenarios :) patch is attached. -- Monthadar Al Jaberi --14dae9340cc7f5f09404b6393c41 Content-Type: text/x-patch; charset=US-ASCII; name="patch_11s_4_nodes_in_line.patch" Content-Disposition: attachment; filename="patch_11s_4_nodes_in_line.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gx9v1nv70 ZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfZXRoZXJzdWJyLmMgYi9zeXMvbmV0L2lmX2V0aGVyc3Vi ci5jCmluZGV4IDFkMTZhZTYuLmZjODZjOTQgMTAwNjQ0Ci0tLSBhL3N5cy9uZXQvaWZfZXRoZXJz dWJyLmMKKysrIGIvc3lzL25ldC9pZl9ldGhlcnN1YnIuYwpAQCAtOTY4LDkgKzk2OCwxMyBAQCBk aXNjYXJkOgogY2hhciAqCiBldGhlcl9zcHJpbnRmKGNvbnN0IHVfY2hhciAqYXApCiB7Ci0Jc3Rh dGljIGNoYXIgZXRoZXJidWZbMThdOwotCXNucHJpbnRmKGV0aGVyYnVmLCBzaXplb2YgKGV0aGVy YnVmKSwgIiU2RCIsIGFwLCAiOiIpOwotCXJldHVybiAoZXRoZXJidWYpOworCXN0YXRpYyBjaGFy IGV0aGVyYnVmWzZdWzE4XTsKKwlzdGF0aWMgaW50IGkgPSAwOworCWNoYXIgKmJ1ZjsKKwlzbnBy aW50ZihldGhlcmJ1ZltpXSwgc2l6ZW9mIChldGhlcmJ1ZlswXSksICIlNkQiLCBhcCwgIjoiKTsK KwlidWYgPSBldGhlcmJ1ZltpXTsKKwlpID0gKGkrMSklMjsKKwlyZXR1cm4gKGJ1Zik7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2h3bXAuYyBiL3N5cy9uZXQ4 MDIxMS9pZWVlODAyMTFfaHdtcC5jCmluZGV4IDc4NzI5ZmMuLjdjOTkzNTEgMTAwNjQ0Ci0tLSBh L3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaHdtcC5jCisrKyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAy MTFfaHdtcC5jCkBAIC0xMzksOSArMTM5LDEzIEBAIHN0YXRpYyBjb25zdCB1aW50OF90CWJyb2Fk Y2FzdGFkZHJbSUVFRTgwMjExX0FERFJfTEVOXSA9CiB0eXBlZGVmIHVpbnQzMl90IGllZWU4MDIx MV9od21wX3NlcTsKICNkZWZpbmUJSFdNUF9TRVFfTFQoYSwgYikJKChpbnQzMl90KSgoYSktKGIp KSA8IDApCiAjZGVmaW5lCUhXTVBfU0VRX0xFUShhLCBiKQkoKGludDMyX3QpKChhKS0oYikpIDw9 IDApCisjZGVmaW5lCUhXTVBfU0VRX0VRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPT0gMCkK ICNkZWZpbmUJSFdNUF9TRVFfR1QoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA+IDApCiAjZGVm aW5lCUhXTVBfU0VRX0dFUShhLCBiKQkoKGludDMyX3QpKChhKS0oYikpID49IDApCiAKKy8qIFRo ZSBsb25nZXIgb25lIG9mIHRoZSBsaWZldGltZSBzaG91bGQgYmUgc3RvcmVkIGFzIG5ldyBsaWZl dGltZSAqLworI2RlZmluZSBNRVNIX1JPVVRFX0xJRkVUSU1FX01BWChhLCBiKQkoYSA+IGIgPyBh IDogYikKKwogLyoKICAqIFByaXZhdGUgZXh0ZW5zaW9uIG9mIGllZWU4MDIxMV9tZXNoX3JvdXRl LgogICovCkBAIC02NzYsOCArNjgwLDEwIEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAy MTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIHsKIAlzdHJ1Y3QgaWVlZTgw MjExX21lc2hfc3RhdGUgKm1zID0gdmFwLT5pdl9tZXNoOwogCXN0cnVjdCBpZWVlODAyMTFfbWVz aF9yb3V0ZSAqcnQgPSBOVUxMOwotCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9yb3V0ZSAqcnRvcmln ID0gTlVMTDsKLQlzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUgKmhyb3JpZzsKKwlzdHJ1Y3Qg aWVlZTgwMjExX21lc2hfcm91dGUgKnJ0b3JpZyA9IE5VTEw7IC8vIE9yaWdpbmF0b3Igcm91dGUK KwlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfcm91dGUgKnJ0dGFyZyA9IE5VTEw7IC8vIFRhcmdldCBy b3V0ZQorCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSAqaHJvcmlnID0gTlVMTDsKKwlzdHJ1 Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUgKmhydGFyZyA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIx MV9od21wX3N0YXRlICpocyA9IHZhcC0+aXZfaHdtcDsKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hw cmVwX2llIHByZXA7CiAKQEAgLTY5Miw0NiArNjk4LDgzIEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVj dCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJcmV0dXJu OwogCiAJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCSAgICAi cmVjZWl2ZWQgUFJFUSwgc291cmNlICVzIiwgZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdh ZGRyKSk7CisJICAgICJyZWNlaXZlZCBQUkVRLCBvcmlnaW5hdG9yICVzLCB0YXJnZXQgJXMiLCBl dGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpLCBldGhlcl9zcHJpbnRmKFBSRVFfVEFE RFIoMCkpKTsKIAogCS8qCi0JICogQWNjZXB0YW5jZSBjcml0ZXJpYTogaWYgdGhlIFBSRVEgaXMg bm90IGZvciB1cyBhbmQKLQkgKiBmb3J3YXJkaW5nIGlzIGRpc2FibGVkLCBkaXNjYXJkIHRoaXMg UFJFUS4KKwkgKiBBY2NlcHRhbmNlIGNyaXRlcmlhOiBpZiB0aGUgUFJFUSBpcyBub3QgZm9yIHVz IG9yIG5vdCBicm9hZGNhc3QKKwkgKiBBTkQgZm9yd2FyZGluZyBpcyBkaXNhYmxlZCwgZGlzY2Fy ZCB0aGlzIFBSRVEuCiAJICovCi0JaWYgKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRk ciwgUFJFUV9UQUREUigwKSkgJiYKKwlpZiAoKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215 YWRkciwgUFJFUV9UQUREUigwKSkgfHwgLyogbmVlZCB0byBjaGVjayBQUk9YWSAqLworCQkhSUVF RTgwMjExX0lTX01VTFRJQ0FTVChQUkVRX1RBRERSKDApKSkgJiYKIAkgICAgIShtcy0+bXNfZmxh Z3MgJiBJRUVFODAyMTFfTUVTSEZMQUdTX0ZXRCkpIHsKIAkJSUVFRTgwMjExX0RJU0NBUkRfTUFD KHZhcCwgSUVFRTgwMjExX01TR19IV01QLAogCQkgICAgcHJlcS0+cHJlcV9vcmlnYWRkciwgTlVM TCwgIiVzIiwgIm5vdCBhY2NlcHRpbmcgUFJFUSIpOwogCQlyZXR1cm47CiAJfQorCS8qCisJICog QWNjZXB0YW5jZSBjcml0ZXJpYTogaWYgdW5pY2FzdCBhZGRyZXNzZWQgCisJICogQU5EIG5vIHZh bGlkIGZvcndhcmRpbmcgZm9yIFRhcmdldCBvZiBQUkVRLCBkaXNjYXJkIHRoaXMgUFJFUS4KKwkg Ki8KKwlydHRhcmcgPSBpZWVlODAyMTFfbWVzaF9ydF9maW5kKHZhcCwgUFJFUV9UQUREUigwKSk7 CisJaWYocnR0YXJnICE9IE5VTEwpCisJCWhydGFyZyA9IElFRUU4MDIxMV9NRVNIX1JPVVRFX1BS SVYocnR0YXJnLCBzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUpOworCWlmKChwcmVxLT5wcmVx X2ZsYWdzICYgSUVFRTgwMjExX01FU0hQUkVRX0ZMQUdTX0FNKSA9PSAwICYmIC8qIGFkZHJlc3Mg bW9kZTogdWNhc3QgKi8KKwkJcnR0YXJnID09IE5VTEwgJiYKKwkJIUlFRUU4MDIxMV9BRERSX0VR KHZhcC0+aXZfbXlhZGRyLCBQUkVRX1RBRERSKDApKSkgeworCQlJRUVFODAyMTFfRElTQ0FSRF9N QUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsCisJCSAgICBwcmVxLT5wcmVxX29yaWdhZGRyLCBO VUxMLCAidW5pY2FzdCBhZGRyZXNzZWQgUFJFUSBvZiB1bmtub3duIHRhcmdldCAlcyIsCisJCQkJ ICAgICAgZXRoZXJfc3ByaW50ZihQUkVRX1RBRERSKDApKSk7CisJCXJldHVybjsKKwl9CisJCisJ LyogUFJFUSBBQ0NFUFRFRCAqLworCiAJcnRvcmlnID0gaWVlZTgwMjExX21lc2hfcnRfZmluZCh2 YXAsIHByZXEtPnByZXFfb3JpZ2FkZHIpOwotCWlmIChydG9yaWcgPT0gTlVMTCkKKwlpZiAocnRv cmlnID09IE5VTEwpewogCQlydG9yaWcgPSBpZWVlODAyMTFfbWVzaF9ydF9hZGQodmFwLCBwcmVx LT5wcmVxX29yaWdhZGRyKTsKKwkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hX TVAsIG5pLAorCQkJImFkZGluZyBvcmlnaW5hdG9yICVzIiwgZXRoZXJfc3ByaW50ZihwcmVxLT5w cmVxX29yaWdhZGRyKSk7CisJfQogCWlmIChydG9yaWcgPT0gTlVMTCkgewogCQkvKiBYWFggc3Rh dCAqLwogCQlyZXR1cm47CiAJfQogCWhyb3JpZyA9IElFRUU4MDIxMV9NRVNIX1JPVVRFX1BSSVYo cnRvcmlnLCBzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUpOwotCS8qCi0JICogU2VxdWVuY2Ug bnVtYmVyIHZhbGlkYXRpb24uCisKKwkvKiBEYXRhIGNyZWF0aW9uIGFuZCB1cGRhdGUgb2YgZm9y d2FyZGluZyBpbmZvcm1hdGlvbgorCSAqIGFjY29yZGluZyB0byBUYWJsZSAxMUMtOCBmb3Igb3Jp Z2luYXRvciBtZXNoIFNUQS4KIAkgKi8KLQlpZiAoSFdNUF9TRVFfTEVRKHByZXEtPnByZXFfaWQs IGhyb3JpZy0+aHJfcHJlcWlkKSAmJgotCSAgICBIV01QX1NFUV9MRVEocHJlcS0+cHJlcV9vcmln c2VxLCBocm9yaWctPmhyX3NlcSkpIHsKKwlpZihIV01QX1NFUV9HVChwcmVxLT5wcmVxX29yaWdz ZXEsIGhyb3JpZy0+aHJfc2VxKSB8fAorCQkoSFdNUF9TRVFfRVEocHJlcS0+cHJlcV9vcmlnc2Vx LCBocm9yaWctPmhyX3NlcSkgJiYgcHJlcS0+cHJlcV9tZXRyaWMgPCBydG9yaWctPnJ0X21ldHJp YykpeworCQlocm9yaWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsKKwkJSUVFRTgwMjEx X0FERFJfQ09QWShydG9yaWctPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsKKwkJcnRvcmlnLT5y dF9tZXRyaWMgPSBwcmVxLT5wcmVxX21ldHJpYyArCisJCQltcy0+bXNfcG1ldHJpYy0+bXBtX21l dHJpYyhuaSk7CisJCXJ0b3JpZy0+cnRfbmhvcHMgID0gcHJlcS0+cHJlcV9ob3Bjb3VudCArIDE7 CisJCXJ0b3JpZy0+cnRfbGlmZXRpbWUgID0gTUVTSF9ST1VURV9MSUZFVElNRV9NQVgocHJlcS0+ cHJlcV9saWZldGltZSwgcnRvcmlnLT5ydF9saWZldGltZSk7CisJCXJ0b3JpZy0+cnRfZmxhZ3Mg fD0gSUVFRTgwMjExX01FU0hSVF9GTEFHU19WQUxJRDsgLyogcGF0aCB0byBvcmlnIGlzIHZhbGlk IG5vdyAqLworCX1lbHNlIGlmKGhydGFyZyAhPSBOVUxMICYmIAorCQlIV01QX1NFUV9FUShocnRh cmctPmhyX3NlcSwgUFJFUV9UU0VRKDApKSAmJgorCQkocnRvcmlnLT5ydF9mbGFncyAmIElFRUU4 MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQpID09IDApewogCQlJRUVFODAyMTFfTk9URSh2YXAsIElF RUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCSAgICAiZGlzY2FyZCBQUkVRIGZyb20gJXMsIG9sZCBz ZXEgbm8gJXUgPD0gJXUiLAotCQkgICAgZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRy KSwKLQkJICAgIHByZXEtPnByZXFfb3JpZ3NlcSwgaHJvcmlnLT5ocl9zZXEpOworCQkJInJlY2Vp dmVkIFBSRVEsIG9yaWdpbmF0b3IgJXMiLCAidW5rbm93biIpOworCX1lbHNleworCQlJRUVFODAy MTFfRElTQ0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsCisJCSAgICBwcmVxLT5wcmVx X29yaWdhZGRyLCBOVUxMLCAiJXMsIGxhc3Qgc2VlbiBvcmlnLnNlcSAlZCwgcHJlcSBvcmlnLnNl cSAlZCIsICJkaXNjYXJkaW5nIFBSRVEiLCBocm9yaWctPmhyX3NlcSwgcHJlcS0+cHJlcV9vcmln c2VxKTsKIAkJcmV0dXJuOwogCX0KLQlocm9yaWctPmhyX3ByZXFpZCA9IHByZXEtPnByZXFfaWQ7 Ci0JaHJvcmlnLT5ocl9zZXEgPSBwcmVxLT5wcmVxX29yaWdzZXE7CisJCisJLyogCisJICogRm9y d2FyZGluZyBpbmZvcm1hdGlvbiBmb3IgdHJhbnNtaXR0ZXIgbWVzaCBTVEEgCisJICogW09QVElP TkFMOiBpZiBtZXRyaWMgaW1wcm92ZWRdCisJICovCiAKIAkvKgogCSAqIENoZWNrIGlmIHRoZSBQ UkVRIGlzIGFkZHJlc3NlZCB0byB1cy4KIAkgKi8KIAlpZiAoSUVFRTgwMjExX0FERFJfRVEodmFw LT5pdl9teWFkZHIsIFBSRVFfVEFERFIoMCkpKSB7CiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVF RTgwMjExX01TR19IV01QLCBuaSwKLQkJICAgICJyZXBseSB0byAlcyIsIGV0aGVyX3NwcmludGYo cHJlcS0+cHJlcV9vcmlnYWRkcikpOworCQkgICAgInJlcGx5IFBSRVAsIG9yaWdpbmF0b3IgJXMi LCBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpKTsKIAkJLyoKIAkJICogQnVpbGQg YW5kIHNlbmQgYSBQUkVQIGZyYW1lLgogCQkgKi8KQEAgLTgxOSwxMSArODYyLDEzIEBAIGh3bXBf cmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2Rl ICpuaSwKIAkJCWlmIChwcmVxLT5wcmVxX3R0bCA+IDEgJiYKIAkJCSAgICBwcmVxLT5wcmVxX2hv cGNvdW50IDwgaHMtPmhzX21heGhvcHMpIHsKIAkJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4 MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkJICAgICJmb3J3YXJkIFBSRVEgZnJvbSAlcyIsCi0JCQkJ ICAgIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkcikpOworCQkJCSAgICAiZm9yd2Fy ZCBQUkVRLCBvcmlnaW5hdG9yICVzLCB0byAlcyIsCisJCQkJICAgIGV0aGVyX3NwcmludGYocHJl cS0+cHJlcV9vcmlnYWRkciksIGV0aGVyX3NwcmludGYocnQtPnJ0X25leHRob3ApKTsKIAkJCQkv KgogCQkJCSAqIFByb3BhZ2F0ZSB0aGUgb3JpZ2luYWwgUFJFUS4KKwkJCQkgKiBQUkVRIGlzIHVu aWNhc3Qgbm93IHRvIHJ0LT5ydF9uZXh0aG9wCiAJCQkJICovCisJCQkJcHByZXEucHJlcV9mbGFn cyAmPSB+SUVFRTgwMjExX01FU0hQUkVRX0ZMQUdTX0FNOwogCQkJCXBwcmVxLnByZXFfaG9wY291 bnQgKz0gMTsKIAkJCQlwcHJlcS5wcmVxX3R0bCAtPSAxOwogCQkJCXBwcmVxLnByZXFfbWV0cmlj ICs9CkBAIC04MzcsNyArODgyLDcgQEAgaHdtcF9yZWN2X3ByZXEoc3RydWN0IGllZWU4MDIxMXZh cCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAogCQkJCXBwcmVxLnByZXFfdGFyZ2V0 c1swXS50YXJnZXRfZmxhZ3MgJj0KIAkJCQkgICAgfklFRUU4MDIxMV9NRVNIUFJFUV9URkxBR1Nf UkY7CiAJCQkJaHdtcF9zZW5kX3ByZXEobmksIHZhcC0+aXZfbXlhZGRyLAotCQkJCSAgICBicm9h ZGNhc3RhZGRyLCAmcHByZXEpOworCQkJCSAgICBydC0+cnRfbmV4dGhvcCwgJnBwcmVxKTsKIAkJ CX0KIAkJCS8qCiAJCQkgKiBDaGVjayBpZiB3ZSBjYW4gc2VuZCBhbiBpbnRlcm1lZGlhdGUgUGF0 aCBSZXBseSwKQEAgLTg3MCwyNiArOTE1LDExIEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVl ODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJICovCiAJCX0gZWxz ZSBpZiAocHJlcS0+cHJlcV90dGwgPiAxICYmCiAJCSAgICBwcmVxLT5wcmVxX2hvcGNvdW50IDwg aHMtPmhzX21heGhvcHMpIHsKLQkJCWlmIChydCA9PSBOVUxMKSB7Ci0JCQkJcnQgPSBpZWVlODAy MTFfbWVzaF9ydF9hZGQodmFwLCBQUkVRX1RBRERSKDApKTsKLQkJCQlpZiAocnQgPT0gTlVMTCkg ewotCQkJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwKLQkJCQkJICAg IG5pLCAidW5hYmxlIHRvIGFkZCBQUkVRIHBhdGggdG8gJXMiLAotCQkJCQkgICAgZXRoZXJfc3By aW50ZihQUkVRX1RBRERSKDApKSk7Ci0JCQkJCXZhcC0+aXZfc3RhdHMuaXNfbWVzaF9ydGFkZGZh aWxlZCsrOwotCQkJCQlyZXR1cm47Ci0JCQkJfQotCQkJfQotCQkJcnQtPnJ0X21ldHJpYyA9IHBy ZXEtPnByZXFfbWV0cmljOwotCQkJcnQtPnJ0X2xpZmV0aW1lID0gcHJlcS0+cHJlcV9saWZldGlt ZTsKLQkJCWhyb3JpZyA9IElFRUU4MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsCi0JCQkgICAgc3Ry dWN0IGllZWU4MDIxMV9od21wX3JvdXRlKTsKLQkJCWhyb3JpZy0+aHJfc2VxID0gcHJlcS0+cHJl cV9vcmlnc2VxOwotCQkJaHJvcmlnLT5ocl9wcmVxaWQgPSBwcmVxLT5wcmVxX2lkOwotCiAJCQlJ RUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImZvcndh cmQgUFJFUSBmcm9tICVzIiwKLQkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2Fk ZHIpKTsKKwkJCSAgICAiYnJvYWRjYXN0IFBSRVEsIG9yaWdpbmF0b3IgJXMsIHRhcmdldCAlcyIs CisJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSwKKwkJCQkgICAgICAg ZXRoZXJfc3ByaW50ZihQUkVRX1RBRERSKDApKSk7CisJCQlwcHJlcS5wcmVxX2ZsYWdzIHw9IElF RUU4MDIxMV9NRVNIUFJFUV9GTEFHU19BTTsKIAkJCXBwcmVxLnByZXFfaG9wY291bnQgKz0gMTsK IAkJCXBwcmVxLnByZXFfdHRsIC09IDE7CiAJCQlwcHJlcS5wcmVxX21ldHJpYyArPSBtcy0+bXNf cG1ldHJpYy0+bXBtX21ldHJpYyhuaSk7CkBAIC05NTYsMTIgKzk4NiwxNCBAQCBod21wX3JlY3Zf cHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmks CiAJCXJldHVybjsKIAogCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBu aSwKLQkgICAgInJlY2VpdmVkIFBSRVAgZnJvbSAlcyIsIGV0aGVyX3NwcmludGYocHJlcC0+cHJl cF90YXJnZXRhZGRyKSk7CisJICAgICJyZWNlaXZlZCBQUkVQLCBvcmlnaW5hdG9yICVzLCB0YXJn ZXQgJXMiLCBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfb3JpZ2FkZHIpLCBldGhlcl9zcHJpbnRm KHByZXAtPnByZXBfdGFyZ2V0YWRkcikpOwogCiAJcnQgPSBpZWVlODAyMTFfbWVzaF9ydF9maW5k KHZhcCwgcHJlcC0+cHJlcF90YXJnZXRhZGRyKTsKIAlpZiAocnQgPT0gTlVMTCkgewogCQkvKgot CQkgKiBJZiB3ZSBoYXZlIG5vIGVudHJ5IHRoaXMgY291bGQgYmUgYSByZXBseSB0byBhIHJvb3Qg UFJFUS4KKwkJICogSWYgd2UgaGF2ZSBubyBlbnRyeSB0aGlzIGNvdWxkIGJlIGEgcmVwbHkgdG8g YSByb290IFBSRVEuIAorCQkgKiBYWFg6IG5vdCB0cnVlIGFueW1vcmUgY2F1c2Ugd2UgZG9udCBj cmVhdGUgZW50cnkgZm9yIHRhcmdldCB3aGVuCisJCSAqIHByb3BhZ2F0aW5nIFBSRVFzIGxpa2Ug dGhlIG9sZCBjb2RlIGRpZC4KIAkJICovCiAJCWlmIChocy0+aHNfcm9vdG1vZGUgIT0gSUVFRTgw MjExX0hXTVBfUk9PVE1PREVfRElTQUJMRUQpIHsKIAkJCXJ0ID0gaWVlZTgwMjExX21lc2hfcnRf YWRkKHZhcCwgcHJlcC0+cHJlcF90YXJnZXRhZGRyKTsKQEAgLTk4OSwxMyArMTAyMSwyMyBAQCBo d21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFf bm9kZSAqbmksCiAJICogU2VxdWVuY2UgbnVtYmVyIHZhbGlkYXRpb24uCiAJICovCiAJaHIgPSBJ RUVFODAyMTFfTUVTSF9ST1VURV9QUklWKHJ0LCBzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUp OwotCWlmIChIV01QX1NFUV9MRVEocHJlcC0+cHJlcF90YXJnZXRzZXEsIGhyLT5ocl9zZXEpKSB7 CisJaWYoKHJ0LT5ydF9mbGFncyAmIElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQpKXsgLy8g QWNjZXB0IGlmIHJvdXRlIGlzIG5vdCB2YWxpZAorCSAgaWYgKEhXTVBfU0VRX0xUKHByZXAtPnBy ZXBfdGFyZ2V0c2VxLCBoci0+aHJfc2VxKSkgewogCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4 MDIxMV9NU0dfSFdNUCwgbmksCi0JCSAgICAiZGlzY2FyZCBQUkVQIGZyb20gJXMsIG9sZCBzZXEg bm8gJXUgPD0gJXUiLAorCQkgICAgImRpc2NhcmQgUFJFUCBmcm9tICVzLCBvbGQgc2VxIG5vICV1 IDwgJXUiLAogCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAogCQkg ICAgcHJlcC0+cHJlcF90YXJnZXRzZXEsIGhyLT5ocl9zZXEpOwogCQlyZXR1cm47CisJICB9ZWxz ZSBpZihIV01QX1NFUV9MRVEocHJlcC0+cHJlcF90YXJnZXRzZXEsIGhyLT5ocl9zZXEpICYmIC8v SWYgc2FtZSBzZXFubyBjb21wYXJlIG1ldHJpYworCQlwcmVwLT5wcmVwX21ldHJpYyA+IHJ0LT5y dF9tZXRyaWMpIHsKKwkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5p LAorCQkgICAgImRpc2NhcmQgUFJFUCBmcm9tICVzLCBuZXcgbWV0cmljICV1ID4gJXUiLAorCQkg ICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkgICAgcHJlcC0+cHJl cF9tZXRyaWMsIHJ0LT5ydF9tZXRyaWMpOworCQlyZXR1cm47CisJICB9CiAJfQorCQogCWhyLT5o cl9zZXEgPSBwcmVwLT5wcmVwX3RhcmdldHNlcTsKIAkvKgogCSAqIElmIGl0J3MgTk9UIGZvciB1 cywgcHJvcGFnYXRlIHRoZSBQUkVQLgpAQCAtMTAxMiw3ICsxMDU0LDYgQEAgaHdtcF9yZWN2X3By ZXAoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAog CQlwcHJlcC5wcmVwX2hvcGNvdW50ICs9IDE7CiAJCXBwcmVwLnByZXBfdHRsIC09IDE7CiAJCXBw cmVwLnByZXBfbWV0cmljICs9IG1zLT5tc19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKLQkJSUVF RTgwMjExX0FERFJfQ09QWShwcHJlcC5wcmVwX3RhcmdldGFkZHIsIHZhcC0+aXZfbXlhZGRyKTsK IAkJaHdtcF9zZW5kX3ByZXAobmksIHZhcC0+aXZfbXlhZGRyLCBicm9hZGNhc3RhZGRyLCAmcHBy ZXApOwogCX0KIAlociA9IElFRUU4MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVl ODAyMTFfaHdtcF9yb3V0ZSk7CkBAIC0xMDIyLDcgKzEwNjMsNyBAQCBod21wX3JlY3ZfcHJlcChz dHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCSAg ICAiZGlzY2FyZCBQUkVQIGZvciAlcywgcm91dGUgaXMgbWFya2VkIFBST1hZIiwKIAkJICAgIGV0 aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7CiAJCXZhcC0+aXZfc3RhdHMuaXNf aHdtcF9wcm94eSsrOwotCX0gZWxzZSBpZiAocHJlcC0+cHJlcF9vcmlnc2VxID09IGhyLT5ocl9v cmlnc2VxKSB7CisJfSBlbHNlIGlmIChoci0+aHJfb3JpZ3NlcSA9PSAwIHx8IHByZXAtPnByZXBf b3JpZ3NlcSA9PSBoci0+aHJfb3JpZ3NlcSkgeyAvL2ZpcnN0IHBhdGggZGlzY292ZXJ5IGFsd2F5 cyBmYWlsIQogCQkvKgogCQkgKiBDaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBwYXRoIHRvIHRo aXMgbm9kZS4KIAkJICogSWYgd2UgZG8sIGNoZWNrIGlmIHRoaXMgcGF0aCByZXBseSBjb250YWlu cyBhCkBAIC0xMDMxLDE1ICsxMDcyLDE2IEBAIGh3bXBfcmVjdl9wcmVwKHN0cnVjdCBpZWVlODAy MTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJaWYgKChydC0+cnRfZmxh Z3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEKSA9PSAwIHx8CiAJCSAgICAocHJlcC0+ cHJlcF9ob3Bjb3VudCA8IHJ0LT5ydF9uaG9wcyB8fAogCQkgICAgIHByZXAtPnByZXBfbWV0cmlj IDwgcnQtPnJ0X21ldHJpYykpIHsKKwkJCWhyLT5ocl9vcmlnc2VxID0gcHJlcC0+cHJlcF9vcmln c2VxOwogCQkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAogCQkJ ICAgICIlcyBwYXRoIHRvICVzLCBob3Bjb3VudCAlZDolZCBtZXRyaWMgJWQ6JWQiLAogCQkJICAg IHJ0LT5ydF9mbGFncyAmIElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQgPwogCQkJCSJwcmVm ZXIiIDogInVwZGF0ZSIsCi0JCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX29yaWdhZGRy KSwKLQkJCSAgICBydC0+cnRfbmhvcHMsIHByZXAtPnByZXBfaG9wY291bnQsCisJCQkgICAgZXRo ZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJICAgIHJ0LT5ydF9uaG9wcywg cHJlcC0+cHJlcF9ob3Bjb3VudCArIDEsCiAJCQkgICAgcnQtPnJ0X21ldHJpYywgcHJlcC0+cHJl cF9tZXRyaWMpOwogCQkJSUVFRTgwMjExX0FERFJfQ09QWShydC0+cnRfbmV4dGhvcCwgd2gtPmlf YWRkcjIpOwotCQkJcnQtPnJ0X25ob3BzID0gcHJlcC0+cHJlcF9ob3Bjb3VudDsKKwkJCXJ0LT5y dF9uaG9wcyA9IHByZXAtPnByZXBfaG9wY291bnQgKyAxOwogCQkJcnQtPnJ0X2xpZmV0aW1lID0g cHJlcC0+cHJlcF9saWZldGltZTsKIAkJCXJ0LT5ydF9tZXRyaWMgPSBwcmVwLT5wcmVwX21ldHJp YzsKIAkJCXJ0LT5ydF9mbGFncyB8PSBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEOwpAQCAt MTA1Miw5ICsxMDk0LDkgQEAgaHdtcF9yZWN2X3ByZXAoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFw LCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAogCQl9CiAJfSBlbHNlIHsKIAkJSUVFRTgwMjEx X05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkgICAgImRpc2NhcmQgUFJFUCBm b3IgJXMsIHdyb25nIHNlcW5vICV1ICE9ICV1IiwKKwkJICAgICJkaXNjYXJkIFBSRVAgZm9yICVz LCB3cm9uZyBvcmlnIHNlcW5vICV1ICE9ICV1IiwKIAkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+ cHJlcF90YXJnZXRhZGRyKSwgcHJlcC0+cHJlcF9vcmlnc2VxLAotCQkgICAgaHItPmhyX3NlcSk7 CisJCSAgICBoci0+aHJfb3JpZ3NlcSk7CiAJCXZhcC0+aXZfc3RhdHMuaXNfaHdtcF93cm9uZ3Nl cSsrOwogCX0gCiAJLyoKQEAgLTEzMjMsMTMgKzEzNjUsMTMgQEAgaHdtcF9kaXNjb3ZlcihzdHJ1 Y3QgaWVlZTgwMjExdmFwICp2YXAsCiAJCQkvKiBYWFggY2hlY2sgcHJlcSByZXRyaWVzICovCiAJ CQlzZW5kcHJlcSA9IDE7CiAJCQlJRUVFODAyMTFfTk9URV9NQUModmFwLCBJRUVFODAyMTFfTVNH X0hXTVAsIGRlc3QsCi0JCQkgICAgInN0YXJ0IHBhdGggZGlzY292ZXJ5IChzcmMgJXMpIiwKKwkJ CSAgICAic3RhcnQgcGF0aCBkaXNjb3ZlcnkgKHNyYyAlcyksIHRhcmdldCBzZXEgJXUiLAogCQkJ ICAgIG0gPT0gTlVMTCA/ICI8bm9uZT4iIDogZXRoZXJfc3ByaW50ZigKLQkJCQltdG9kKG0sIHN0 cnVjdCBldGhlcl9oZWFkZXIgKiktPmV0aGVyX3Nob3N0KSk7CisJCQkJbXRvZChtLCBzdHJ1Y3Qg ZXRoZXJfaGVhZGVyICopLT5ldGhlcl9zaG9zdCksIGhyLT5ocl9zZXEpOwogCQkJLyoKIAkJCSAq IFRyeSB0byBkaXNjb3ZlciB0aGUgcGF0aCBmb3IgdGhpcyBub2RlLgogCQkJICovCi0JCQlwcmVx LnByZXFfZmxhZ3MgPSAwOworCQkJcHJlcS5wcmVxX2ZsYWdzID0gSUVFRTgwMjExX01FU0hQUkVR X0ZMQUdTX0FNOyAvKiBHcm91cCBhZGRyZXNzZWQgUFJFUSBDYXNlIEEgKi8KIAkJCXByZXEucHJl cV9ob3Bjb3VudCA9IDA7CiAJCQlwcmVxLnByZXFfdHRsID0gbXMtPm1zX3R0bDsKIAkJCXByZXEu cHJlcV9pZCA9ICsraHMtPmhzX3ByZXFpZDsKQEAgLTEzNDUsNyArMTM4Nyw3IEBAIGh3bXBfZGlz Y292ZXIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAogCQkJaWYgKGllZWU4MDIxMV9od21wX3Jl cGx5Zm9yd2FyZCkKIAkJCQlQUkVRX1RGTEFHUygwKSB8PSBJRUVFODAyMTFfTUVTSFBSRVFfVEZM QUdTX1JGOwogCQkJUFJFUV9URkxBR1MoMCkgfD0gSUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19V U047Ci0JCQlQUkVRX1RTRVEoMCkgPSAwOworCQkJUFJFUV9UU0VRKDApID0gaHItPmhyX3NlcTsK IAkJCS8qIFhYWCBjaGVjayByZXR1cm4gdmFsdWUgKi8KIAkJCWh3bXBfc2VuZF9wcmVxKHZhcC0+ aXZfYnNzLCB2YXAtPml2X215YWRkciwKIAkJCSAgICBicm9hZGNhc3RhZGRyLCAmcHJlcSk7Cg== --14dae9340cc7f5f09404b6393c41--