From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 92A88C4167B for ; Thu, 22 Dec 2022 04:04:26 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 0205F418BE; Thu, 22 Dec 2022 04:04:26 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 0205F418BE Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=K6Rzaxqp X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z6lQt_v5Sr_d; Thu, 22 Dec 2022 04:04:24 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id C3EE8418B4; Thu, 22 Dec 2022 04:04:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org C3EE8418B4 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 89824C0071; Thu, 22 Dec 2022 04:04:23 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 9EA9DC0070 for ; Thu, 22 Dec 2022 04:04:22 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 8707A80C64 for ; Thu, 22 Dec 2022 04:04:22 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 8707A80C64 Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=K6Rzaxqp X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rQK3X9-0crCL for ; Thu, 22 Dec 2022 04:04:21 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 4C8F380C58 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id 4C8F380C58 for ; Thu, 22 Dec 2022 04:04:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1671681860; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KVqpTB9kSDtdBq16iyM8G8mQouGSH6ewMBa3rOuFLhw=; b=K6Rzaxqpnb0oCBt9taWbvJdCTiZfsy6M8MF/kbI2AoVNv8pGGa+sdWmV5BKUvb7CoSkBos AAPk6xPsFFI2cZJEgal7MW8GF+s/feb1XKiEUn5bhSCUd7BcEYFU6TgAwguOXLjrBZEtwk c4rS9CwbQJyshbBRMxY7p02NTSoix3I= Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-308-Y0AHUnMAPAK-OGsJOp2DUg-1; Wed, 21 Dec 2022 23:04:18 -0500 X-MC-Unique: Y0AHUnMAPAK-OGsJOp2DUg-1 Received: by mail-pl1-f197.google.com with SMTP id j18-20020a170902da9200b00189b3b16addso609312plx.23 for ; Wed, 21 Dec 2022 20:04:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KVqpTB9kSDtdBq16iyM8G8mQouGSH6ewMBa3rOuFLhw=; b=sS3u0HG+u3A/o0JZBQfUg114dQImTw0velQfw6yLV8HrwNJccP2jVxVZ/jkpIVvExT VgBYj3waFBD0dCAFtyCj8vQ4jbm+lKdhfQanPQETtEoyB0SbYxY078xvDEm8U38j/2pU b4CBbnMiXEcJRL32gtDv8IMvO04I4dCiUMIBwKOqbtUTJA5cEGOD3a3kMd2Ztrt9LQzi 9l0hPTnEipxBLnr+OA8bThg24dR49gbvteef8/jLonFsbL+T35GSStze6uYE1KKKOK5k kAeT1Pnn9iEqYNSgpFk3q83knntk+govNm422JHvdKLoDGcVfFv42Sz90DBQklKfBnfA vX0Q== X-Gm-Message-State: AFqh2koWCNV+u664R7JTsN8pJYkqjYjCm+22NcS4wcp6TB6s/jTfX2AY YWJ1N9Z2p0pzSiu/Vu6H6XZUhI967pc1PystvgvtPh4rYvwXsnLLnFEdo8QFw1Pj9XO9RPemFau S51j8rKGWX4z/yVPKH/90AyaRz/BIavpog4qyFxM5bA== X-Received: by 2002:a17:903:292:b0:189:c6fb:c215 with SMTP id j18-20020a170903029200b00189c6fbc215mr4884180plr.62.1671681857607; Wed, 21 Dec 2022 20:04:17 -0800 (PST) X-Google-Smtp-Source: AMrXdXvtFmXfh2za0Cq13FxFeZHad5gCC+IwiYM8HpBp8jZumBqbmiAdSfV38KG3mH3iZ/I1GB4lzA== X-Received: by 2002:a17:903:292:b0:189:c6fb:c215 with SMTP id j18-20020a170903029200b00189c6fbc215mr4884162plr.62.1671681857305; Wed, 21 Dec 2022 20:04:17 -0800 (PST) Received: from [10.72.13.15] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id 64-20020a630543000000b0047915d582ccsm10673219pgf.20.2022.12.21.20.04.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 21 Dec 2022 20:04:16 -0800 (PST) Message-ID: <9729769d-e080-8ade-1453-bf757aa84c88@redhat.com> Date: Thu, 22 Dec 2022 12:04:13 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH 4/4] vdpa_sim_net: vendor satistics To: Eugenio Perez Martin References: <20221221061652.15202-1-jasowang@redhat.com> <20221221061652.15202-5-jasowang@redhat.com> From: Jason Wang In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, mst@redhat.com X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CuWcqCAyMDIyLzEyLzIxIDE0OjMzLCBFdWdlbmlvIFBlcmV6IE1hcnRpbiDlhpnpgZM6Cj4gT24g V2VkLCBEZWMgMjEsIDIwMjIgYXQgNzoxNyBBTSBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQu Y29tPiB3cm90ZToKPj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGJhc2ljIHZlbmRvciBz dGF0cyB0aGF0IGluY2x1ZGUgY291bnRlcnMKPj4gZm9yIHR4LCByeCBhbmQgY3ZxLgo+Pgo+PiBT aWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgo+PiAtLS0KPj4g ICBkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyAgICAgfCAgIDIgKwo+PiAgIGRyaXZl cnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbV9uZXQuYyB8IDIxNSArKysrKysrKysrKysrKysrKysr KysrKysrKy0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2lt LmMgYi9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYwo+PiBpbmRleCAwMmU4OTJmODE5 ZTcuLjU5NWQ5ZDVhMzcyZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3Zk cGFfc2ltLmMKPj4gKysrIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMKPj4gQEAg LTc1NSw4ICs3NTUsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRw YXNpbV9iYXRjaF9jb25maWdfb3BzID0gewo+PiAgICAgICAgICAuc2V0X3ZxX2NiICAgICAgICAg ICAgICA9IHZkcGFzaW1fc2V0X3ZxX2NiLAo+PiAgICAgICAgICAuc2V0X3ZxX3JlYWR5ICAgICAg ICAgICA9IHZkcGFzaW1fc2V0X3ZxX3JlYWR5LAo+PiAgICAgICAgICAuZ2V0X3ZxX3JlYWR5ICAg ICAgICAgICA9IHZkcGFzaW1fZ2V0X3ZxX3JlYWR5LAo+PiArICAgICAgIC5nZXRfdmVuZG9yX3Zx X3N0YXRzICAgID0gdmRwYXNpbV9nZXRfdnFfc3RhdHMsCj4+ICAgICAgICAgIC5zZXRfdnFfc3Rh dGUgICAgICAgICAgID0gdmRwYXNpbV9zZXRfdnFfc3RhdGUsCj4+ICAgICAgICAgIC5nZXRfdnFf c3RhdGUgICAgICAgICAgID0gdmRwYXNpbV9nZXRfdnFfc3RhdGUsCj4+ICsgICAgICAgLmdldF92 ZW5kb3JfdnFfc3RhdHMgICAgPSB2ZHBhc2ltX2dldF92cV9zdGF0cywKPiBUaGUgcGF0Y2ggYWRk cyAuZ2V0X3ZlbmRvcl92cV9zdGF0cyB0d2ljZSB0byB2ZHBhc2ltX2JhdGNoX2NvbmZpZ19vcHMK PiBhc3NpZ25tZW50LgoKCldpbGwgZml4LgoKCj4KPj4gICAgICAgICAgLmdldF92cV9hbGlnbiAg ICAgICAgICAgPSB2ZHBhc2ltX2dldF92cV9hbGlnbiwKPj4gICAgICAgICAgLmdldF92cV9ncm91 cCAgICAgICAgICAgPSB2ZHBhc2ltX2dldF92cV9ncm91cCwKPj4gICAgICAgICAgLmdldF9kZXZp Y2VfZmVhdHVyZXMgICAgPSB2ZHBhc2ltX2dldF9kZXZpY2VfZmVhdHVyZXMsCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW1fbmV0LmMgYi9kcml2ZXJzL3ZkcGEv dmRwYV9zaW0vdmRwYV9zaW1fbmV0LmMKPj4gaW5kZXggMjBjZDVjZGZmOTE5Li4zYzA1ZTkzMmQ5 MGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbV9uZXQuYwo+ PiArKysgYi9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW1fbmV0LmMKPj4gQEAgLTE1LDYg KzE1LDcgQEAKPj4gICAjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4KPj4gICAjaW5jbHVk ZSA8bGludXgvdnJpbmdoLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L3ZkcGEuaD4KPj4gKyNpbmNs dWRlIDxuZXQvbmV0bGluay5oPgo+PiAgICNpbmNsdWRlIDx1YXBpL2xpbnV4L3ZpcnRpb19uZXQu aD4KPj4gICAjaW5jbHVkZSA8dWFwaS9saW51eC92ZHBhLmg+Cj4+Cj4+IEBAIC0zNiw2ICszNywz NCBAQAo+PiAgICNkZWZpbmUgVkRQQVNJTV9ORVRfQVNfTlVNICAgICAyCj4+ICAgI2RlZmluZSBW RFBBU0lNX05FVF9HUk9VUF9OVU0gIDIKPj4KPj4gK3N0cnVjdCB2ZHBhc2ltX2RhdGFxX3N0YXRz IHsKPj4gKyAgICAgICBzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7Cj4+ICsgICAgICAgdTY0 IHBrdHM7Cj4+ICsgICAgICAgdTY0IGJ5dGVzOwo+PiArICAgICAgIHU2NCBkcm9wczsKPj4gKyAg ICAgICB1NjQgZXJyb3JzOwo+PiArICAgICAgIHU2NCBvdmVycnVuczsKPj4gK307Cj4+ICsKPj4g K3N0cnVjdCB2ZHBhc2ltX2NxX3N0YXRzIHsKPj4gKyAgICAgICBzdHJ1Y3QgdTY0X3N0YXRzX3N5 bmMgc3luY3A7Cj4+ICsgICAgICAgdTY0IHJlcXVlc3RzOwo+PiArICAgICAgIHU2NCBzdWNjZXNz ZXM7Cj4+ICsgICAgICAgdTY0IGVycm9yczsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCB2ZHBhc2lt X25ldHsKPj4gKyAgICAgICBzdHJ1Y3QgdmRwYXNpbSB2ZHBhc2ltOwo+PiArICAgICAgIHN0cnVj dCB2ZHBhc2ltX2RhdGFxX3N0YXRzIHR4X3N0YXRzOwo+PiArICAgICAgIHN0cnVjdCB2ZHBhc2lt X2RhdGFxX3N0YXRzIHJ4X3N0YXRzOwo+PiArICAgICAgIHN0cnVjdCB2ZHBhc2ltX2NxX3N0YXRz IGNxX3N0YXRzOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCB2ZHBhc2ltX25ldCAqc2lt X3RvX25ldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSkKPj4gK3sKPj4gKyAgICAgICByZXR1cm4g Y29udGFpbmVyX29mKHZkcGFzaW0sIHN0cnVjdCB2ZHBhc2ltX25ldCwgdmRwYXNpbSk7Cj4+ICt9 Cj4+ICsKPj4gICBzdGF0aWMgdm9pZCB2ZHBhc2ltX25ldF9jb21wbGV0ZShzdHJ1Y3QgdmRwYXNp bV92aXJ0cXVldWUgKnZxLCBzaXplX3QgbGVuKQo+PiAgIHsKPj4gICAgICAgICAgLyogTWFrZSBz dXJlIGRhdGEgaXMgd3JvdGUgYmVmb3JlIGFkdmFuY2luZyBpbmRleCAqLwo+PiBAQCAtOTMsOSAr MTIyLDExIEBAIHN0YXRpYyB2aXJ0aW9fbmV0X2N0cmxfYWNrIHZkcGFzaW1faGFuZGxlX2N0cmxf bWFjKHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLAo+PiAgIHN0YXRpYyB2b2lkIHZkcGFzaW1faGFu ZGxlX2N2cShzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSkKPj4gICB7Cj4+ICAgICAgICAgIHN0cnVj dCB2ZHBhc2ltX3ZpcnRxdWV1ZSAqY3ZxID0gJnZkcGFzaW0tPnZxc1syXTsKPj4gKyAgICAgICBz dHJ1Y3QgdmRwYXNpbV9uZXQgKm5ldCA9IHNpbV90b19uZXQodmRwYXNpbSk7Cj4+ICAgICAgICAg IHZpcnRpb19uZXRfY3RybF9hY2sgc3RhdHVzID0gVklSVElPX05FVF9FUlI7Cj4+ICAgICAgICAg IHN0cnVjdCB2aXJ0aW9fbmV0X2N0cmxfaGRyIGN0cmw7Cj4+ICAgICAgICAgIHNpemVfdCByZWFk LCB3cml0ZTsKPj4gKyAgICAgICB1NjQgcmVxdWVzdHMgPSAwLCBlcnJvcnMgPSAwOwo+PiAgICAg ICAgICBpbnQgZXJyOwo+Pgo+PiAgICAgICAgICBpZiAoISh2ZHBhc2ltLT5mZWF0dXJlcyAmICgx VUxMIDw8IFZJUlRJT19ORVRfRl9DVFJMX1ZRKSkpCj4+IEBAIC0xMTMsOCArMTQ0LDEyIEBAIHN0 YXRpYyB2b2lkIHZkcGFzaW1faGFuZGxlX2N2cShzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSkKPj4K Pj4gICAgICAgICAgICAgICAgICByZWFkID0gdnJpbmdoX2lvdl9wdWxsX2lvdGxiKCZjdnEtPnZy aW5nLCAmY3ZxLT5pbl9pb3YsICZjdHJsLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0cmwpKTsKPj4gLSAgICAgICAgICAgICAgIGlmIChy ZWFkICE9IHNpemVvZihjdHJsKSkKPj4gKyAgICAgICAgICAgICAgIGlmIChyZWFkICE9IHNpemVv ZihjdHJsKSkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICArK2Vycm9yczsKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgfQo+PiArCj4+ICsg ICAgICAgICAgICAgICArK3JlcXVlc3RzOwo+Pgo+PiAgICAgICAgICAgICAgICAgIHN3aXRjaCAo Y3RybC5jbGFzcykgewo+PiAgICAgICAgICAgICAgICAgIGNhc2UgVklSVElPX05FVF9DVFJMX01B QzoKPj4gQEAgLTE0MSw2ICsxNzYsMTIgQEAgc3RhdGljIHZvaWQgdmRwYXNpbV9oYW5kbGVfY3Zx KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgY3Zx LT5jYihjdnEtPnByaXZhdGUpOwo+PiAgICAgICAgICAgICAgICAgIGxvY2FsX2JoX2VuYWJsZSgp Owo+PiAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZu ZXQtPmNxX3N0YXRzLnN5bmNwKTsKPj4gKyAgICAgICBuZXQtPmNxX3N0YXRzLnJlcXVlc3RzICs9 IHJlcXVlc3RzOwo+PiArICAgICAgIG5ldC0+Y3Ffc3RhdHMuZXJyb3JzICs9IGVycm9yczsKPj4g KyAgICAgICBuZXQtPmNxX3N0YXRzLnN1Y2Nlc3NlcyArPSByZXF1ZXN0czsKPiBJJ2Qgc2F5IHdl IHNob3VsZCBtYWludGFpbiBoZXJlIHJlcXVlc3RzID09IGVycm9ycyArIHJlcXVlc3RzLgo+Cj4g SW50dWl0aXZlbHksIEknZCByZW5hbWUgbG9jYWwgdmFyaWFibGUgcmVxdWVzdHMgdG8gc3VjY2Vz c2VzLCBhbmQgSSdkIGFwcGx5Ogo+IG5ldC0+Y3Ffc3RhdHMucmVxdWVzdHMgKz0gc3VjY2Vzc2Vz ICsgZXJyb3JzOwo+IG5ldC0+Y3Ffc3RhdHMuZXJyb3JzICs9IGVycm9yczsKPiBuZXQtPmNxX3N0 YXRzLnN1Y2Nlc3NlcyArPSBzdWNjZXNzZXM7Cj4KPiBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5n PwoKCkV4YWN0bHksIGxldCBtZSBmaXguCgpUaGFua3MKCgo+Cj4gVGhhbmtzIQo+Cj4+ICsgICAg ICAgdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJm5ldC0+Y3Ffc3RhdHMuc3luY3ApOwo+PiAgIH0KPj4K Pj4gICBzdGF0aWMgdm9pZCB2ZHBhc2ltX25ldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPj4gQEAgLTE0OCw4ICsxODksMTAgQEAgc3RhdGljIHZvaWQgdmRwYXNpbV9uZXRfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4+ICAgICAgICAgIHN0cnVjdCB2ZHBhc2ltICp2ZHBh c2ltID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2ZHBhc2ltLCB3b3JrKTsKPj4gICAgICAg ICAgc3RydWN0IHZkcGFzaW1fdmlydHF1ZXVlICp0eHEgPSAmdmRwYXNpbS0+dnFzWzFdOwo+PiAg ICAgICAgICBzdHJ1Y3QgdmRwYXNpbV92aXJ0cXVldWUgKnJ4cSA9ICZ2ZHBhc2ltLT52cXNbMF07 Cj4+ICsgICAgICAgc3RydWN0IHZkcGFzaW1fbmV0ICpuZXQgPSBzaW1fdG9fbmV0KHZkcGFzaW0p Owo+PiAgICAgICAgICBzc2l6ZV90IHJlYWQsIHdyaXRlOwo+PiAtICAgICAgIGludCBwa3RzID0g MDsKPj4gKyAgICAgICB1NjQgdHhfcGt0cyA9IDAsIHJ4X3BrdHMgPSAwLCB0eF9ieXRlcyA9IDAs IHJ4X2J5dGVzID0gMDsKPj4gKyAgICAgICB1NjQgcnhfZHJvcHMgPSAwLCByeF9vdmVycnVucyA9 IDAsIHJ4X2Vycm9ycyA9IDAsIHR4X2Vycm9ycyA9IDA7Cj4+ICAgICAgICAgIGludCBlcnI7Cj4+ Cj4+ICAgICAgICAgIHNwaW5fbG9jaygmdmRwYXNpbS0+bG9jayk7Cj4+IEBAIC0xNjgsMTQgKzIx MSwyMSBAQCBzdGF0aWMgdm9pZCB2ZHBhc2ltX25ldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKPj4gICAgICAgICAgd2hpbGUgKHRydWUpIHsKPj4gICAgICAgICAgICAgICAgICBlcnIg PSB2cmluZ2hfZ2V0ZGVzY19pb3RsYigmdHhxLT52cmluZywgJnR4cS0+b3V0X2lvdiwgTlVMTCwK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHhxLT5oZWFk LCBHRlBfQVRPTUlDKTsKPj4gLSAgICAgICAgICAgICAgIGlmIChlcnIgPD0gMCkKPj4gKyAgICAg ICAgICAgICAgIGlmIChlcnIgPD0gMCkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo ZXJyKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrdHhfZXJyb3JzOwo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+Cj4+ ICsgICAgICAgICAgICAgICArK3R4X3BrdHM7Cj4+ICAgICAgICAgICAgICAgICAgcmVhZCA9IHZy aW5naF9pb3ZfcHVsbF9pb3RsYigmdHhxLT52cmluZywgJnR4cS0+b3V0X2lvdiwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZkcGFzaW0tPmJ1ZmZlciwK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfU0la RSk7Cj4+Cj4+ICsgICAgICAgICAgICAgICB0eF9ieXRlcyArPSByZWFkOwo+PiArCj4+ICAgICAg ICAgICAgICAgICAgaWYgKCFyZWNlaXZlX2ZpbHRlcih2ZHBhc2ltLCByZWFkKSkgewo+PiArICAg ICAgICAgICAgICAgICAgICAgICArK3J4X2Ryb3BzOwo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgdmRwYXNpbV9uZXRfY29tcGxldGUodHhxLCAwKTsKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwo+PiAgICAgICAgICAgICAgICAgIH0KPj4gQEAgLTE4MywxOSArMjMzLDI1 IEBAIHN0YXRpYyB2b2lkIHZkcGFzaW1fbmV0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQo+PiAgICAgICAgICAgICAgICAgIGVyciA9IHZyaW5naF9nZXRkZXNjX2lvdGxiKCZyeHEtPnZy aW5nLCBOVUxMLCAmcnhxLT5pbl9pb3YsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnJ4cS0+aGVhZCwgR0ZQX0FUT01JQyk7Cj4+ICAgICAgICAgICAgICAg ICAgaWYgKGVyciA8PSAwKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICsrcnhfb3ZlcnJ1 bnM7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHBhc2ltX25ldF9jb21wbGV0ZSh0eHEs IDApOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgICAgICAg ICAgfQo+Pgo+PiAgICAgICAgICAgICAgICAgIHdyaXRlID0gdnJpbmdoX2lvdl9wdXNoX2lvdGxi KCZyeHEtPnZyaW5nLCAmcnhxLT5pbl9pb3YsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmRwYXNpbS0+YnVmZmVyLCByZWFkKTsKPj4gLSAgICAgICAg ICAgICAgIGlmICh3cml0ZSA8PSAwKQo+PiArICAgICAgICAgICAgICAgaWYgKHdyaXRlIDw9IDAp IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgKytyeF9lcnJvcnM7Cj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAg ICAgICAgICAgKytyeF9wa3RzOwo+PiArICAgICAgICAgICAgICAgcnhfYnl0ZXMgKz0gd3JpdGU7 Cj4+Cj4+ICAgICAgICAgICAgICAgICAgdmRwYXNpbV9uZXRfY29tcGxldGUodHhxLCAwKTsKPj4g ICAgICAgICAgICAgICAgICB2ZHBhc2ltX25ldF9jb21wbGV0ZShyeHEsIHdyaXRlKTsKPj4KPj4g LSAgICAgICAgICAgICAgIGlmICgrK3BrdHMgPiA0KSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAo dHhfcGt0cyA+IDQpIHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlX3dvcmso JnZkcGFzaW0tPndvcmspOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4+ ICAgICAgICAgICAgICAgICAgfQo+PiBAQCAtMjAzLDYgKzI1OSwxNDUgQEAgc3RhdGljIHZvaWQg dmRwYXNpbV9uZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4+Cj4+ICAgb3V0Ogo+ PiAgICAgICAgICBzcGluX3VubG9jaygmdmRwYXNpbS0+bG9jayk7Cj4+ICsKPj4gKyAgICAgICB1 NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZuZXQtPnR4X3N0YXRzLnN5bmNwKTsKPj4gKyAgICAgICBu ZXQtPnR4X3N0YXRzLnBrdHMgKz0gdHhfcGt0czsKPj4gKyAgICAgICBuZXQtPnR4X3N0YXRzLmJ5 dGVzICs9IHR4X2J5dGVzOwo+PiArICAgICAgIG5ldC0+dHhfc3RhdHMuZXJyb3JzICs9IHR4X2Vy cm9yczsKPj4gKyAgICAgICB1NjRfc3RhdHNfdXBkYXRlX2VuZCgmbmV0LT50eF9zdGF0cy5zeW5j cCk7Cj4+ICsKPj4gKyAgICAgICB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZuZXQtPnJ4X3N0YXRz LnN5bmNwKTsKPj4gKyAgICAgICBuZXQtPnJ4X3N0YXRzLnBrdHMgKz0gcnhfcGt0czsKPj4gKyAg ICAgICBuZXQtPnJ4X3N0YXRzLmJ5dGVzICs9IHJ4X2J5dGVzOwo+PiArICAgICAgIG5ldC0+cnhf c3RhdHMuZHJvcHMgKz0gcnhfZHJvcHM7Cj4+ICsgICAgICAgbmV0LT5yeF9zdGF0cy5lcnJvcnMg Kz0gcnhfZXJyb3JzOwo+PiArICAgICAgIG5ldC0+cnhfc3RhdHMub3ZlcnJ1bnMgKz0gcnhfb3Zl cnJ1bnM7Cj4+ICsgICAgICAgdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJm5ldC0+cnhfc3RhdHMuc3lu Y3ApOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHZkcGFzaW1fbmV0X2dldF9zdGF0cyhzdHJ1 Y3QgdmRwYXNpbSAqdmRwYXNpbSwgdTE2IGlkeCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKm1zZywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQo+PiArewo+PiArICAgICAg IHN0cnVjdCB2ZHBhc2ltX25ldCAqbmV0ID0gc2ltX3RvX25ldCh2ZHBhc2ltKTsKPj4gKyAgICAg ICB1NjQgcnhfcGt0cywgcnhfYnl0ZXMsIHJ4X2Vycm9ycywgcnhfb3ZlcnJ1bnMsIHJ4X2Ryb3Bz Owo+PiArICAgICAgIHU2NCB0eF9wa3RzLCB0eF9ieXRlcywgdHhfZXJyb3JzLCB0eF9kcm9wczsK Pj4gKyAgICAgICB1NjQgY3FfcmVxdWVzdHMsIGNxX3N1Y2Nlc3NlcywgY3FfZXJyb3JzOwo+PiAr ICAgICAgIHVuc2lnbmVkIGludCBzdGFydDsKPj4gKyAgICAgICBpbnQgZXJyID0gLUVNU0dTSVpF Owo+PiArCj4+ICsgICAgICAgc3dpdGNoKGlkeCkgewo+PiArICAgICAgIGNhc2UgMDoKPj4gKyAg ICAgICAgICAgICAgIGRvIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB1NjRf c3RhdHNfZmV0Y2hfYmVnaW4oJm5ldC0+cnhfc3RhdHMuc3luY3ApOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICByeF9wa3RzID0gbmV0LT5yeF9zdGF0cy5wa3RzOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICByeF9ieXRlcyA9IG5ldC0+cnhfc3RhdHMuYnl0ZXM7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJ4X2Vycm9ycyA9IG5ldC0+cnhfc3RhdHMuZXJyb3JzOwo+PiArICAgICAg ICAgICAgICAgICAgICAgICByeF9vdmVycnVucyA9IG5ldC0+cnhfc3RhdHMub3ZlcnJ1bnM7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJ4X2Ryb3BzID0gbmV0LT5yeF9zdGF0cy5kcm9wczsK Pj4gKyAgICAgICAgICAgICAgIH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeSgmbmV0LT5y eF9zdGF0cy5zeW5jcCwgc3RhcnQpKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9w dXRfc3RyaW5nKG1zZywgVkRQQV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ4IHBhY2tldHMiKSkKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF91 NjRfNjRiaXQobXNnLCBWRFBBX0FUVFJfREVWX1ZFTkRPUl9BVFRSX1ZBTFVFLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X3BrdHMsIFZEUEFfQVRUUl9QQUQpKQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChu bGFfcHV0X3N0cmluZyhtc2csIFZEUEFfQVRUUl9ERVZfVkVORE9SX0FUVFJfTkFNRSwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyeCBieXRlcyIpKQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChubGFfcHV0X3U2NF82 NGJpdChtc2csIFZEUEFfQVRUUl9ERVZfVkVORE9SX0FUVFJfVkFMVUUsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnhfYnl0ZXMsIFZEUEFfQVRUUl9QQUQpKQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChubGFf cHV0X3N0cmluZyhtc2csIFZEUEFfQVRUUl9ERVZfVkVORE9SX0FUVFJfTkFNRSwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyeCBlcnJvcnMiKSkKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF91NjRfNjRi aXQobXNnLCBWRFBBX0FUVFJfREVWX1ZFTkRPUl9BVFRSX1ZBTFVFLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X2Vycm9ycywgVkRQQV9BVFRSX1BBRCkpCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9w dXRfc3RyaW5nKG1zZywgVkRQQV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ4IG92ZXJydW5zcyIpKQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChubGFfcHV0X3U2NF82 NGJpdChtc2csIFZEUEFfQVRUUl9ERVZfVkVORE9SX0FUVFJfVkFMVUUsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnhfb3ZlcnJ1bnMsIFZEUEFfQVRUUl9QQUQpKQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChu bGFfcHV0X3N0cmluZyhtc2csIFZEUEFfQVRUUl9ERVZfVkVORE9SX0FUVFJfTkFNRSwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyeCBkcm9wcyIpKQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChubGFfcHV0X3U2NF82 NGJpdChtc2csIFZEUEFfQVRUUl9ERVZfVkVORE9SX0FUVFJfVkFMVUUsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnhfZHJvcHMsIFZEUEFfQVRUUl9QQUQpKQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgIGVyciA9IDA7 Cj4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICBjYXNlIDE6Cj4+ICsgICAgICAg ICAgICAgICBkbyB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gdTY0X3N0YXRz X2ZldGNoX2JlZ2luKCZuZXQtPnR4X3N0YXRzLnN5bmNwKTsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgdHhfcGt0cyA9IG5ldC0+dHhfc3RhdHMucGt0czsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgdHhfYnl0ZXMgPSBuZXQtPnR4X3N0YXRzLmJ5dGVzOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICB0eF9lcnJvcnMgPSBuZXQtPnR4X3N0YXRzLmVycm9yczsKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgdHhfZHJvcHMgPSBuZXQtPnR4X3N0YXRzLmRyb3BzOwo+PiArICAgICAgICAg ICAgICAgfSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KCZuZXQtPnR4X3N0YXRzLnN5bmNw LCBzdGFydCkpOwo+PiArCj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF9zdHJpbmcobXNn LCBWRFBBX0FUVFJfREVWX1ZFTkRPUl9BVFRSX05BTUUsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidHggcGFja2V0cyIpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKPj4gKyAgICAgICAgICAgICAgIGlmIChubGFfcHV0X3U2NF82NGJpdChtc2csIFZEUEFf QVRUUl9ERVZfVkVORE9SX0FUVFJfVkFMVUUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHhfcGt0cywgVkRQQV9BVFRSX1BBRCkpCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfc3RyaW5nKG1zZywg VkRQQV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInR4IGJ5dGVzIikpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfdTY0XzY0Yml0KG1zZywgVkRQQV9BVFRS X0RFVl9WRU5ET1JfQVRUUl9WQUxVRSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0eF9ieXRlcywgVkRQQV9BVFRSX1BBRCkpCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfc3RyaW5nKG1zZywgVkRQ QV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInR4IGVycm9ycyIpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK Pj4gKyAgICAgICAgICAgICAgIGlmIChubGFfcHV0X3U2NF82NGJpdChtc2csIFZEUEFfQVRUUl9E RVZfVkVORE9SX0FUVFJfVkFMVUUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHhfZXJyb3JzLCBWRFBBX0FUVFJfUEFEKSkKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF9zdHJpbmcobXNnLCBWRFBB X0FUVFJfREVWX1ZFTkRPUl9BVFRSX05BTUUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAidHggZHJvcHMiKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF91NjRfNjRiaXQobXNnLCBWRFBBX0FUVFJfREVW X1ZFTkRPUl9BVFRSX1ZBTFVFLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHR4X2Ryb3BzLCBWRFBBX0FUVFJfUEFEKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4+ICsgICAgICAgICAgICAgICBlcnIgPSAwOwo+PiArICAgICAgICAgICAgICAgYnJl YWs7Cj4+ICsgICAgICAgY2FzZSAyOgo+PiArICAgICAgICAgICAgICAgZG8gewo+PiArICAgICAg ICAgICAgICAgICAgICAgICBzdGFydCA9IHU2NF9zdGF0c19mZXRjaF9iZWdpbigmbmV0LT5jcV9z dGF0cy5zeW5jcCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNxX3JlcXVlc3RzID0gbmV0 LT5jcV9zdGF0cy5yZXF1ZXN0czsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY3Ffc3VjY2Vz c2VzID0gbmV0LT5jcV9zdGF0cy5zdWNjZXNzZXM7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGNxX2Vycm9ycyA9IG5ldC0+Y3Ffc3RhdHMuZXJyb3JzOwo+PiArICAgICAgICAgICAgICAgfSB3 aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KCZuZXQtPmNxX3N0YXRzLnN5bmNwLCBzdGFydCkp Owo+PiArCj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF9zdHJpbmcobXNnLCBWRFBBX0FU VFJfREVWX1ZFTkRPUl9BVFRSX05BTUUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiY3ZxIHJlcXVlc3RzIikpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ PiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfdTY0XzY0Yml0KG1zZywgVkRQQV9BVFRSX0RF Vl9WRU5ET1JfQVRUUl9WQUxVRSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjcV9yZXF1ZXN0cywgVkRQQV9BVFRSX1BBRCkpCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfc3RyaW5nKG1zZywgVkRQ QV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImN2cSBzdWNjZXNzZXMiKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7Cj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF91NjRfNjRiaXQobXNnLCBWRFBBX0FU VFJfREVWX1ZFTkRPUl9BVFRSX1ZBTFVFLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNxX3N1Y2Nlc3NlcywgVkRQQV9BVFRSX1BBRCkpCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgaWYgKG5sYV9wdXRfc3RyaW5nKG1z ZywgVkRQQV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImN2cSBlcnJvcnMiKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4+ICsgICAgICAgICAgICAgICBpZiAobmxhX3B1dF91NjRfNjRiaXQobXNnLCBWRFBB X0FUVFJfREVWX1ZFTkRPUl9BVFRSX1ZBTFVFLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNxX2Vycm9ycywgVkRQQV9BVFRSX1BBRCkpCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgICAgZXJyID0gMDsKPj4gKyAgICAgICAg ICAgICAgIGJyZWFrOwo+PiArICAgICAgIGRlZmF1bHQ6Cj4+ICsgICAgICAgICAgICAgICBlcnIg PSAtRUlOVkFMOwo+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgfQo+PiArCj4+ ICsgICAgICAgcmV0dXJuIGVycjsKPj4gICB9Cj4+Cj4+ICAgc3RhdGljIHZvaWQgdmRwYXNpbV9u ZXRfZ2V0X2NvbmZpZyhzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSwgdm9pZCAqY29uZmlnKQo+PiBA QCAtMjM5LDYgKzQzNCw3IEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9uZXRfZGV2X2FkZChzdHJ1Y3Qg dmRwYV9tZ210X2RldiAqbWRldiwgY29uc3QgY2hhciAqbmFtZSwKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmRwYV9kZXZfc2V0X2NvbmZpZyAqY29uZmln KQo+PiAgIHsKPj4gICAgICAgICAgc3RydWN0IHZkcGFzaW1fZGV2X2F0dHIgZGV2X2F0dHIgPSB7 fTsKPj4gKyAgICAgICBzdHJ1Y3QgdmRwYXNpbV9uZXQgKm5ldDsKPj4gICAgICAgICAgc3RydWN0 IHZkcGFzaW0gKnNpbWRldjsKPj4gICAgICAgICAgaW50IHJldDsKPj4KPj4gQEAgLTI0OSwxMCAr NDQ1LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9uZXRfZGV2X2FkZChzdHJ1Y3QgdmRwYV9tZ210 X2RldiAqbWRldiwgY29uc3QgY2hhciAqbmFtZSwKPj4gICAgICAgICAgZGV2X2F0dHIubnZxcyA9 IFZEUEFTSU1fTkVUX1ZRX05VTTsKPj4gICAgICAgICAgZGV2X2F0dHIubmdyb3VwcyA9IFZEUEFT SU1fTkVUX0dST1VQX05VTTsKPj4gICAgICAgICAgZGV2X2F0dHIubmFzID0gVkRQQVNJTV9ORVRf QVNfTlVNOwo+PiAtICAgICAgIGRldl9hdHRyLmFsbG9jX3NpemUgPSBzaXplb2Yoc3RydWN0IHZk cGFzaW0pOwo+PiArICAgICAgIGRldl9hdHRyLmFsbG9jX3NpemUgPSBzaXplb2Yoc3RydWN0IHZk cGFzaW1fbmV0KTsKPj4gICAgICAgICAgZGV2X2F0dHIuY29uZmlnX3NpemUgPSBzaXplb2Yoc3Ry dWN0IHZpcnRpb19uZXRfY29uZmlnKTsKPj4gICAgICAgICAgZGV2X2F0dHIuZ2V0X2NvbmZpZyA9 IHZkcGFzaW1fbmV0X2dldF9jb25maWc7Cj4+ICAgICAgICAgIGRldl9hdHRyLndvcmtfZm4gPSB2 ZHBhc2ltX25ldF93b3JrOwo+PiArICAgICAgIGRldl9hdHRyLmdldF9zdGF0cyA9IHZkcGFzaW1f bmV0X2dldF9zdGF0czsKPj4gICAgICAgICAgZGV2X2F0dHIuYnVmZmVyX3NpemUgPSBQQUdFX1NJ WkU7Cj4+Cj4+ICAgICAgICAgIHNpbWRldiA9IHZkcGFzaW1fY3JlYXRlKCZkZXZfYXR0ciwgY29u ZmlnKTsKPj4gQEAgLTI2NSw2ICs0NjIsMTIgQEAgc3RhdGljIGludCB2ZHBhc2ltX25ldF9kZXZf YWRkKHN0cnVjdCB2ZHBhX21nbXRfZGV2ICptZGV2LCBjb25zdCBjaGFyICpuYW1lLAo+PiAgICAg ICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgICAgICAgIGdvdG8gcmVnX2VycjsKPj4KPj4gKyAg ICAgICBuZXQgPSBzaW1fdG9fbmV0KHNpbWRldik7Cj4+ICsKPj4gKyAgICAgICB1NjRfc3RhdHNf aW5pdCgmbmV0LT50eF9zdGF0cy5zeW5jcCk7Cj4+ICsgICAgICAgdTY0X3N0YXRzX2luaXQoJm5l dC0+cnhfc3RhdHMuc3luY3ApOwo+PiArICAgICAgIHU2NF9zdGF0c19pbml0KCZuZXQtPmNxX3N0 YXRzLnN5bmNwKTsKPj4gKwo+PiAgICAgICAgICByZXR1cm4gMDsKPj4KPj4gICByZWdfZXJyOgo+ PiAtLQo+PiAyLjI1LjEKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0 cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcv bWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 501C7C4332F for ; Thu, 22 Dec 2022 04:07:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234883AbiLVEFT (ORCPT ); Wed, 21 Dec 2022 23:05:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229726AbiLVEFP (ORCPT ); Wed, 21 Dec 2022 23:05:15 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21DC322B32 for ; Wed, 21 Dec 2022 20:04:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1671681860; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KVqpTB9kSDtdBq16iyM8G8mQouGSH6ewMBa3rOuFLhw=; b=K6Rzaxqpnb0oCBt9taWbvJdCTiZfsy6M8MF/kbI2AoVNv8pGGa+sdWmV5BKUvb7CoSkBos AAPk6xPsFFI2cZJEgal7MW8GF+s/feb1XKiEUn5bhSCUd7BcEYFU6TgAwguOXLjrBZEtwk c4rS9CwbQJyshbBRMxY7p02NTSoix3I= Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-335-jo49eKfsNcGHz5Xz_1OK4A-1; Wed, 21 Dec 2022 23:04:18 -0500 X-MC-Unique: jo49eKfsNcGHz5Xz_1OK4A-1 Received: by mail-pf1-f199.google.com with SMTP id a18-20020a62bd12000000b0056e7b61ec78so395453pff.17 for ; Wed, 21 Dec 2022 20:04:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KVqpTB9kSDtdBq16iyM8G8mQouGSH6ewMBa3rOuFLhw=; b=xLhxpVml4M7qq5n6fW1pWe/sj1+4hPmta5660LcXORcHfIjVsViR1MPnSVQPQZzG4r BiD5MrVx5n4mlKeMECqEnCk+Wv51jfxmvKgOquSh2KbeLr5MCKHaCnCBEuTnB9NVbheu hEiCmGvjDquC1jm8Ba6RZnJSmbXwE4ihQQC3lhkefhuYvcJr6g6xy+PaBYVM9AMjZe7A ch9KmUtXGDezoXhrGagRdx5Hi5LfYAc12y/uULmWaq/KmdTsg51Wj7do85DhU4A2eObH ihwcJiyWWKqKxGkR0wE4RPjaarBPrmUM8zWLmBbAheQET/6qsQeDeVBU8eCj2xnxfRxn S4ag== X-Gm-Message-State: AFqh2kq7sO/pYMTluLtKpbmpg5H/xHAx/yWnmmCScdq3NQ9E1LxBaZcY KFFXIT3L2aEyaJZjfpjLjLBhe6hIR4XBiHATiVp2s3WkJb9kEADgzNRs3106mFD8MjT1czKhP4s DOwmoVXBUjnnblCC4laK1Ugym X-Received: by 2002:a17:903:292:b0:189:c6fb:c215 with SMTP id j18-20020a170903029200b00189c6fbc215mr4884182plr.62.1671681857626; Wed, 21 Dec 2022 20:04:17 -0800 (PST) X-Google-Smtp-Source: AMrXdXvtFmXfh2za0Cq13FxFeZHad5gCC+IwiYM8HpBp8jZumBqbmiAdSfV38KG3mH3iZ/I1GB4lzA== X-Received: by 2002:a17:903:292:b0:189:c6fb:c215 with SMTP id j18-20020a170903029200b00189c6fbc215mr4884162plr.62.1671681857305; Wed, 21 Dec 2022 20:04:17 -0800 (PST) Received: from [10.72.13.15] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id 64-20020a630543000000b0047915d582ccsm10673219pgf.20.2022.12.21.20.04.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 21 Dec 2022 20:04:16 -0800 (PST) Message-ID: <9729769d-e080-8ade-1453-bf757aa84c88@redhat.com> Date: Thu, 22 Dec 2022 12:04:13 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH 4/4] vdpa_sim_net: vendor satistics Content-Language: en-US To: Eugenio Perez Martin Cc: mst@redhat.com, sgarzare@redhat.com, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org References: <20221221061652.15202-1-jasowang@redhat.com> <20221221061652.15202-5-jasowang@redhat.com> From: Jason Wang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2022/12/21 14:33, Eugenio Perez Martin 写道: > On Wed, Dec 21, 2022 at 7:17 AM Jason Wang wrote: >> This patch adds support for basic vendor stats that include counters >> for tx, rx and cvq. >> >> Signed-off-by: Jason Wang >> --- >> drivers/vdpa/vdpa_sim/vdpa_sim.c | 2 + >> drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 215 ++++++++++++++++++++++++++- >> 2 files changed, 211 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c >> index 02e892f819e7..595d9d5a372f 100644 >> --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c >> +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c >> @@ -755,8 +755,10 @@ static const struct vdpa_config_ops vdpasim_batch_config_ops = { >> .set_vq_cb = vdpasim_set_vq_cb, >> .set_vq_ready = vdpasim_set_vq_ready, >> .get_vq_ready = vdpasim_get_vq_ready, >> + .get_vendor_vq_stats = vdpasim_get_vq_stats, >> .set_vq_state = vdpasim_set_vq_state, >> .get_vq_state = vdpasim_get_vq_state, >> + .get_vendor_vq_stats = vdpasim_get_vq_stats, > The patch adds .get_vendor_vq_stats twice to vdpasim_batch_config_ops > assignment. Will fix. > >> .get_vq_align = vdpasim_get_vq_align, >> .get_vq_group = vdpasim_get_vq_group, >> .get_device_features = vdpasim_get_device_features, >> diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c >> index 20cd5cdff919..3c05e932d90d 100644 >> --- a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c >> +++ b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c >> @@ -15,6 +15,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> >> @@ -36,6 +37,34 @@ >> #define VDPASIM_NET_AS_NUM 2 >> #define VDPASIM_NET_GROUP_NUM 2 >> >> +struct vdpasim_dataq_stats { >> + struct u64_stats_sync syncp; >> + u64 pkts; >> + u64 bytes; >> + u64 drops; >> + u64 errors; >> + u64 overruns; >> +}; >> + >> +struct vdpasim_cq_stats { >> + struct u64_stats_sync syncp; >> + u64 requests; >> + u64 successes; >> + u64 errors; >> +}; >> + >> +struct vdpasim_net{ >> + struct vdpasim vdpasim; >> + struct vdpasim_dataq_stats tx_stats; >> + struct vdpasim_dataq_stats rx_stats; >> + struct vdpasim_cq_stats cq_stats; >> +}; >> + >> +static struct vdpasim_net *sim_to_net(struct vdpasim *vdpasim) >> +{ >> + return container_of(vdpasim, struct vdpasim_net, vdpasim); >> +} >> + >> static void vdpasim_net_complete(struct vdpasim_virtqueue *vq, size_t len) >> { >> /* Make sure data is wrote before advancing index */ >> @@ -93,9 +122,11 @@ static virtio_net_ctrl_ack vdpasim_handle_ctrl_mac(struct vdpasim *vdpasim, >> static void vdpasim_handle_cvq(struct vdpasim *vdpasim) >> { >> struct vdpasim_virtqueue *cvq = &vdpasim->vqs[2]; >> + struct vdpasim_net *net = sim_to_net(vdpasim); >> virtio_net_ctrl_ack status = VIRTIO_NET_ERR; >> struct virtio_net_ctrl_hdr ctrl; >> size_t read, write; >> + u64 requests = 0, errors = 0; >> int err; >> >> if (!(vdpasim->features & (1ULL << VIRTIO_NET_F_CTRL_VQ))) >> @@ -113,8 +144,12 @@ static void vdpasim_handle_cvq(struct vdpasim *vdpasim) >> >> read = vringh_iov_pull_iotlb(&cvq->vring, &cvq->in_iov, &ctrl, >> sizeof(ctrl)); >> - if (read != sizeof(ctrl)) >> + if (read != sizeof(ctrl)) { >> + ++errors; >> break; >> + } >> + >> + ++requests; >> >> switch (ctrl.class) { >> case VIRTIO_NET_CTRL_MAC: >> @@ -141,6 +176,12 @@ static void vdpasim_handle_cvq(struct vdpasim *vdpasim) >> cvq->cb(cvq->private); >> local_bh_enable(); >> } >> + >> + u64_stats_update_begin(&net->cq_stats.syncp); >> + net->cq_stats.requests += requests; >> + net->cq_stats.errors += errors; >> + net->cq_stats.successes += requests; > I'd say we should maintain here requests == errors + requests. > > Intuitively, I'd rename local variable requests to successes, and I'd apply: > net->cq_stats.requests += successes + errors; > net->cq_stats.errors += errors; > net->cq_stats.successes += successes; > > Or am I missing something? Exactly, let me fix. Thanks > > Thanks! > >> + u64_stats_update_end(&net->cq_stats.syncp); >> } >> >> static void vdpasim_net_work(struct work_struct *work) >> @@ -148,8 +189,10 @@ static void vdpasim_net_work(struct work_struct *work) >> struct vdpasim *vdpasim = container_of(work, struct vdpasim, work); >> struct vdpasim_virtqueue *txq = &vdpasim->vqs[1]; >> struct vdpasim_virtqueue *rxq = &vdpasim->vqs[0]; >> + struct vdpasim_net *net = sim_to_net(vdpasim); >> ssize_t read, write; >> - int pkts = 0; >> + u64 tx_pkts = 0, rx_pkts = 0, tx_bytes = 0, rx_bytes = 0; >> + u64 rx_drops = 0, rx_overruns = 0, rx_errors = 0, tx_errors = 0; >> int err; >> >> spin_lock(&vdpasim->lock); >> @@ -168,14 +211,21 @@ static void vdpasim_net_work(struct work_struct *work) >> while (true) { >> err = vringh_getdesc_iotlb(&txq->vring, &txq->out_iov, NULL, >> &txq->head, GFP_ATOMIC); >> - if (err <= 0) >> + if (err <= 0) { >> + if (err) >> + ++tx_errors; >> break; >> + } >> >> + ++tx_pkts; >> read = vringh_iov_pull_iotlb(&txq->vring, &txq->out_iov, >> vdpasim->buffer, >> PAGE_SIZE); >> >> + tx_bytes += read; >> + >> if (!receive_filter(vdpasim, read)) { >> + ++rx_drops; >> vdpasim_net_complete(txq, 0); >> continue; >> } >> @@ -183,19 +233,25 @@ static void vdpasim_net_work(struct work_struct *work) >> err = vringh_getdesc_iotlb(&rxq->vring, NULL, &rxq->in_iov, >> &rxq->head, GFP_ATOMIC); >> if (err <= 0) { >> + ++rx_overruns; >> vdpasim_net_complete(txq, 0); >> break; >> } >> >> write = vringh_iov_push_iotlb(&rxq->vring, &rxq->in_iov, >> vdpasim->buffer, read); >> - if (write <= 0) >> + if (write <= 0) { >> + ++rx_errors; >> break; >> + } >> + >> + ++rx_pkts; >> + rx_bytes += write; >> >> vdpasim_net_complete(txq, 0); >> vdpasim_net_complete(rxq, write); >> >> - if (++pkts > 4) { >> + if (tx_pkts > 4) { >> schedule_work(&vdpasim->work); >> goto out; >> } >> @@ -203,6 +259,145 @@ static void vdpasim_net_work(struct work_struct *work) >> >> out: >> spin_unlock(&vdpasim->lock); >> + >> + u64_stats_update_begin(&net->tx_stats.syncp); >> + net->tx_stats.pkts += tx_pkts; >> + net->tx_stats.bytes += tx_bytes; >> + net->tx_stats.errors += tx_errors; >> + u64_stats_update_end(&net->tx_stats.syncp); >> + >> + u64_stats_update_begin(&net->rx_stats.syncp); >> + net->rx_stats.pkts += rx_pkts; >> + net->rx_stats.bytes += rx_bytes; >> + net->rx_stats.drops += rx_drops; >> + net->rx_stats.errors += rx_errors; >> + net->rx_stats.overruns += rx_overruns; >> + u64_stats_update_end(&net->rx_stats.syncp); >> +} >> + >> +static int vdpasim_net_get_stats(struct vdpasim *vdpasim, u16 idx, >> + struct sk_buff *msg, >> + struct netlink_ext_ack *extack) >> +{ >> + struct vdpasim_net *net = sim_to_net(vdpasim); >> + u64 rx_pkts, rx_bytes, rx_errors, rx_overruns, rx_drops; >> + u64 tx_pkts, tx_bytes, tx_errors, tx_drops; >> + u64 cq_requests, cq_successes, cq_errors; >> + unsigned int start; >> + int err = -EMSGSIZE; >> + >> + switch(idx) { >> + case 0: >> + do { >> + start = u64_stats_fetch_begin(&net->rx_stats.syncp); >> + rx_pkts = net->rx_stats.pkts; >> + rx_bytes = net->rx_stats.bytes; >> + rx_errors = net->rx_stats.errors; >> + rx_overruns = net->rx_stats.overruns; >> + rx_drops = net->rx_stats.drops; >> + } while (u64_stats_fetch_retry(&net->rx_stats.syncp, start)); >> + >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "rx packets")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + rx_pkts, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "rx bytes")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + rx_bytes, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "rx errors")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + rx_errors, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "rx overrunss")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + rx_overruns, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "rx drops")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + rx_drops, VDPA_ATTR_PAD)) >> + break; >> + err = 0; >> + break; >> + case 1: >> + do { >> + start = u64_stats_fetch_begin(&net->tx_stats.syncp); >> + tx_pkts = net->tx_stats.pkts; >> + tx_bytes = net->tx_stats.bytes; >> + tx_errors = net->tx_stats.errors; >> + tx_drops = net->tx_stats.drops; >> + } while (u64_stats_fetch_retry(&net->tx_stats.syncp, start)); >> + >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "tx packets")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + tx_pkts, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "tx bytes")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + tx_bytes, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "tx errors")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + tx_errors, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "tx drops")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + tx_drops, VDPA_ATTR_PAD)) >> + break; >> + err = 0; >> + break; >> + case 2: >> + do { >> + start = u64_stats_fetch_begin(&net->cq_stats.syncp); >> + cq_requests = net->cq_stats.requests; >> + cq_successes = net->cq_stats.successes; >> + cq_errors = net->cq_stats.errors; >> + } while (u64_stats_fetch_retry(&net->cq_stats.syncp, start)); >> + >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "cvq requests")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + cq_requests, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "cvq successes")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + cq_successes, VDPA_ATTR_PAD)) >> + break; >> + if (nla_put_string(msg, VDPA_ATTR_DEV_VENDOR_ATTR_NAME, >> + "cvq errors")) >> + break; >> + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, >> + cq_errors, VDPA_ATTR_PAD)) >> + break; >> + err = 0; >> + break; >> + default: >> + err = -EINVAL; >> + break; >> + } >> + >> + return err; >> } >> >> static void vdpasim_net_get_config(struct vdpasim *vdpasim, void *config) >> @@ -239,6 +434,7 @@ static int vdpasim_net_dev_add(struct vdpa_mgmt_dev *mdev, const char *name, >> const struct vdpa_dev_set_config *config) >> { >> struct vdpasim_dev_attr dev_attr = {}; >> + struct vdpasim_net *net; >> struct vdpasim *simdev; >> int ret; >> >> @@ -249,10 +445,11 @@ static int vdpasim_net_dev_add(struct vdpa_mgmt_dev *mdev, const char *name, >> dev_attr.nvqs = VDPASIM_NET_VQ_NUM; >> dev_attr.ngroups = VDPASIM_NET_GROUP_NUM; >> dev_attr.nas = VDPASIM_NET_AS_NUM; >> - dev_attr.alloc_size = sizeof(struct vdpasim); >> + dev_attr.alloc_size = sizeof(struct vdpasim_net); >> dev_attr.config_size = sizeof(struct virtio_net_config); >> dev_attr.get_config = vdpasim_net_get_config; >> dev_attr.work_fn = vdpasim_net_work; >> + dev_attr.get_stats = vdpasim_net_get_stats; >> dev_attr.buffer_size = PAGE_SIZE; >> >> simdev = vdpasim_create(&dev_attr, config); >> @@ -265,6 +462,12 @@ static int vdpasim_net_dev_add(struct vdpa_mgmt_dev *mdev, const char *name, >> if (ret) >> goto reg_err; >> >> + net = sim_to_net(simdev); >> + >> + u64_stats_init(&net->tx_stats.syncp); >> + u64_stats_init(&net->rx_stats.syncp); >> + u64_stats_init(&net->cq_stats.syncp); >> + >> return 0; >> >> reg_err: >> -- >> 2.25.1 >>