From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wi0-x22a.google.com ([2a00:1450:400c:c05::22a]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Zonjc-0003Ht-5e for ath10k@lists.infradead.org; Wed, 21 Oct 2015 07:22:57 +0000 Received: by wikq8 with SMTP id q8so79365757wik.1 for ; Wed, 21 Oct 2015 00:22:34 -0700 (PDT) Message-ID: <56273D3F.6080804@gmail.com> Date: Wed, 21 Oct 2015 12:52:39 +0530 From: Manikanta MIME-Version: 1.0 Subject: Re: [PATCH v2] ath10k: add FW API support to test mode References: <20151020112513.14879.47438.stgit@potku.adurom.net> <5625E6BD.6020307@gmail.com> In-Reply-To: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Michal Kazior Cc: Kalle Valo , linux-wireless , "ath10k@lists.infradead.org" Ck9uIFdlZG5lc2RheSAyMSBPY3RvYmVyIDIwMTUgMTI6MzYgUE0sIE1pY2hhbCBLYXppb3Igd3Jv dGU6Cj4gT24gMjAgT2N0b2JlciAyMDE1IGF0IDA5OjAxLCBNYW5pa2FudGEgUHViYmlzZXR0eQo+ IDxtYW5pa2FudGEucHViYmlzZXR0eUBnbWFpbC5jb20+IHdyb3RlOgo+Pgo+PiBPbiAxMC8yMC8y MDE1IDA0OjU1IFBNLCBLYWxsZSBWYWxvIHdyb3RlOgo+Pj4gRnJvbTogQWxhbiBMaXUgPGFsYW5s aXVAcWNhLnF1YWxjb21tLmNvbT4KPj4+Cj4+PiBBZGQgV01JLVRMViBhbmQgRlcgQVBJIHN1cHBv cnQgaW4gYXRoMTBrIHRlc3Rtb2RlLgo+Pj4gQXRoMTBrIGNhbiBnZXQgcmlnaHQgd21pIGNvbW1h bmQgZm9ybWF0IGZyb20gVVRGIGltYWdlCj4+PiB0byBjb21tdW5pY2F0ZSBVVEYgZmlybXdhcmUu Cj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQWxhbiBMaXUgPGFsYW5saXVAcWNhLnF1YWxjb21tLmNv bT4KPj4+IFNpZ25lZC1vZmYtYnk6IEthbGxlIFZhbG8gPGt2YWxvQHFjYS5xdWFsY29tbS5jb20+ Cj4+PiAtLS0KPj4+ICAgIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jICAg ICB8ICAgIDQgLQo+Pj4gICAgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgg ICAgIHwgICAgNSArCj4+PiAgICBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h3Lmgg ICAgICAgfCAgICAxCj4+PiAgICBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rt b2RlLmMgfCAgMjAyCj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+PiAgICBkcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYyAgfCAgIDE0ICsrCj4+PiAgICA1 IGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMKPj4+ IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMKPj4+IGluZGV4IDEzZGUz NjE3ZDVhYi4uYjdhODJhZTNiM2ZhIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDEway9jb3JlLmMKPj4+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGgxMGsvY29yZS5jCj4+PiBAQCAtNTY4LDggKzU2OCw4IEBAIHN0YXRpYyBpbnQgYXRoMTBrX2Rv d25sb2FkX2Z3KHN0cnVjdCBhdGgxMGsgKmFyLCBlbnVtCj4+PiBhdGgxMGtfZmlybXdhcmVfbW9k ZSBtb2RlKQo+Pj4gICAgICAgICAgICAgICAgICB9Cj4+PiAgICAgICAgICAgICAgICAgIGJyZWFr Owo+Pj4gICAgICAgICAgY2FzZSBBVEgxMEtfRklSTVdBUkVfTU9ERV9VVEY6Cj4+PiAtICAgICAg ICAgICAgICAgZGF0YSA9IGFyLT50ZXN0bW9kZS51dGYtPmRhdGE7Cj4+PiAtICAgICAgICAgICAg ICAgZGF0YV9sZW4gPSBhci0+dGVzdG1vZGUudXRmLT5zaXplOwo+Pj4gKyAgICAgICAgICAgICAg IGRhdGEgPSBhci0+dGVzdG1vZGUudXRmX2Zpcm13YXJlX2RhdGE7Cj4+PiArICAgICAgICAgICAg ICAgZGF0YV9sZW4gPSBhci0+dGVzdG1vZGUudXRmX2Zpcm13YXJlX2xlbjsKPj4+ICAgICAgICAg ICAgICAgICAgbW9kZV9uYW1lID0gInV0ZiI7Cj4+PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ Pj4gICAgICAgICAgZGVmYXVsdDoKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTBrL2NvcmUuaAo+Pj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBr L2NvcmUuaAo+Pj4gaW5kZXggN2NjN2NkZDU2Yzk1Li5hNjM3MTEwOGJlOWIgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaAo+Pj4gKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgKPj4+IEBAIC04MTQsOSArODE0LDEy IEBAIHN0cnVjdCBhdGgxMGsgewo+Pj4gICAgICAgICAgc3RydWN0IHsKPj4+ICAgICAgICAgICAg ICAgICAgLyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi8KPj4+ICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1dGY7Cj4+PiArICAgICAgICAgICAgICAgY2hhciB1dGZf dmVyc2lvblszMl07Cj4+PiArICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdXRmX2Zpcm13YXJl X2RhdGE7Cj4+PiArICAgICAgICAgICAgICAgc2l6ZV90IHV0Zl9maXJtd2FyZV9sZW47Cj4+PiAg ICAgICAgICAgICAgICAgIERFQ0xBUkVfQklUTUFQKG9yaWdfZndfZmVhdHVyZXMsIEFUSDEwS19G V19GRUFUVVJFX0NPVU5UKTsKPj4+ICAgICAgICAgICAgICAgICAgZW51bSBhdGgxMGtfZndfd21p X29wX3ZlcnNpb24gb3JpZ193bWlfb3BfdmVyc2lvbjsKPj4+IC0KPj4+ICsgICAgICAgICAgICAg ICBlbnVtIGF0aDEwa19md193bWlfb3BfdmVyc2lvbiBvcF92ZXJzaW9uOwo+Pj4gICAgICAgICAg ICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgZGF0YV9sb2NrICovCj4+PiAgICAgICAgICAgICAgICAg IGJvb2wgdXRmX21vbml0b3I7Cj4+PiAgICAgICAgICB9IHRlc3Rtb2RlOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHcuaAo+Pj4gYi9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoMTBrL2h3LmgKPj4+IGluZGV4IDJkODc3MzdlMzVmZi4uMGM4ZWEw MjI2Njg0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9o dy5oCj4+PiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h3LmgKPj4+IEBA IC05NCw2ICs5NCw3IEBAIGVudW0gcWNhNjE3NF9jaGlwX2lkX3JldiB7Cj4+PiAgICAjZGVmaW5l IEFUSDEwS19GV19BUEk1X0ZJTEUgICAgICAgICAgICJmaXJtd2FyZS01LmJpbiIKPj4+Cj4+PiAg ICAjZGVmaW5lIEFUSDEwS19GV19VVEZfRklMRSAgICAgICAgICAgICJ1dGYuYmluIgo+Pj4gKyNk ZWZpbmUgQVRIMTBLX0ZXX1VURl9BUEkyX0ZJTEUgICAgICAgICAgICAgICAgInV0Zi0yLmJpbiIK Pj4+Cj4+PiAgICAvKiBpbmNsdWRlcyBhbHNvIHRoZSBudWxsIGJ5dGUgKi8KPj4+ICAgICNkZWZp bmUgQVRIMTBLX0ZJUk1XQVJFX01BR0lDICAgICAgICAgICAgICAgIlFDQS1BVEgxMEsiCj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jCj4+ PiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYwo+Pj4gaW5kZXgg YjA4NGY4OGRhMTAyLi4xZDVhMmZkY2JmNTYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMKPj4+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYwo+Pj4gQEAgLTEzOSwxMSArMTM5LDE4MSBAQCBzdGF0 aWMgaW50IGF0aDEwa190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEwawo+Pj4gKmFyLCBz dHJ1Y3QgbmxhdHRyICp0YltdKQo+Pj4gICAgICAgICAgcmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2Rl X3JlcGx5KHNrYik7Cj4+PiAgICB9Cj4+Pgo+Pj4gLXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91 dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIKPj4+ICp0YltdKQo+Pj4g K3N0YXRpYyBpbnQgYXRoMTBrX3RtX2ZldGNoX3V0Zl9maXJtd2FyZV9hcGlfMihzdHJ1Y3QgYXRo MTBrICphcikKPj4+ICt7Cj4+PiArICAgICAgIHNpemVfdCBsZW4sIG1hZ2ljX2xlbiwgaWVfbGVu Owo+Pj4gKyAgICAgICBzdHJ1Y3QgYXRoMTBrX2Z3X2llICpoZHI7Cj4+PiArICAgICAgIGNoYXIg ZmlsZW5hbWVbMTAwXTsKPj4+ICsgICAgICAgX19sZTMyICp2ZXJzaW9uOwo+Pj4gKyAgICAgICBj b25zdCB1OCAqZGF0YTsKPj4+ICsgICAgICAgaW50IGllX2lkLCByZXQ7Cj4+PiArCj4+PiArICAg ICAgIHNucHJpbnRmKGZpbGVuYW1lLCBzaXplb2YoZmlsZW5hbWUpLCAiJXMvJXMiLAo+Pj4gKyAg ICAgICAgICAgICAgICBhci0+aHdfcGFyYW1zLmZ3LmRpciwgQVRIMTBLX0ZXX1VURl9BUEkyX0ZJ TEUpOwo+Pj4gKwo+Pj4gKyAgICAgICAvKiBsb2FkIHV0ZiBmaXJtd2FyZSBpbWFnZSAqLwo+Pj4g KyAgICAgICByZXQgPSByZXF1ZXN0X2Zpcm13YXJlKCZhci0+dGVzdG1vZGUudXRmLCBmaWxlbmFt ZSwgYXItPmRldik7Cj4+PiArICAgICAgIGlmIChyZXQpIHsKPj4+ICsgICAgICAgICAgICAgICBh dGgxMGtfd2FybihhciwgImZhaWxlZCB0byByZXRyaWV2ZSB1dGYgZmlybXdhcmUgJyVzJzoKPj4+ ICVkXG4iLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCByZXQpOwo+ Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgICAgIH0KPj4+ICsKPj4+ICsg ICAgICAgZGF0YSA9IGFyLT50ZXN0bW9kZS51dGYtPmRhdGE7Cj4+PiArICAgICAgIGxlbiA9IGFy LT50ZXN0bW9kZS51dGYtPnNpemU7Cj4+PiArCj4+PiArICAgICAgIC8qIEZJWE1FOiBjYWxsIHJl bGVhc2VfZmlybXdhcmUoKSBpbiBlcnJvciBjYXNlcyAqLwo+Pj4gKwo+Pj4gKyAgICAgICAvKiBt YWdpYyBhbHNvIGluY2x1ZGVzIHRoZSBudWxsIGJ5dGUsIGNoZWNrIHRoYXQgYXMgd2VsbCAqLwo+ Pj4gKyAgICAgICBtYWdpY19sZW4gPSBzdHJsZW4oQVRIMTBLX0ZJUk1XQVJFX01BR0lDKSArIDE7 Cj4+PiArCj4+PiArICAgICAgIGlmIChsZW4gPCBtYWdpY19sZW4pIHsKPj4+ICsgICAgICAgICAg ICAgICBhdGgxMGtfZXJyKGFyLCAidXRmIGZpcm13YXJlIGZpbGUgaXMgdG9vIHNtYWxsIHRvIGNv bnRhaW4KPj4+IG1hZ2ljXG4iKTsKPj4+ICsgICAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOwo+ Pj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICAgICB9Cj4+PiArCj4+PiArICAg ICAgIGlmIChtZW1jbXAoZGF0YSwgQVRIMTBLX0ZJUk1XQVJFX01BR0lDLCBtYWdpY19sZW4pICE9 IDApIHsKPj4+ICsgICAgICAgICAgICAgICBhdGgxMGtfZXJyKGFyLCAiaW52YWxpZCBmaXJtd2Fy ZSBtYWdpY1xuIik7Cj4+PiArICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPj4+ICsgICAg ICAgICAgICAgICBnb3RvIGVycjsKPj4+ICsgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAvKiBq dW1wIG92ZXIgdGhlIHBhZGRpbmcgKi8KPj4+ICsgICAgICAgbWFnaWNfbGVuID0gQUxJR04obWFn aWNfbGVuLCA0KTsKPj4+ICsKPj4+ICsgICAgICAgbGVuIC09IG1hZ2ljX2xlbjsKPj4+ICsgICAg ICAgZGF0YSArPSBtYWdpY19sZW47Cj4+PiArCj4+PiArICAgICAgIC8qIGxvb3AgZWxlbWVudHMg Ki8KPj4+ICsgICAgICAgd2hpbGUgKGxlbiA+IHNpemVvZihzdHJ1Y3QgYXRoMTBrX2Z3X2llKSkg ewo+Pj4gKyAgICAgICAgICAgICAgIGhkciA9IChzdHJ1Y3QgYXRoMTBrX2Z3X2llICopZGF0YTsK Pj4+ICsKPj4+ICsgICAgICAgICAgICAgICBpZV9pZCA9IGxlMzJfdG9fY3B1KGhkci0+aWQpOwo+ Pj4gKyAgICAgICAgICAgICAgIGllX2xlbiA9IGxlMzJfdG9fY3B1KGhkci0+bGVuKTsKPj4+ICsK Pj4+ICsgICAgICAgICAgICAgICBsZW4gLT0gc2l6ZW9mKCpoZHIpOwo+Pj4gKyAgICAgICAgICAg ICAgIGRhdGEgKz0gc2l6ZW9mKCpoZHIpOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgIGlmIChs ZW4gPCBpZV9sZW4pIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGF0aDEwa19lcnIoYXIs ICJpbnZhbGlkIGxlbmd0aCBmb3IgRlcgSUUgJWQgKCV6dSA8Cj4+PiAlenUpXG4iLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZV9pZCwgbGVuLCBpZV9sZW4pOwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyOwo+Pj4gKyAgICAgICAgICAgICAgIH0KPj4+ICsKPj4+ICsgICAg ICAgICAgICAgICBzd2l0Y2ggKGllX2lkKSB7Cj4+PiArICAgICAgICAgICAgICAgY2FzZSBBVEgx MEtfRldfSUVfRldfVkVSU0lPTjoKPj4KPj4gU29tZXRoaW5nIGxpa2UgQVRIMTBLX1VURl9JRV9G V19WRVJTSU9OIG9yIEFUSDEwS19URVNUTU9ERV9JRV9GV19WRVJTSU9OCj4+IHdvdWxkIGJlIGxl c3MgY29uZnVzaW5nIGFuZCBiZXR0ZXIsIGlzbid0IGl0Pwo+IEkgZG9uJ3QgcmVhbGx5IHNlZSBh IHJlYXNvbiB0by4gVVRGIGlzIGp1c3QgYW5vdGhlciBtYWluIHByb2dyYW0gdG8KPiBydW4gb24g dGhlIGRldmljZS4KPgo+IElmIGFueXRoaW5nIEkgd291bGQgc3VnZ2VzdCB0byB1bmlmeSB0aGUg RlcgQVBJIHBhcnNpbmcgbG9naWMgdG8gd29yawo+IHdpdGggYSBkZWRpY2F0ZWQgc3RydWN0dXJl IGluc3RlYWQgb2YgYHN0cnVjdCBhdGgxMGtgIGRpcmVjdGx5LCBpLmUuCj4KPiAgICBzdHJ1Y3Qg YXRoMTBrX2Z3IHsKPiAgICAgIHZvaWQgKmRhdGE7Cj4gICAgICBzaXplX3QgZGF0YV9sZW47Cj4g ICAgICBlbnVtIHdtaV9vcF92ZXJzaW9uIHdtaV9vcF92ZXJzaW9uOwo+ICAgICAgLy8gLi4uCj4g ICAgfTsKPgo+ICAgIGludCBhdGgxMGtfY29yZV9md19hcGlfcGFyc2Uoc3RydWN0IGF0aDEwayAq YXIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYXRoMTBrX2Z3ICph cmZ3LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpcm13YXJlICpm dykKPiAgICAgewo+ICAgICAgIC8vIHBhcnNlIGFuZCBmaWxsIGluIGBhcmZ3YAo+ICAgICB9Cj4K PiAgICBzdHJ1Y3QgYXRoMTBrIHsKPiAgICAgIC8vIC4uLgo+ICAgICAgc3RydWN0IGF0aDEwa19m dyBmd19ub3JtYWw7Cj4gICAgICBzdHJ1Y3QgYXRoMTBrX2Z3IGZ3X3V0ZjsKPiAgICAgIC8vIC4u Lgo+ICAgIH07Cj4KPgo+IE1pY2hhxYIKSG1tbSwgdGhpcyB3YXkgd2Ugd2lsbCBoYXZlIGEgdW5p ZmllZCBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiBJcyB0aGlzIGEgCnRhc2sgd2hpY2ggY2FuIGJl IHRha2VuIHVwIGVhc2lseSBvciBhbnkgb3RoZXIgaGlkZGVuIGNvbXBsZXhpdGllcyBhcmUgCmlu dmxvdmVkID8uCkkgbWVhbiBjYW4gd2UgZG8gdGhlIGNoYW5nZXMgZm9yIGN1cnJlbnQgcGFyc2lu ZyBsb2dpYyBhbmQgdGhlbiByZXdvcmsgCnRoZSB0ZXN0IG1vZGUgcGF0Y2ggPyB3aGF0IGlzIHlv dXIgc3VnZ2VzdGlvbiA/CgotTWFuaWthbnRhCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwphdGgxMGsgbWFpbGluZyBsaXN0CmF0aDEwa0BsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYXRo MTBrCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wi0-f181.google.com ([209.85.212.181]:36991 "EHLO mail-wi0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752035AbbJUHWg (ORCPT ); Wed, 21 Oct 2015 03:22:36 -0400 Received: by wicfv8 with SMTP id fv8so61023836wic.0 for ; Wed, 21 Oct 2015 00:22:34 -0700 (PDT) Message-ID: <56273D3F.6080804@gmail.com> (sfid-20151021_092240_456785_055697E2) Date: Wed, 21 Oct 2015 12:52:39 +0530 From: Manikanta MIME-Version: 1.0 To: Michal Kazior CC: Kalle Valo , "ath10k@lists.infradead.org" , linux-wireless Subject: Re: [PATCH v2] ath10k: add FW API support to test mode References: <20151020112513.14879.47438.stgit@potku.adurom.net> <5625E6BD.6020307@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: On Wednesday 21 October 2015 12:36 PM, Michal Kazior wrote: > On 20 October 2015 at 09:01, Manikanta Pubbisetty > wrote: >> >> On 10/20/2015 04:55 PM, Kalle Valo wrote: >>> From: Alan Liu >>> >>> Add WMI-TLV and FW API support in ath10k testmode. >>> Ath10k can get right wmi command format from UTF image >>> to communicate UTF firmware. >>> >>> Signed-off-by: Alan Liu >>> Signed-off-by: Kalle Valo >>> --- >>> drivers/net/wireless/ath/ath10k/core.c | 4 - >>> drivers/net/wireless/ath/ath10k/core.h | 5 + >>> drivers/net/wireless/ath/ath10k/hw.h | 1 >>> drivers/net/wireless/ath/ath10k/testmode.c | 202 >>> ++++++++++++++++++++++++++-- >>> drivers/net/wireless/ath/ath10k/wmi-tlv.c | 14 ++ >>> 5 files changed, 205 insertions(+), 21 deletions(-) >>> >>> diff --git a/drivers/net/wireless/ath/ath10k/core.c >>> b/drivers/net/wireless/ath/ath10k/core.c >>> index 13de3617d5ab..b7a82ae3b3fa 100644 >>> --- a/drivers/net/wireless/ath/ath10k/core.c >>> +++ b/drivers/net/wireless/ath/ath10k/core.c >>> @@ -568,8 +568,8 @@ static int ath10k_download_fw(struct ath10k *ar, enum >>> ath10k_firmware_mode mode) >>> } >>> break; >>> case ATH10K_FIRMWARE_MODE_UTF: >>> - data = ar->testmode.utf->data; >>> - data_len = ar->testmode.utf->size; >>> + data = ar->testmode.utf_firmware_data; >>> + data_len = ar->testmode.utf_firmware_len; >>> mode_name = "utf"; >>> break; >>> default: >>> diff --git a/drivers/net/wireless/ath/ath10k/core.h >>> b/drivers/net/wireless/ath/ath10k/core.h >>> index 7cc7cdd56c95..a6371108be9b 100644 >>> --- a/drivers/net/wireless/ath/ath10k/core.h >>> +++ b/drivers/net/wireless/ath/ath10k/core.h >>> @@ -814,9 +814,12 @@ struct ath10k { >>> struct { >>> /* protected by conf_mutex */ >>> const struct firmware *utf; >>> + char utf_version[32]; >>> + const void *utf_firmware_data; >>> + size_t utf_firmware_len; >>> DECLARE_BITMAP(orig_fw_features, ATH10K_FW_FEATURE_COUNT); >>> enum ath10k_fw_wmi_op_version orig_wmi_op_version; >>> - >>> + enum ath10k_fw_wmi_op_version op_version; >>> /* protected by data_lock */ >>> bool utf_monitor; >>> } testmode; >>> diff --git a/drivers/net/wireless/ath/ath10k/hw.h >>> b/drivers/net/wireless/ath/ath10k/hw.h >>> index 2d87737e35ff..0c8ea0226684 100644 >>> --- a/drivers/net/wireless/ath/ath10k/hw.h >>> +++ b/drivers/net/wireless/ath/ath10k/hw.h >>> @@ -94,6 +94,7 @@ enum qca6174_chip_id_rev { >>> #define ATH10K_FW_API5_FILE "firmware-5.bin" >>> >>> #define ATH10K_FW_UTF_FILE "utf.bin" >>> +#define ATH10K_FW_UTF_API2_FILE "utf-2.bin" >>> >>> /* includes also the null byte */ >>> #define ATH10K_FIRMWARE_MAGIC "QCA-ATH10K" >>> diff --git a/drivers/net/wireless/ath/ath10k/testmode.c >>> b/drivers/net/wireless/ath/ath10k/testmode.c >>> index b084f88da102..1d5a2fdcbf56 100644 >>> --- a/drivers/net/wireless/ath/ath10k/testmode.c >>> +++ b/drivers/net/wireless/ath/ath10k/testmode.c >>> @@ -139,11 +139,181 @@ static int ath10k_tm_cmd_get_version(struct ath10k >>> *ar, struct nlattr *tb[]) >>> return cfg80211_testmode_reply(skb); >>> } >>> >>> -static int ath10k_tm_cmd_utf_start(struct ath10k *ar, struct nlattr >>> *tb[]) >>> +static int ath10k_tm_fetch_utf_firmware_api_2(struct ath10k *ar) >>> +{ >>> + size_t len, magic_len, ie_len; >>> + struct ath10k_fw_ie *hdr; >>> + char filename[100]; >>> + __le32 *version; >>> + const u8 *data; >>> + int ie_id, ret; >>> + >>> + snprintf(filename, sizeof(filename), "%s/%s", >>> + ar->hw_params.fw.dir, ATH10K_FW_UTF_API2_FILE); >>> + >>> + /* load utf firmware image */ >>> + ret = request_firmware(&ar->testmode.utf, filename, ar->dev); >>> + if (ret) { >>> + ath10k_warn(ar, "failed to retrieve utf firmware '%s': >>> %d\n", >>> + filename, ret); >>> + return ret; >>> + } >>> + >>> + data = ar->testmode.utf->data; >>> + len = ar->testmode.utf->size; >>> + >>> + /* FIXME: call release_firmware() in error cases */ >>> + >>> + /* magic also includes the null byte, check that as well */ >>> + magic_len = strlen(ATH10K_FIRMWARE_MAGIC) + 1; >>> + >>> + if (len < magic_len) { >>> + ath10k_err(ar, "utf firmware file is too small to contain >>> magic\n"); >>> + ret = -EINVAL; >>> + goto err; >>> + } >>> + >>> + if (memcmp(data, ATH10K_FIRMWARE_MAGIC, magic_len) != 0) { >>> + ath10k_err(ar, "invalid firmware magic\n"); >>> + ret = -EINVAL; >>> + goto err; >>> + } >>> + >>> + /* jump over the padding */ >>> + magic_len = ALIGN(magic_len, 4); >>> + >>> + len -= magic_len; >>> + data += magic_len; >>> + >>> + /* loop elements */ >>> + while (len > sizeof(struct ath10k_fw_ie)) { >>> + hdr = (struct ath10k_fw_ie *)data; >>> + >>> + ie_id = le32_to_cpu(hdr->id); >>> + ie_len = le32_to_cpu(hdr->len); >>> + >>> + len -= sizeof(*hdr); >>> + data += sizeof(*hdr); >>> + >>> + if (len < ie_len) { >>> + ath10k_err(ar, "invalid length for FW IE %d (%zu < >>> %zu)\n", >>> + ie_id, len, ie_len); >>> + ret = -EINVAL; >>> + goto err; >>> + } >>> + >>> + switch (ie_id) { >>> + case ATH10K_FW_IE_FW_VERSION: >> >> Something like ATH10K_UTF_IE_FW_VERSION or ATH10K_TESTMODE_IE_FW_VERSION >> would be less confusing and better, isn't it? > I don't really see a reason to. UTF is just another main program to > run on the device. > > If anything I would suggest to unify the FW API parsing logic to work > with a dedicated structure instead of `struct ath10k` directly, i.e. > > struct ath10k_fw { > void *data; > size_t data_len; > enum wmi_op_version wmi_op_version; > // ... > }; > > int ath10k_core_fw_api_parse(struct ath10k *ar, > struct ath10k_fw *arfw, > struct firmware *fw) > { > // parse and fill in `arfw` > } > > struct ath10k { > // ... > struct ath10k_fw fw_normal; > struct ath10k_fw fw_utf; > // ... > }; > > > MichaƂ Hmmm, this way we will have a unified firmware parsing logic. Is this a task which can be taken up easily or any other hidden complexities are invloved ?. I mean can we do the changes for current parsing logic and then rework the test mode patch ? what is your suggestion ? -Manikanta