From owner-freebsd-wireless@freebsd.org Wed Sep 16 05:46:42 2015 Return-Path: Delivered-To: freebsd-wireless@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DCEA19CDD51 for ; Wed, 16 Sep 2015 05:46:42 +0000 (UTC) (envelope-from mgrooms@shrew.net) Received: from mx2.shrew.net (mx2.shrew.net [38.97.5.132]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 580891ECB for ; Wed, 16 Sep 2015 05:46:41 +0000 (UTC) (envelope-from mgrooms@shrew.net) Received: from mail.shrew.net (mail.shrew.prv [10.24.10.20]) by mx2.shrew.net (8.14.7/8.14.7) with ESMTP id t8G5fgFD035421 for ; Wed, 16 Sep 2015 00:41:42 -0500 (CDT) (envelope-from mgrooms@shrew.net) Received: from [10.22.200.30] (cpe-72-179-24-154.austin.res.rr.com [72.179.24.154]) by mail.shrew.net (Postfix) with ESMTPSA id 2C21718B9F3 for ; Wed, 16 Sep 2015 00:41:31 -0500 (CDT) To: freebsd-wireless@freebsd.org From: Matthew Grooms Subject: urtwn and hostap Message-ID: <55F90187.10809@shrew.net> Date: Wed, 16 Sep 2015 00:43:35 -0500 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020602080509020909060107" X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (mx2.shrew.net [10.24.10.11]); Wed, 16 Sep 2015 00:41:42 -0500 (CDT) X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.20 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, 16 Sep 2015 05:46:43 -0000 This is a multi-part message in MIME format. --------------020602080509020909060107 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hey wireless folks, I wanted to setup a Raspberry Pi as a FreeBSD AP and purchased a picked up a few Edimax 802.11 adapters to play with. Unfortunately these aren't supported in hostap mode. As it turns out these Edimax adapters use the RTL8188CUS chipset so I poked around the net and noticed that Linux does support the host AP feature with it's RTL8188CUS driver. I was also able to find a patch for OpenBSD that added support for the RTL8188EU chipset to the urtwn driver ... http://marc.info/?l=openbsd-tech&m=143577648117514&w=2 So I ordered one of these which arrived from China a few weeks later ... http://www.amazon.com/gp/product/B00L28AN88?psc=1&redirect=true&ref_=oh_aui_detailpage_o05_s00 Next I took a stab at porting the patch to FreeBSD. With the attached patch applied, I was able to setup a wlan0 device with the hostap feature. After bridging it with the LAN I could associate with my android phone, obtain an IP address via DHCP, browse a few web pages and watch all the packets pass through the bridge. Sadly, when I attempted to destroy the wlan0 device I got a kernel panic. The screenshot for that is also attached and I'm not sure if I'm going to be able to figure this one out without some help. I'm pretty out of my element here. I assume it's happening in ieee80211_free_node() when IEEE80211_NODE_LOCK() is called. To be clear, the crash only occurs when the adapter is configured in hostap mode with the patch applied. Anyone have any suggestions as to what I should be looking at to prevent this crash? If I can get this working for the RTL8188EU, I'll also take a stab at getting the RTL8188CUS chipset working in hostap mode. That is, assuming I can glean enough info from drivers that support this feature on other open source platforms. It appears to be extremely popular with the Raspberry PI crowd ... http://www.amazon.com/Edimax-EW-7811Un-150Mbps-Raspberry-Supports/dp/B003MTTJOY Thanks in advance, -Matthew --------------020602080509020909060107 Content-Type: text/plain; charset=UTF-8; name="urtwn.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="urtwn.diff" SW5kZXg6IGRldi91c2Ivd2xhbi9pZl91cnR3bi5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRldi91 c2Ivd2xhbi9pZl91cnR3bi5jCShyZXZpc2lvbiAyODczNDIpCisrKyBkZXYvdXNiL3dsYW4v aWZfdXJ0d24uYwkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw4IEBACiBzdGF0aWMg c3RydWN0IG1idWYgKgl1cnR3bl9yeGVvZihzdHJ1Y3QgdXNiX3hmZXIgKiwgc3RydWN0IHVy dHduX2RhdGEgKiwKIAkJCSAgICBpbnQgKiwgaW50OF90ICopOwogc3RhdGljIHZvaWQJCXVy dHduX3R4ZW9mKHN0cnVjdCB1c2JfeGZlciAqLCBzdHJ1Y3QgdXJ0d25fZGF0YSAqKTsKK2lu dAkJCXVydHduX3R4YmNuKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwKKwkJCSAgICBzdHJ1 Y3QgaWVlZTgwMjExX25vZGUgKik7CiBzdGF0aWMgaW50CQl1cnR3bl9hbGxvY19saXN0KHN0 cnVjdCB1cnR3bl9zb2Z0YyAqLAogCQkJICAgIHN0cnVjdCB1cnR3bl9kYXRhW10sIGludCwg aW50KTsKIHN0YXRpYyBpbnQJCXVydHduX2FsbG9jX3J4X2xpc3Qoc3RydWN0IHVydHduX3Nv ZnRjICopOwpAQCAtNDM2LDYgKzQzOCwxMCBAQAogCQl8IElFRUU4MDIxMV9DX1dQQQkJLyog ODAyLjExaSAqLwogCQk7CiAKKwlpZiAoc2MtPmNoaXAgJiBVUlRXTl9DSElQXzg4RSkKKwkJ aWMtPmljX2NhcHMgfD0KKwkJICAgIElFRUU4MDIxMV9DX0hPU1RBUDsJCS8qIEhvc3RBcCBt b2RlIHN1cHBvcnRlZCAqLworCiAJYmFuZHMgPSAwOwogCXNldGJpdCgmYmFuZHMsIElFRUU4 MDIxMV9NT0RFXzExQik7CiAJc2V0Yml0KCZiYW5kcywgSUVFRTgwMjExX01PREVfMTFHKTsK QEAgLTg1Nyw2ICs4NjMsMzYgQEAKIAlzYy0+c2NfdHh0aW1lciA9IDA7CiB9CiAKKy8qCisg KiBQdXNoIGEgYmVhY29uIGZyYW1lIGludG8gdGhlIGNoaXAgYW5kIGNoZWNrIGlmIGl0IHdh cyBhY2NlcHRlZC4gIEJlYWNvbiB3aWxsCisgKiBiZSByZXBlYXRlZCBieSB0aGUgY2hpcCBl dmVyeSBSOTJDX0JDTl9JTlRFUlZBTC4KKyAqLworaW50Cit1cnR3bl90eGJjbihzdHJ1Y3Qg aWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmkpCit7CisJc3Ry dWN0IGllZWU4MDIxMWNvbSAqaWMgPSBuaS0+bmlfaWM7CisJc3RydWN0IHVydHduX3NvZnRj ICpzYyA9IGljLT5pY19zb2Z0YzsKKwlzdHJ1Y3QgdXJ0d25fZGF0YSAqYmY7CisJc3RydWN0 IG1idWYgKm07CisKKwltID0gaWVlZTgwMjExX2JlYWNvbl9hbGxvYyhuaSwgJlVSVFdOX1ZB UCh2YXApLT5ibyk7CisKKwliZiA9IHVydHduX2dldGJ1ZihzYyk7CisJaWYgKGJmID09IE5V TEwpIHsKKwkJbV9mcmVlbShtKTsKKwkJcmV0dXJuIChFTk9CVUZTKTsKKwl9CisKKwlpZiAo dXJ0d25fdHhfc3RhcnQoc2MsIG5pLCBtLCBiZikgIT0gMCkgeworCQlTVEFJTFFfSU5TRVJU X0hFQUQoJnNjLT5zY190eF9pbmFjdGl2ZSwgYmYsIG5leHQpOworCQlyZXR1cm4gKEVJTyk7 CisJfQorCisJc2MtPnNjX3R4dGltZXIgPSA1OworCisJcmV0dXJuICgwKTsKK30KKwogc3Rh dGljIHZvaWQKIHVydHduX2J1bGtfdHhfY2FsbGJhY2soc3RydWN0IHVzYl94ZmVyICp4ZmVy LCB1c2JfZXJyb3JfdCBlcnJvcikKIHsKQEAgLTE0NjYsNiArMTUwMiw3IEBACiAJc3RydWN0 IGllZWU4MDIxMV9ub2RlICpuaTsKIAllbnVtIGllZWU4MDIxMV9zdGF0ZSBvc3RhdGU7CiAJ dWludDMyX3QgcmVnOworCWludCBlcnJvcjsKIAogCW9zdGF0ZSA9IHZhcC0+aXZfc3RhdGU7 CiAJRFBSSU5URigiJXMgLT4gJXNcbiIsIGllZWU4MDIxMV9zdGF0ZV9uYW1lW29zdGF0ZV0s CkBAIC0xNTUzLDIzICsxNTkwLDY4IEBACiAJCX0KIAogCQluaSA9IGllZWU4MDIxMV9yZWZf bm9kZSh2YXAtPml2X2Jzcyk7Ci0JCS8qIFNldCBtZWRpYSBzdGF0dXMgdG8gJ0Fzc29jaWF0 ZWQnLiAqLwotCQlyZWcgPSB1cnR3bl9yZWFkXzQoc2MsIFI5MkNfQ1IpOwotCQlyZWcgPSBS VyhyZWcsIFI5MkNfQ1JfTkVUVFlQRSwgUjkyQ19DUl9ORVRUWVBFX0lORlJBKTsKLQkJdXJ0 d25fd3JpdGVfNChzYywgUjkyQ19DUiwgcmVnKTsKIAotCQkvKiBTZXQgQlNTSUQuICovCi0J CXVydHduX3dyaXRlXzQoc2MsIFI5MkNfQlNTSUQgKyAwLCBMRV9SRUFEXzQoJm5pLT5uaV9i c3NpZFswXSkpOwotCQl1cnR3bl93cml0ZV80KHNjLCBSOTJDX0JTU0lEICsgNCwgTEVfUkVB RF8yKCZuaS0+bmlfYnNzaWRbNF0pKTsKKwkJaWYgKGljLT5pY19vcG1vZGUgPT0gSUVFRTgw MjExX01fU1RBKSB7CisJCQkvKiBTZXQgQlNTSUQuICovCisJCQl1cnR3bl93cml0ZV80KHNj LCBSOTJDX0JTU0lEICsgMCwKKwkJCQlMRV9SRUFEXzQoJm5pLT5uaV9ic3NpZFswXSkpOwor CQkJdXJ0d25fd3JpdGVfNChzYywgUjkyQ19CU1NJRCArIDQsCisJCQkJTEVfUkVBRF8yKCZu aS0+bmlfYnNzaWRbNF0pKTsKIAotCQlpZiAoaWMtPmljX2N1cm1vZGUgPT0gSUVFRTgwMjEx X01PREVfMTFCKQotCQkJdXJ0d25fd3JpdGVfMShzYywgUjkyQ19JTklSVFNfUkFURV9TRUws IDApOwotCQllbHNlCS8qIDgwMi4xMWIvZyAqLwotCQkJdXJ0d25fd3JpdGVfMShzYywgUjky Q19JTklSVFNfUkFURV9TRUwsIDMpOworCQkJaWYgKGljLT5pY19jdXJtb2RlID09IElFRUU4 MDIxMV9NT0RFXzExQikKKwkJCQl1cnR3bl93cml0ZV8xKHNjLCBSOTJDX0lOSVJUU19SQVRF X1NFTCwgMCk7CisJCQllbHNlCS8qIDgwMi4xMWIvZyAqLworCQkJCXVydHduX3dyaXRlXzEo c2MsIFI5MkNfSU5JUlRTX1JBVEVfU0VMLCAzKTsKIAotCQkvKiBFbmFibGUgUnggb2YgZGF0 YSBmcmFtZXMuICovCi0JCXVydHduX3dyaXRlXzIoc2MsIFI5MkNfUlhGTFRNQVAyLCAweGZm ZmYpOworCQkJLyogRW5hYmxlIFJ4IG9mIGRhdGEgZnJhbWVzLiAqLworCQkJdXJ0d25fd3Jp dGVfMihzYywgUjkyQ19SWEZMVE1BUDIsIDB4ZmZmZik7CiAKKwkJCS8qIEFsbG93IFJ4IGZy b20gb3VyIEJTU0lEIG9ubHkuICovCisJCQl1cnR3bl93cml0ZV80KHNjLCBSOTJDX1JDUiwg dXJ0d25fcmVhZF80KHNjLCBSOTJDX1JDUikgfAorCQkJICAgIFI5MkNfUkNSX0NCU1NJRF9E QVRBIHwgUjkyQ19SQ1JfQ0JTU0lEX0JDTik7CisKKwkJCS8qIFNldCBtZWRpYSBzdGF0dXMg dG8gJ0Fzc29jaWF0ZWQnLiAqLworCQkJcmVnID0gdXJ0d25fcmVhZF80KHNjLCBSOTJDX0NS KTsKKwkJCXJlZyA9IFJXKHJlZywgUjkyQ19DUl9ORVRUWVBFLCBSOTJDX0NSX05FVFRZUEVf SU5GUkEpOworCQkJdXJ0d25fd3JpdGVfNChzYywgUjkyQ19DUiwgcmVnKTsKKwkJfQorCisJ CWlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX0hPU1RBUCkgeworCQkJLyogU2V0 IG1lZGlhIHN0YXR1cyB0byAnQVAnLiAqLworCQkJcmVnID0gdXJ0d25fcmVhZF80KHNjLCBS OTJDX0NSKTsKKwkJCXJlZyA9IFJXKHJlZywgUjkyQ19DUl9ORVRUWVBFLCBSOTJDX0NSX05F VFRZUEVfQVApOworCQkJdXJ0d25fd3JpdGVfNChzYywgUjkyQ19DUiwgcmVnKTsKKworCQkJ LyogU2V0IEJTU0lELiAqLworCQkJdXJ0d25fd3JpdGVfNChzYywgUjkyQ19CU1NJRCArIDAs CisJCQkgICAgTEVfUkVBRF80KCZuaS0+bmlfYnNzaWRbMF0pKTsKKwkJCXVydHduX3dyaXRl XzQoc2MsIFI5MkNfQlNTSUQgKyA0LAorCQkJICAgIExFX1JFQURfMigmbmktPm5pX2Jzc2lk WzRdKSk7CisKKwkJCS8qCisJCQkgKiBJZiAzcmQgb3IgNHRoIGJpdHMgYXJlIHNldCB0byB6 ZXJvIGNoaXAgd2lsbCBzdG9wCisJCQkgKiByZXBlYXRpbmcgYmVhY29uIGFmdGVyIGZpcnN0 IHRyYW5zbWlzc2lvbiBmb3IgcG9ydDAKKwkJCSAqIGFuZCBwb3J0MSByZXNwZWN0aXZlbHku IFRoaXMgd2lsbCBjYXVzZSBTVEFzIHRvCisJCQkgKiBkaXNjb25uZWN0IGFmdGVyIHNob3J0 IHBlcmlvZCBvZiB0aW1lLgorCQkJICovCisJCQlyZWcgPSB1cnR3bl9yZWFkXzEoc2MsIFI5 MkNfTUJJRF9OVU0pOworCQkJcmVnIHw9IDB4ODsKKwkJCXJlZyB8PSAweDEwOworCQkJdXJ0 d25fd3JpdGVfMShzYywgUjkyQ19NQklEX05VTSwgcmVnKTsKKworCQkJLyogSW52YWxpZGF0 ZSBjYW0gZW50cmllcyAqLworCQkJdXJ0d25fY2FtX2luaXQoc2MpOworCisJCQkvKiBTZXQg Y2hhbi9idyAqLworCQkJdXJ0d25fc2V0X2NoYW4oc2MsIGljLT5pY19jdXJjaGFuLCBOVUxM KTsKKworCQkJLyogUHVzaCBiZWFjb24gZnJhbWUgaW50byB0aGUgY2hpcCAqLworCQkJZXJy b3IgPSB1cnR3bl90eGJjbih2YXAsIG5pKTsKKwkJCWlmIChlcnJvciAhPSAwKQorCQkJCXBy aW50ZigiJXM6IHVuYWJsZSB0byBwdXNoIGJlYWNvbiBpbnRvIHRoZSIKKwkJCQkgICAgIiBj aGlwXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsKKwkJfQorCiAJCS8q IEZsdXNoIGFsbCBBQyBxdWV1ZXMuICovCiAJCXVydHduX3dyaXRlXzEoc2MsIFI5MkNfVFhQ QVVTRSwgMCk7CiAKQEAgLTE1NzYsMTEgKzE2NTgsNiBAQAogCQkvKiBTZXQgYmVhY29uIGlu dGVydmFsLiAqLwogCQl1cnR3bl93cml0ZV8yKHNjLCBSOTJDX0JDTl9JTlRFUlZBTCwgbmkt Pm5pX2ludHZhbCk7CiAKLQkJLyogQWxsb3cgUnggZnJvbSBvdXIgQlNTSUQgb25seS4gKi8K LQkJdXJ0d25fd3JpdGVfNChzYywgUjkyQ19SQ1IsCi0JCSAgICB1cnR3bl9yZWFkXzQoc2Ms IFI5MkNfUkNSKSB8Ci0JCSAgICBSOTJDX1JDUl9DQlNTSURfREFUQSB8IFI5MkNfUkNSX0NC U1NJRF9CQ04pOwotCiAJCS8qIEVuYWJsZSBUU0Ygc3luY2hyb25pemF0aW9uLiAqLwogCQl1 cnR3bl90c2Zfc3luY19lbmFibGUoc2MpOwogCkBAIC0xNzU0LDcgKzE4MzEsNyBAQAogCXN0 cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9IG5pLT5uaV92YXA7CiAJc3RydWN0IHVzYl94ZmVy ICp4ZmVyOwogCXN0cnVjdCByOTJjX3R4X2Rlc2MgKnR4ZDsKLQl1aW50OF90IHJhaWQsIHR5 cGU7CisJdWludDhfdCByYWlkLCB0eXBlLCBzdWJ0eXBlOwogCXVpbnQxNl90IHN1bTsKIAlp bnQgaSwgaGFzcW9zLCB4ZmVybGVuOwogCXN0cnVjdCB1c2JfeGZlciAqdXJ0d25fcGlwZXNb NF0gPSB7CkBAIC0xNzcxLDYgKzE4NDgsNyBAQAogCSAqLwogCXdoID0gbXRvZChtMCwgc3Ry dWN0IGllZWU4MDIxMV9mcmFtZSAqKTsKIAl0eXBlID0gd2gtPmlfZmNbMF0gJiBJRUVFODAy MTFfRkMwX1RZUEVfTUFTSzsKKwlzdWJ0eXBlID0gd2gtPmlfZmNbMF0gJiBJRUVFODAyMTFf RkMwX1NVQlRZUEVfTUFTSzsKIAogCWlmICh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFf UFJPVEVDVEVEKSB7CiAJCWsgPSBpZWVlODAyMTFfY3J5cHRvX2VuY2FwKG5pLCBtMCk7CkBA IC0xODE5LDcgKzE4OTcsNyBAQAogCQlpZiAoc2MtPmNoaXAgJiBVUlRXTl9DSElQXzg4RSkg ewogCQkJdHhkLT50eGR3MSB8PSBodG9sZTMyKAogCQkJICAgIFNNKFI4OEVfVFhEVzFfTUFD SUQsIFVSVFdOX01BQ0lEX0JTUykgfAotCQkJICAgIFNNKFI5MkNfVFhEVzFfUVNFTCwgUjky Q19UWERXMV9RU0VMX0JFKSB8CisJCQkgICAgU00oUjkyQ19UWERXMV9RU0VMLCBSODhFX1RY RFcxX1FTRUxfQkUpIHwKIAkJCSAgICBTTShSOTJDX1RYRFcxX1JBSUQsIHJhaWQpKTsKIAkJ CXR4ZC0+dHhkdzIgfD0gaHRvbGUzMihSODhFX1RYRFcyX0FHR0JLKTsKIAkJfSBlbHNlIHsK QEAgLTE4NDMsOSArMTkyMSwyMCBAQAogCQkvKiBTZW5kIGRhdGEgYXQgT0ZETTU0LiAqLwog CQl0eGQtPnR4ZHc1IHw9IGh0b2xlMzIoU00oUjkyQ19UWERXNV9EQVRBUkFURSwgMTEpKTsK IAl9IGVsc2UgeworCQkvKgorCQkgKiBJZiBiZWFjb24gZnJhbWUgaXMgcHVzaGVkIGludG8g d3JvbmcgcXVldWUsIHRoZSBjaGlwIHdvbid0CisJCSAqIHN0YXJ0IHJlcGVhdGluZyBpdC4K KwkJICovCisJCWlmIChzdWJ0eXBlID09IElFRUU4MDIxMV9GQzBfU1VCVFlQRV9CRUFDT04g JiYKKwkJICAgIHNjLT5jaGlwICYgVVJUV05fQ0hJUF84OEUpCisJCQl0eGQtPnR4ZHcxIHw9 IGh0b2xlMzIoU00oUjkyQ19UWERXMV9RU0VMLAorCQkJICAgIFI4OEVfVFhEVzFfUVNFTF9N R05UKSk7CisJCWVsc2UKKwkJCXR4ZC0+dHhkdzEgfD0gaHRvbGUzMihTTShSOTJDX1RYRFcx X1FTRUwsCisJCQkgICAgUjkyQ19UWERXMV9RU0VMX01HTlQpKTsKKwogCQl0eGQtPnR4ZHcx IHw9IGh0b2xlMzIoCiAJCSAgICBTTShSOTJDX1RYRFcxX01BQ0lELCAwKSB8Ci0JCSAgICBT TShSOTJDX1RYRFcxX1FTRUwsIFI5MkNfVFhEVzFfUVNFTF9NR05UKSB8CiAJCSAgICBTTShS OTJDX1RYRFcxX1JBSUQsIFI5MkNfUkFJRF8xMUIpKTsKIAogCQkvKiBGb3JjZSBDQ0sxLiAq LwpJbmRleDogZGV2L3VzYi93bGFuL2lmX3VydHducmVnLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g ZGV2L3VzYi93bGFuL2lmX3VydHducmVnLmgJKHJldmlzaW9uIDI4NzM0MikKKysrIGRldi91 c2Ivd2xhbi9pZl91cnR3bnJlZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE5LDcgKzEwMTks OSBAQAogI2RlZmluZSBSOTJDX1RYRFcxX1FTRUxfTQkweDAwMDAxZjAwCiAjZGVmaW5lIFI5 MkNfVFhEVzFfUVNFTF9TCTgKICNkZWZpbmUgUjkyQ19UWERXMV9RU0VMX0JFCTB4MDAKKyNk ZWZpbmUgUjg4RV9UWERXMV9RU0VMX0JFCTB4MDMKICNkZWZpbmUgUjkyQ19UWERXMV9RU0VM X01HTlQJMHgxMgorI2RlZmluZSBSODhFX1RYRFcxX1FTRUxfTUdOVAkweDEwCiAjZGVmaW5l IFI5MkNfVFhEVzFfUkFJRF9NCTB4MDAwZjAwMDAKICNkZWZpbmUgUjkyQ19UWERXMV9SQUlE X1MJMTYKICNkZWZpbmUgUjkyQ19UWERXMV9DSVBIRVJfTQkweDAwYzAwMDAwCg== --------------020602080509020909060107--