From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wi0-f171.google.com ([209.85.212.171]:43091 "EHLO mail-wi0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754760AbaDGJLL convert rfc822-to-8bit (ORCPT ); Mon, 7 Apr 2014 05:11:11 -0400 Received: by mail-wi0-f171.google.com with SMTP id q5so4669135wiv.4 for ; Mon, 07 Apr 2014 02:11:09 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <5341F1A9.2030202@candelatech.com> References: <1396611464-5940-1-git-send-email-michal.kazior@tieto.com> <5341F1A9.2030202@candelatech.com> Date: Mon, 7 Apr 2014 11:11:09 +0200 Message-ID: (sfid-20140407_111116_011372_10654191) Subject: Re: [RFT 0/4] ath10k: fix flushing and tx stalls From: Michal Kazior To: Ben Greear Cc: "ath10k@lists.infradead.org" , linux-wireless Content-Type: text/plain; charset=UTF-8 Sender: linux-wireless-owner@vger.kernel.org List-ID: On 7 April 2014 02:30, Ben Greear wrote: > On 04/04/2014 04:37 AM, Michal Kazior wrote: >> >> Hi, >> >> After digging around I've found what seems to be >> the problem with WMI Tx credit starvation and >> inability to properly flush Tx in ath10k_flush(). > > > I applied all four, rebooted AP and Station machine with the > new kernel (3.14.0-wl-ath+). I had removed my own tx-hang detection > hack. > > It is not working well...though perhaps it is not directly related > to your patches...I will do some reboots and try reversing some patches. > But, 3.14.0-rc8-wl-ath+ was working mostly OK for me.... > > It seems my user-space app got hung, probably because rtnl was being > held too long while doing admin-down on a bunch of stations. > > Out of 32 stations, maybe 5 of them managed to come up and get > an IP address through DHCP before user-space app hung and log > started filling with the errors at the end of the dmesg below. > > > sta218: associated > IPv6: ADDRCONF(NETDEV_CHANGE): sta218: link becomes ready > sta219: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 19 beacon_interval 100 > ath10k: mac vdev 19 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 19 start 04:f0:21:03:38:99 > ath10k: mac vdev 19 start center_freq 5180 phymode 11ac-vht80 > > sta219: send auth to 04:f0:21:03:38:99 (try 1/3) > sta219: authenticated > sta218: deauthenticating from 04:f0:21:03:38:99 by local choice (Reason: > 3=DEAUTH_LEAVING) > ath10k: mac flushing peer 04:f0:21:03:38:99 on vdev 18 mgmt tid for unicast > mgmt > ath10k: mac vdev 18 peer delete 04:f0:21:03:38:99 (sta gone) > ath10k: mac vdev 18 stop (disassociated > ath10k: mac vdev 18 down > ath10k: mac vdev 18 cts_prot 0 > ath10k: mac vdev 18 slot_time 1 > ath10k: mac vdev 18 preamble 1n > sta219: associate with 04:f0:21:03:38:99 (try 1/3) > sta219: RX AssocResp from 04:f0:21:03:38:99 (capab=0x1 status=0 aid=22) > ath10k: mac vdev 19 dtim_period 2 > ath10k: mac vdev 19 slot_time 2 > ath10k: mac ht peer 04:f0:21:03:38:99 mcs cnt 24 nss 3 > ath10k: mac vht peer 04:f0:21:03:38:99 max_mpdu 65535 flags 0x6003001 > ath10k: mac peer 04:f0:21:03:38:99 phymode 11ac-vht80 > ath10k: mac vdev 19 up (associated) bssid 04:f0:21:03:38:99 aid 22 > sta219: associated > IPv6: ADDRCONF(NETDEV_CHANGE): sta219: link becomes ready > sta220: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 20 beacon_interval 100 > ath10k: mac vdev 20 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 20 start 04:f0:21:03:38:99 > ath10k: mac vdev 20 start center_freq 5180 phymode 11ac-vht80 > sta220: send auth to 04:f0:21:03:38:99 (try 1/3) > sta220: authenticated > sta220: associate with 04:f0:21:03:38:99 (try 1/3) > sta220: RX AssocResp from 04:f0:21:03:38:99 (capab=0x1 status=0 aid=23) > ath10k: mac vdev 20 dtim_period 2 > ath10k: mac vdev 20 slot_time 2 > ath10k: mac ht peer 04:f0:21:03:38:99 mcs cnt 24 nss 3 > ath10k: mac vht peer 04:f0:21:03:38:99 max_mpdu 65535 flags 0x6003001 > ath10k: mac peer 04:f0:21:03:38:99 phymode 11ac-vht80 > ath10k: mac vdev 20 up (associated) bssid 04:f0:21:03:38:99 aid 23 > sta220: associated > IPv6: ADDRCONF(NETDEV_CHANGE): sta220: link becomes ready > ath10k: Creating vdev id: 21 map: 4292870144 > ath10k: mac vdev create 21 (add interface) type 2 subtype 0 > ath10k: mac vdev 21 cts_prot 0 > ath10k: mac vdev 21 slot_time 1 > ath10k: mac vdev 21 preamble 1n > IPv6: ADDRCONF(NETDEV_UP): sta221: link is not ready > ath10k: mac vdev 21 delete (remove interface) > ath10k: peer-unmap-event: unknown peer id 23 > ath10k: Creating vdev id: 21 map: 4292870144 > ath10k: mac vdev create 21 (add interface) type 2 subtype 0 > ath10k: mac vdev 21 cts_prot 0 > ath10k: mac vdev 21 slot_time 1 > ath10k: mac vdev 21 preamble 1n > IPv6: ADDRCONF(NETDEV_UP): sta221: link is not ready > sta217: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 17 beacon_interval 100 > ath10k: mac vdev 17 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 17 start 04:f0:21:03:38:99 > ath10k: mac vdev 17 start center_freq 5180 phymode 11ac-vht80 > > sta217: send auth to 04:f0:21:03:38:99 (try 1/3) > sta217: authenticated > sta217: associate with 04:f0:21:03:38:99 (try 1/3) > sta217: RX AssocResp from 04:f0:21:03:38:99 (capab=0x1 status=0 aid=20) > ath10k: mac vdev 17 dtim_period 2 > ath10k: mac vdev 17 slot_time 2 > ath10k: mac ht peer 04:f0:21:03:38:99 mcs cnt 24 nss 3 > ath10k: mac vht peer 04:f0:21:03:38:99 max_mpdu 65535 flags 0x6003001 > ath10k: mac peer 04:f0:21:03:38:99 phymode 11ac-vht80 > ath10k: mac vdev 17 up (associated) bssid 04:f0:21:03:38:99 aid 20 > sta217: associated > IPv6: ADDRCONF(NETDEV_CHANGE): sta217: link becomes ready > sta218: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 18 beacon_interval 100 > ath10k: mac vdev 18 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 18 start 04:f0:21:03:38:99 > ath10k: mac vdev 18 start center_freq 5180 phymode 11ac-vht80 > sta218: send auth to 04:f0:21:03:38:99 (try 1/3) > ath10k: Creating vdev id: 22 map: 4290772992 > ath10k: mac vdev create 22 (add interface) type 2 subtype 0 > sta218: authenticated > ath10k: mac vdev 22 cts_prot 0 > ath10k: mac vdev 22 slot_time 1 > ath10k: mac vdev 22 preamble 1n > IPv6: ADDRCONF(NETDEV_UP): sta222: link is not ready > sta218: associate with 04:f0:21:03:38:99 (try 1/3) > sta218: RX AssocResp from 04:f0:21:03:38:99 (capab=0x1 status=0 aid=18) > ath10k: mac vdev 18 dtim_period 2 > ath10k: mac vdev 18 slot_time 2 > ath10k: mac ht peer 04:f0:21:03:38:99 mcs cnt 24 nss 3 > ath10k: mac vht peer 04:f0:21:03:38:99 max_mpdu 65535 flags 0x6003001 > ath10k: mac peer 04:f0:21:03:38:99 phymode 11ac-vht80 > ath10k: mac vdev 18 up (associated) bssid 04:f0:21:03:38:99 aid 18 > sta218: associated > sta222: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 22 beacon_interval 100 > ath10k: mac vdev 22 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 22 start 04:f0:21:03:38:99 > ath10k: mac vdev 22 start center_freq 5180 phymode 11ac-vht80 > > sta222: send auth to 04:f0:21:03:38:99 (try 1/3) > ath10k: mac vdev 22 peer delete 04:f0:21:03:38:99 (sta gone) > ath10k: mac vdev 22 stop (disassociated > ath10k: mac vdev 22 down > ath10k: mac vdev 22 delete (remove interface) > ath10k: peer-unmap-event: unknown peer id 24 > ath10k: Creating vdev id: 22 map: 4290772992 > ath10k: mac vdev create 22 (add interface) type 2 subtype 0 > ath10k: mac vdev 22 cts_prot 0 > ath10k: mac vdev 22 slot_time 1 > ath10k: mac vdev 22 preamble 1n > IPv6: ADDRCONF(NETDEV_UP): sta222: link is not ready > sta221: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 21 beacon_interval 100 > ath10k: mac vdev 21 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 21 start 04:f0:21:03:38:99 > ath10k: mac vdev 21 start center_freq 5180 phymode 11ac-vht80 > > sta221: send auth to 04:f0:21:03:38:99 (try 1/3) > sta221: authenticated > sta221: associate with 04:f0:21:03:38:99 (try 1/3) > sta221: RX AssocResp from 04:f0:21:03:38:99 (capab=0x1 status=0 aid=19) > ath10k: mac vdev 21 dtim_period 2 > ath10k: mac vdev 21 slot_time 2 > ath10k: mac ht peer 04:f0:21:03:38:99 mcs cnt 24 nss 3 > ath10k: mac vht peer 04:f0:21:03:38:99 max_mpdu 65535 flags 0x6003001 > ath10k: mac peer 04:f0:21:03:38:99 phymode 11ac-vht80 > ath10k: mac vdev 21 up (associated) bssid 04:f0:21:03:38:99 aid 19 > sta221: associated > IPv6: ADDRCONF(NETDEV_CHANGE): sta221: link becomes ready > sta222: authenticate with 04:f0:21:03:38:99 > ath10k: mac vdev 22 beacon_interval 100 > ath10k: mac vdev 22 create peer 04:f0:21:03:38:99 > ath10k: mac vdev 22 start 04:f0:21:03:38:99 > ath10k: mac vdev 22 start center_freq 5180 phymode 11ac-vht80 > sta222: send auth to 04:f0:21:03:38:99 (try 1/3) > sta222: authenticated > sta222: associate with 04:f0:21:03:38:99 (try 1/3) > sta222: RX AssocResp from 04:f0:21:03:38:99 (capab=0x1 status=0 aid=24) > ath10k: mac vdev 22 dtim_period 2 > ath10k: mac vdev 22 slot_time 2 > ath10k: mac ht peer 04:f0:21:03:38:99 mcs cnt 24 nss 3 > ath10k: mac vht peer 04:f0:21:03:38:99 max_mpdu 65535 flags 0x6003001 > ath10k: mac peer 04:f0:21:03:38:99 phymode 11ac-vht80 > ath10k: mac vdev 22 up (associated) bssid 04:f0:21:03:38:99 aid 24 > sta222: associated > IPv6: ADDRCONF(NETDEV_CHANGE): sta222: link becomes ready > > sta213: deauthenticating from 04:f0:21:03:38:99 by local choice (Reason: > 3=DEAUTH_LEAVING) > ath10k: mac flushing peer 04:f0:21:03:38:99 on vdev 13 mgmt tid for unicast > mgmt > ath10k: mac vdev 13 peer delete 04:f0:21:03:38:99 (sta gone) > ath10k: mac vdev 13 stop (disassociated > ath10k: mac vdev 13 down > ath10k: mac vdev 13 cts_prot 0 > ath10k: mac vdev 13 slot_time 1 > > ath10k: failed to set erp slot for vdev 13: -11 > ath10k: mac vdev 13 preamble 1n > ath10k: failed to set preamble for vdev 13: -11 > ath10k: failed to set wmm params: -11 > ath10k: failed to set wmm params: -11 These logs are not enough. I'd love to see traces for this to see what frames are actually submitted and when tx credits are replenished. I also wonder if this can be somehow related to your FW changes to allow connecting multiple client virtual interfaces to a single AP? MichaƂ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wi0-x22b.google.com ([2a00:1450:400c:c05::22b]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WX5aV-0000LP-Qa for ath10k@lists.infradead.org; Mon, 07 Apr 2014 09:11:33 +0000 Received: by mail-wi0-f171.google.com with SMTP id q5so4649634wiv.16 for ; Mon, 07 Apr 2014 02:11:09 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <5341F1A9.2030202@candelatech.com> References: <1396611464-5940-1-git-send-email-michal.kazior@tieto.com> <5341F1A9.2030202@candelatech.com> Date: Mon, 7 Apr 2014 11:11:09 +0200 Message-ID: Subject: Re: [RFT 0/4] ath10k: fix flushing and tx stalls From: Michal Kazior List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Ben Greear Cc: linux-wireless , "ath10k@lists.infradead.org" T24gNyBBcHJpbCAyMDE0IDAyOjMwLCBCZW4gR3JlZWFyIDxncmVlYXJiQGNhbmRlbGF0ZWNoLmNv bT4gd3JvdGU6Cj4gT24gMDQvMDQvMjAxNCAwNDozNyBBTSwgTWljaGFsIEthemlvciB3cm90ZToK Pj4KPj4gSGksCj4+Cj4+IEFmdGVyIGRpZ2dpbmcgYXJvdW5kIEkndmUgZm91bmQgd2hhdCBzZWVt cyB0byBiZQo+PiB0aGUgcHJvYmxlbSB3aXRoIFdNSSBUeCBjcmVkaXQgc3RhcnZhdGlvbiBhbmQK Pj4gaW5hYmlsaXR5IHRvIHByb3Blcmx5IGZsdXNoIFR4IGluIGF0aDEwa19mbHVzaCgpLgo+Cj4K PiBJIGFwcGxpZWQgYWxsIGZvdXIsIHJlYm9vdGVkIEFQIGFuZCBTdGF0aW9uIG1hY2hpbmUgd2l0 aCB0aGUKPiBuZXcga2VybmVsICgzLjE0LjAtd2wtYXRoKykuICBJIGhhZCByZW1vdmVkIG15IG93 biB0eC1oYW5nIGRldGVjdGlvbgo+IGhhY2suCj4KPiBJdCBpcyBub3Qgd29ya2luZyB3ZWxsLi4u dGhvdWdoIHBlcmhhcHMgaXQgaXMgbm90IGRpcmVjdGx5IHJlbGF0ZWQKPiB0byB5b3VyIHBhdGNo ZXMuLi5JIHdpbGwgZG8gc29tZSByZWJvb3RzIGFuZCB0cnkgcmV2ZXJzaW5nIHNvbWUgcGF0Y2hl cy4KPiBCdXQsIDMuMTQuMC1yYzgtd2wtYXRoKyB3YXMgd29ya2luZyBtb3N0bHkgT0sgZm9yIG1l Li4uLgo+Cj4gSXQgc2VlbXMgbXkgdXNlci1zcGFjZSBhcHAgZ290IGh1bmcsIHByb2JhYmx5IGJl Y2F1c2UgcnRubCB3YXMgYmVpbmcKPiBoZWxkIHRvbyBsb25nIHdoaWxlIGRvaW5nIGFkbWluLWRv d24gb24gYSBidW5jaCBvZiBzdGF0aW9ucy4KPgo+IE91dCBvZiAzMiBzdGF0aW9ucywgbWF5YmUg NSBvZiB0aGVtIG1hbmFnZWQgdG8gY29tZSB1cCBhbmQgZ2V0Cj4gYW4gSVAgYWRkcmVzcyB0aHJv dWdoIERIQ1AgYmVmb3JlIHVzZXItc3BhY2UgYXBwIGh1bmcgYW5kIGxvZwo+IHN0YXJ0ZWQgZmls bGluZyB3aXRoIHRoZSBlcnJvcnMgYXQgdGhlIGVuZCBvZiB0aGUgZG1lc2cgYmVsb3cuCj4KPgo+ IHN0YTIxODogYXNzb2NpYXRlZAo+IElQdjY6IEFERFJDT05GKE5FVERFVl9DSEFOR0UpOiBzdGEy MTg6IGxpbmsgYmVjb21lcyByZWFkeQo+IHN0YTIxOTogYXV0aGVudGljYXRlIHdpdGggMDQ6ZjA6 MjE6MDM6Mzg6OTkKPiBhdGgxMGs6IG1hYyB2ZGV2IDE5IGJlYWNvbl9pbnRlcnZhbCAxMDAKPiBh dGgxMGs6IG1hYyB2ZGV2IDE5IGNyZWF0ZSBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5Cj4gYXRoMTBr OiBtYWMgdmRldiAxOSBzdGFydCAwNDpmMDoyMTowMzozODo5OQo+IGF0aDEwazogbWFjIHZkZXYg MTkgc3RhcnQgY2VudGVyX2ZyZXEgNTE4MCBwaHltb2RlIDExYWMtdmh0ODAKPgo+IHN0YTIxOTog c2VuZCBhdXRoIHRvIDA0OmYwOjIxOjAzOjM4Ojk5ICh0cnkgMS8zKQo+IHN0YTIxOTogYXV0aGVu dGljYXRlZAo+IHN0YTIxODogZGVhdXRoZW50aWNhdGluZyBmcm9tIDA0OmYwOjIxOjAzOjM4Ojk5 IGJ5IGxvY2FsIGNob2ljZSAoUmVhc29uOgo+IDM9REVBVVRIX0xFQVZJTkcpCj4gYXRoMTBrOiBt YWMgZmx1c2hpbmcgcGVlciAwNDpmMDoyMTowMzozODo5OSBvbiB2ZGV2IDE4IG1nbXQgdGlkIGZv ciB1bmljYXN0Cj4gbWdtdAo+IGF0aDEwazogbWFjIHZkZXYgMTggcGVlciBkZWxldGUgMDQ6ZjA6 MjE6MDM6Mzg6OTkgKHN0YSBnb25lKQo+IGF0aDEwazogbWFjIHZkZXYgMTggc3RvcCAoZGlzYXNz b2NpYXRlZAo+IGF0aDEwazogbWFjIHZkZXYgMTggZG93bgo+IGF0aDEwazogbWFjIHZkZXYgMTgg Y3RzX3Byb3QgMAo+IGF0aDEwazogbWFjIHZkZXYgMTggc2xvdF90aW1lIDEKPiBhdGgxMGs6IG1h YyB2ZGV2IDE4IHByZWFtYmxlIDFuCj4gc3RhMjE5OiBhc3NvY2lhdGUgd2l0aCAwNDpmMDoyMTow MzozODo5OSAodHJ5IDEvMykKPiBzdGEyMTk6IFJYIEFzc29jUmVzcCBmcm9tIDA0OmYwOjIxOjAz OjM4Ojk5IChjYXBhYj0weDEgc3RhdHVzPTAgYWlkPTIyKQo+IGF0aDEwazogbWFjIHZkZXYgMTkg ZHRpbV9wZXJpb2QgMgo+IGF0aDEwazogbWFjIHZkZXYgMTkgc2xvdF90aW1lIDIKPiBhdGgxMGs6 IG1hYyBodCBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IG1jcyBjbnQgMjQgbnNzIDMKPiBhdGgxMGs6 IG1hYyB2aHQgcGVlciAwNDpmMDoyMTowMzozODo5OSBtYXhfbXBkdSA2NTUzNSBmbGFncyAweDYw MDMwMDEKPiBhdGgxMGs6IG1hYyBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IHBoeW1vZGUgMTFhYy12 aHQ4MAo+IGF0aDEwazogbWFjIHZkZXYgMTkgdXAgKGFzc29jaWF0ZWQpIGJzc2lkIDA0OmYwOjIx OjAzOjM4Ojk5IGFpZCAyMgo+IHN0YTIxOTogYXNzb2NpYXRlZAo+IElQdjY6IEFERFJDT05GKE5F VERFVl9DSEFOR0UpOiBzdGEyMTk6IGxpbmsgYmVjb21lcyByZWFkeQo+IHN0YTIyMDogYXV0aGVu dGljYXRlIHdpdGggMDQ6ZjA6MjE6MDM6Mzg6OTkKPiBhdGgxMGs6IG1hYyB2ZGV2IDIwIGJlYWNv bl9pbnRlcnZhbCAxMDAKPiBhdGgxMGs6IG1hYyB2ZGV2IDIwIGNyZWF0ZSBwZWVyIDA0OmYwOjIx OjAzOjM4Ojk5Cj4gYXRoMTBrOiBtYWMgdmRldiAyMCBzdGFydCAwNDpmMDoyMTowMzozODo5OQo+ IGF0aDEwazogbWFjIHZkZXYgMjAgc3RhcnQgY2VudGVyX2ZyZXEgNTE4MCBwaHltb2RlIDExYWMt dmh0ODAKPiBzdGEyMjA6IHNlbmQgYXV0aCB0byAwNDpmMDoyMTowMzozODo5OSAodHJ5IDEvMykK PiBzdGEyMjA6IGF1dGhlbnRpY2F0ZWQKPiBzdGEyMjA6IGFzc29jaWF0ZSB3aXRoIDA0OmYwOjIx OjAzOjM4Ojk5ICh0cnkgMS8zKQo+IHN0YTIyMDogUlggQXNzb2NSZXNwIGZyb20gMDQ6ZjA6MjE6 MDM6Mzg6OTkgKGNhcGFiPTB4MSBzdGF0dXM9MCBhaWQ9MjMpCj4gYXRoMTBrOiBtYWMgdmRldiAy MCBkdGltX3BlcmlvZCAyCj4gYXRoMTBrOiBtYWMgdmRldiAyMCBzbG90X3RpbWUgMgo+IGF0aDEw azogbWFjIGh0IHBlZXIgMDQ6ZjA6MjE6MDM6Mzg6OTkgbWNzIGNudCAyNCBuc3MgMwo+IGF0aDEw azogbWFjIHZodCBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IG1heF9tcGR1IDY1NTM1IGZsYWdzIDB4 NjAwMzAwMQo+IGF0aDEwazogbWFjIHBlZXIgMDQ6ZjA6MjE6MDM6Mzg6OTkgcGh5bW9kZSAxMWFj LXZodDgwCj4gYXRoMTBrOiBtYWMgdmRldiAyMCB1cCAoYXNzb2NpYXRlZCkgYnNzaWQgMDQ6ZjA6 MjE6MDM6Mzg6OTkgYWlkIDIzCj4gc3RhMjIwOiBhc3NvY2lhdGVkCj4gSVB2NjogQUREUkNPTkYo TkVUREVWX0NIQU5HRSk6IHN0YTIyMDogbGluayBiZWNvbWVzIHJlYWR5Cj4gYXRoMTBrOiBDcmVh dGluZyB2ZGV2IGlkOiAyMSAgbWFwOiA0MjkyODcwMTQ0Cj4gYXRoMTBrOiBtYWMgdmRldiBjcmVh dGUgMjEgKGFkZCBpbnRlcmZhY2UpIHR5cGUgMiBzdWJ0eXBlIDAKPiBhdGgxMGs6IG1hYyB2ZGV2 IDIxIGN0c19wcm90IDAKPiBhdGgxMGs6IG1hYyB2ZGV2IDIxIHNsb3RfdGltZSAxCj4gYXRoMTBr OiBtYWMgdmRldiAyMSBwcmVhbWJsZSAxbgo+IElQdjY6IEFERFJDT05GKE5FVERFVl9VUCk6IHN0 YTIyMTogbGluayBpcyBub3QgcmVhZHkKPiBhdGgxMGs6IG1hYyB2ZGV2IDIxIGRlbGV0ZSAocmVt b3ZlIGludGVyZmFjZSkKPiBhdGgxMGs6IHBlZXItdW5tYXAtZXZlbnQ6IHVua25vd24gcGVlciBp ZCAyMwo+IGF0aDEwazogQ3JlYXRpbmcgdmRldiBpZDogMjEgIG1hcDogNDI5Mjg3MDE0NAo+IGF0 aDEwazogbWFjIHZkZXYgY3JlYXRlIDIxIChhZGQgaW50ZXJmYWNlKSB0eXBlIDIgc3VidHlwZSAw Cj4gYXRoMTBrOiBtYWMgdmRldiAyMSBjdHNfcHJvdCAwCj4gYXRoMTBrOiBtYWMgdmRldiAyMSBz bG90X3RpbWUgMQo+IGF0aDEwazogbWFjIHZkZXYgMjEgcHJlYW1ibGUgMW4KPiBJUHY2OiBBRERS Q09ORihORVRERVZfVVApOiBzdGEyMjE6IGxpbmsgaXMgbm90IHJlYWR5Cj4gc3RhMjE3OiBhdXRo ZW50aWNhdGUgd2l0aCAwNDpmMDoyMTowMzozODo5OQo+IGF0aDEwazogbWFjIHZkZXYgMTcgYmVh Y29uX2ludGVydmFsIDEwMAo+IGF0aDEwazogbWFjIHZkZXYgMTcgY3JlYXRlIHBlZXIgMDQ6ZjA6 MjE6MDM6Mzg6OTkKPiBhdGgxMGs6IG1hYyB2ZGV2IDE3IHN0YXJ0IDA0OmYwOjIxOjAzOjM4Ojk5 Cj4gYXRoMTBrOiBtYWMgdmRldiAxNyBzdGFydCBjZW50ZXJfZnJlcSA1MTgwIHBoeW1vZGUgMTFh Yy12aHQ4MAo+Cj4gc3RhMjE3OiBzZW5kIGF1dGggdG8gMDQ6ZjA6MjE6MDM6Mzg6OTkgKHRyeSAx LzMpCj4gc3RhMjE3OiBhdXRoZW50aWNhdGVkCj4gc3RhMjE3OiBhc3NvY2lhdGUgd2l0aCAwNDpm MDoyMTowMzozODo5OSAodHJ5IDEvMykKPiBzdGEyMTc6IFJYIEFzc29jUmVzcCBmcm9tIDA0OmYw OjIxOjAzOjM4Ojk5IChjYXBhYj0weDEgc3RhdHVzPTAgYWlkPTIwKQo+IGF0aDEwazogbWFjIHZk ZXYgMTcgZHRpbV9wZXJpb2QgMgo+IGF0aDEwazogbWFjIHZkZXYgMTcgc2xvdF90aW1lIDIKPiBh dGgxMGs6IG1hYyBodCBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IG1jcyBjbnQgMjQgbnNzIDMKPiBh dGgxMGs6IG1hYyB2aHQgcGVlciAwNDpmMDoyMTowMzozODo5OSBtYXhfbXBkdSA2NTUzNSBmbGFn cyAweDYwMDMwMDEKPiBhdGgxMGs6IG1hYyBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IHBoeW1vZGUg MTFhYy12aHQ4MAo+IGF0aDEwazogbWFjIHZkZXYgMTcgdXAgKGFzc29jaWF0ZWQpIGJzc2lkIDA0 OmYwOjIxOjAzOjM4Ojk5IGFpZCAyMAo+IHN0YTIxNzogYXNzb2NpYXRlZAo+IElQdjY6IEFERFJD T05GKE5FVERFVl9DSEFOR0UpOiBzdGEyMTc6IGxpbmsgYmVjb21lcyByZWFkeQo+IHN0YTIxODog YXV0aGVudGljYXRlIHdpdGggMDQ6ZjA6MjE6MDM6Mzg6OTkKPiBhdGgxMGs6IG1hYyB2ZGV2IDE4 IGJlYWNvbl9pbnRlcnZhbCAxMDAKPiBhdGgxMGs6IG1hYyB2ZGV2IDE4IGNyZWF0ZSBwZWVyIDA0 OmYwOjIxOjAzOjM4Ojk5Cj4gYXRoMTBrOiBtYWMgdmRldiAxOCBzdGFydCAwNDpmMDoyMTowMzoz ODo5OQo+IGF0aDEwazogbWFjIHZkZXYgMTggc3RhcnQgY2VudGVyX2ZyZXEgNTE4MCBwaHltb2Rl IDExYWMtdmh0ODAKPiBzdGEyMTg6IHNlbmQgYXV0aCB0byAwNDpmMDoyMTowMzozODo5OSAodHJ5 IDEvMykKPiBhdGgxMGs6IENyZWF0aW5nIHZkZXYgaWQ6IDIyICBtYXA6IDQyOTA3NzI5OTIKPiBh dGgxMGs6IG1hYyB2ZGV2IGNyZWF0ZSAyMiAoYWRkIGludGVyZmFjZSkgdHlwZSAyIHN1YnR5cGUg MAo+IHN0YTIxODogYXV0aGVudGljYXRlZAo+IGF0aDEwazogbWFjIHZkZXYgMjIgY3RzX3Byb3Qg MAo+IGF0aDEwazogbWFjIHZkZXYgMjIgc2xvdF90aW1lIDEKPiBhdGgxMGs6IG1hYyB2ZGV2IDIy IHByZWFtYmxlIDFuCj4gSVB2NjogQUREUkNPTkYoTkVUREVWX1VQKTogc3RhMjIyOiBsaW5rIGlz IG5vdCByZWFkeQo+IHN0YTIxODogYXNzb2NpYXRlIHdpdGggMDQ6ZjA6MjE6MDM6Mzg6OTkgKHRy eSAxLzMpCj4gc3RhMjE4OiBSWCBBc3NvY1Jlc3AgZnJvbSAwNDpmMDoyMTowMzozODo5OSAoY2Fw YWI9MHgxIHN0YXR1cz0wIGFpZD0xOCkKPiBhdGgxMGs6IG1hYyB2ZGV2IDE4IGR0aW1fcGVyaW9k IDIKPiBhdGgxMGs6IG1hYyB2ZGV2IDE4IHNsb3RfdGltZSAyCj4gYXRoMTBrOiBtYWMgaHQgcGVl ciAwNDpmMDoyMTowMzozODo5OSBtY3MgY250IDI0IG5zcyAzCj4gYXRoMTBrOiBtYWMgdmh0IHBl ZXIgMDQ6ZjA6MjE6MDM6Mzg6OTkgbWF4X21wZHUgNjU1MzUgZmxhZ3MgMHg2MDAzMDAxCj4gYXRo MTBrOiBtYWMgcGVlciAwNDpmMDoyMTowMzozODo5OSBwaHltb2RlIDExYWMtdmh0ODAKPiBhdGgx MGs6IG1hYyB2ZGV2IDE4IHVwIChhc3NvY2lhdGVkKSBic3NpZCAwNDpmMDoyMTowMzozODo5OSBh aWQgMTgKPiBzdGEyMTg6IGFzc29jaWF0ZWQKPiBzdGEyMjI6IGF1dGhlbnRpY2F0ZSB3aXRoIDA0 OmYwOjIxOjAzOjM4Ojk5Cj4gYXRoMTBrOiBtYWMgdmRldiAyMiBiZWFjb25faW50ZXJ2YWwgMTAw Cj4gYXRoMTBrOiBtYWMgdmRldiAyMiBjcmVhdGUgcGVlciAwNDpmMDoyMTowMzozODo5OQo+IGF0 aDEwazogbWFjIHZkZXYgMjIgc3RhcnQgMDQ6ZjA6MjE6MDM6Mzg6OTkKPiBhdGgxMGs6IG1hYyB2 ZGV2IDIyIHN0YXJ0IGNlbnRlcl9mcmVxIDUxODAgcGh5bW9kZSAxMWFjLXZodDgwCj4KPiBzdGEy MjI6IHNlbmQgYXV0aCB0byAwNDpmMDoyMTowMzozODo5OSAodHJ5IDEvMykKPiBhdGgxMGs6IG1h YyB2ZGV2IDIyIHBlZXIgZGVsZXRlIDA0OmYwOjIxOjAzOjM4Ojk5IChzdGEgZ29uZSkKPiBhdGgx MGs6IG1hYyB2ZGV2IDIyIHN0b3AgKGRpc2Fzc29jaWF0ZWQKPiBhdGgxMGs6IG1hYyB2ZGV2IDIy IGRvd24KPiBhdGgxMGs6IG1hYyB2ZGV2IDIyIGRlbGV0ZSAocmVtb3ZlIGludGVyZmFjZSkKPiBh dGgxMGs6IHBlZXItdW5tYXAtZXZlbnQ6IHVua25vd24gcGVlciBpZCAyNAo+IGF0aDEwazogQ3Jl YXRpbmcgdmRldiBpZDogMjIgIG1hcDogNDI5MDc3Mjk5Mgo+IGF0aDEwazogbWFjIHZkZXYgY3Jl YXRlIDIyIChhZGQgaW50ZXJmYWNlKSB0eXBlIDIgc3VidHlwZSAwCj4gYXRoMTBrOiBtYWMgdmRl diAyMiBjdHNfcHJvdCAwCj4gYXRoMTBrOiBtYWMgdmRldiAyMiBzbG90X3RpbWUgMQo+IGF0aDEw azogbWFjIHZkZXYgMjIgcHJlYW1ibGUgMW4KPiBJUHY2OiBBRERSQ09ORihORVRERVZfVVApOiBz dGEyMjI6IGxpbmsgaXMgbm90IHJlYWR5Cj4gc3RhMjIxOiBhdXRoZW50aWNhdGUgd2l0aCAwNDpm MDoyMTowMzozODo5OQo+IGF0aDEwazogbWFjIHZkZXYgMjEgYmVhY29uX2ludGVydmFsIDEwMAo+ IGF0aDEwazogbWFjIHZkZXYgMjEgY3JlYXRlIHBlZXIgMDQ6ZjA6MjE6MDM6Mzg6OTkKPiBhdGgx MGs6IG1hYyB2ZGV2IDIxIHN0YXJ0IDA0OmYwOjIxOjAzOjM4Ojk5Cj4gYXRoMTBrOiBtYWMgdmRl diAyMSBzdGFydCBjZW50ZXJfZnJlcSA1MTgwIHBoeW1vZGUgMTFhYy12aHQ4MAo+Cj4gc3RhMjIx OiBzZW5kIGF1dGggdG8gMDQ6ZjA6MjE6MDM6Mzg6OTkgKHRyeSAxLzMpCj4gc3RhMjIxOiBhdXRo ZW50aWNhdGVkCj4gc3RhMjIxOiBhc3NvY2lhdGUgd2l0aCAwNDpmMDoyMTowMzozODo5OSAodHJ5 IDEvMykKPiBzdGEyMjE6IFJYIEFzc29jUmVzcCBmcm9tIDA0OmYwOjIxOjAzOjM4Ojk5IChjYXBh Yj0weDEgc3RhdHVzPTAgYWlkPTE5KQo+IGF0aDEwazogbWFjIHZkZXYgMjEgZHRpbV9wZXJpb2Qg Mgo+IGF0aDEwazogbWFjIHZkZXYgMjEgc2xvdF90aW1lIDIKPiBhdGgxMGs6IG1hYyBodCBwZWVy IDA0OmYwOjIxOjAzOjM4Ojk5IG1jcyBjbnQgMjQgbnNzIDMKPiBhdGgxMGs6IG1hYyB2aHQgcGVl ciAwNDpmMDoyMTowMzozODo5OSBtYXhfbXBkdSA2NTUzNSBmbGFncyAweDYwMDMwMDEKPiBhdGgx MGs6IG1hYyBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IHBoeW1vZGUgMTFhYy12aHQ4MAo+IGF0aDEw azogbWFjIHZkZXYgMjEgdXAgKGFzc29jaWF0ZWQpIGJzc2lkIDA0OmYwOjIxOjAzOjM4Ojk5IGFp ZCAxOQo+IHN0YTIyMTogYXNzb2NpYXRlZAo+IElQdjY6IEFERFJDT05GKE5FVERFVl9DSEFOR0Up OiBzdGEyMjE6IGxpbmsgYmVjb21lcyByZWFkeQo+IHN0YTIyMjogYXV0aGVudGljYXRlIHdpdGgg MDQ6ZjA6MjE6MDM6Mzg6OTkKPiBhdGgxMGs6IG1hYyB2ZGV2IDIyIGJlYWNvbl9pbnRlcnZhbCAx MDAKPiBhdGgxMGs6IG1hYyB2ZGV2IDIyIGNyZWF0ZSBwZWVyIDA0OmYwOjIxOjAzOjM4Ojk5Cj4g YXRoMTBrOiBtYWMgdmRldiAyMiBzdGFydCAwNDpmMDoyMTowMzozODo5OQo+IGF0aDEwazogbWFj IHZkZXYgMjIgc3RhcnQgY2VudGVyX2ZyZXEgNTE4MCBwaHltb2RlIDExYWMtdmh0ODAKPiBzdGEy MjI6IHNlbmQgYXV0aCB0byAwNDpmMDoyMTowMzozODo5OSAodHJ5IDEvMykKPiBzdGEyMjI6IGF1 dGhlbnRpY2F0ZWQKPiBzdGEyMjI6IGFzc29jaWF0ZSB3aXRoIDA0OmYwOjIxOjAzOjM4Ojk5ICh0 cnkgMS8zKQo+IHN0YTIyMjogUlggQXNzb2NSZXNwIGZyb20gMDQ6ZjA6MjE6MDM6Mzg6OTkgKGNh cGFiPTB4MSBzdGF0dXM9MCBhaWQ9MjQpCj4gYXRoMTBrOiBtYWMgdmRldiAyMiBkdGltX3Blcmlv ZCAyCj4gYXRoMTBrOiBtYWMgdmRldiAyMiBzbG90X3RpbWUgMgo+IGF0aDEwazogbWFjIGh0IHBl ZXIgMDQ6ZjA6MjE6MDM6Mzg6OTkgbWNzIGNudCAyNCBuc3MgMwo+IGF0aDEwazogbWFjIHZodCBw ZWVyIDA0OmYwOjIxOjAzOjM4Ojk5IG1heF9tcGR1IDY1NTM1IGZsYWdzIDB4NjAwMzAwMQo+IGF0 aDEwazogbWFjIHBlZXIgMDQ6ZjA6MjE6MDM6Mzg6OTkgcGh5bW9kZSAxMWFjLXZodDgwCj4gYXRo MTBrOiBtYWMgdmRldiAyMiB1cCAoYXNzb2NpYXRlZCkgYnNzaWQgMDQ6ZjA6MjE6MDM6Mzg6OTkg YWlkIDI0Cj4gc3RhMjIyOiBhc3NvY2lhdGVkCj4gSVB2NjogQUREUkNPTkYoTkVUREVWX0NIQU5H RSk6IHN0YTIyMjogbGluayBiZWNvbWVzIHJlYWR5Cj4KPiBzdGEyMTM6IGRlYXV0aGVudGljYXRp bmcgZnJvbSAwNDpmMDoyMTowMzozODo5OSBieSBsb2NhbCBjaG9pY2UgKFJlYXNvbjoKPiAzPURF QVVUSF9MRUFWSU5HKQo+IGF0aDEwazogbWFjIGZsdXNoaW5nIHBlZXIgMDQ6ZjA6MjE6MDM6Mzg6 OTkgb24gdmRldiAxMyBtZ210IHRpZCBmb3IgdW5pY2FzdAo+IG1nbXQKPiBhdGgxMGs6IG1hYyB2 ZGV2IDEzIHBlZXIgZGVsZXRlIDA0OmYwOjIxOjAzOjM4Ojk5IChzdGEgZ29uZSkKPiBhdGgxMGs6 IG1hYyB2ZGV2IDEzIHN0b3AgKGRpc2Fzc29jaWF0ZWQKPiBhdGgxMGs6IG1hYyB2ZGV2IDEzIGRv d24KPiBhdGgxMGs6IG1hYyB2ZGV2IDEzIGN0c19wcm90IDAKPiBhdGgxMGs6IG1hYyB2ZGV2IDEz IHNsb3RfdGltZSAxCj4KPiBhdGgxMGs6IGZhaWxlZCB0byBzZXQgZXJwIHNsb3QgZm9yIHZkZXYg MTM6IC0xMQo+IGF0aDEwazogbWFjIHZkZXYgMTMgcHJlYW1ibGUgMW4KPiBhdGgxMGs6IGZhaWxl ZCB0byBzZXQgcHJlYW1ibGUgZm9yIHZkZXYgMTM6IC0xMQo+IGF0aDEwazogZmFpbGVkIHRvIHNl dCB3bW0gcGFyYW1zOiAtMTEKPiBhdGgxMGs6IGZhaWxlZCB0byBzZXQgd21tIHBhcmFtczogLTEx CgpUaGVzZSBsb2dzIGFyZSBub3QgZW5vdWdoLiBJJ2QgbG92ZSB0byBzZWUgdHJhY2VzIGZvciB0 aGlzIHRvIHNlZSB3aGF0CmZyYW1lcyBhcmUgYWN0dWFsbHkgc3VibWl0dGVkIGFuZCB3aGVuIHR4 IGNyZWRpdHMgYXJlIHJlcGxlbmlzaGVkLgoKSSBhbHNvIHdvbmRlciBpZiB0aGlzIGNhbiBiZSBz b21laG93IHJlbGF0ZWQgdG8geW91ciBGVyBjaGFuZ2VzIHRvCmFsbG93IGNvbm5lY3RpbmcgbXVs dGlwbGUgY2xpZW50IHZpcnR1YWwgaW50ZXJmYWNlcyB0byBhIHNpbmdsZSBBUD8KCgpNaWNoYcWC CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphdGgxMGsg bWFpbGluZyBsaXN0CmF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYXRoMTBrCg==