From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [net-next,03/19] net: usb: aqc111: Add implementation of read and write commands From: Oliver Neukum Message-Id: <1539006279.10342.13.camel@suse.com> Date: Mon, 08 Oct 2018 15:44:39 +0200 To: Igor Russkikh , "David S . Miller" Cc: Dmitry Bezrukov , "linux-usb@vger.kernel.org" , "netdev@vger.kernel.org" List-ID: T24gRnIsIDIwMTgtMTAtMDUgYXQgMTA6MjQgKzAwMDAsIElnb3IgUnVzc2tpa2ggd3JvdGU6Cj4g RnJvbTogRG1pdHJ5IEJlenJ1a292IDxkbWl0cnkuYmV6cnVrb3ZAYXF1YW50aWEuY29tPgo+IAo+ IFJlYWQvd3JpdGUgY29tbWFuZCByZWdpc3RlciBkZWZpbmVzIGFuZCBmdW5jdGlvbnMKPiAKPiBT aWduZWQtb2ZmLWJ5OiBEbWl0cnkgQmV6cnVrb3YgPGRtaXRyeS5iZXpydWtvdkBhcXVhbnRpYS5j b20+Cj4gU2lnbmVkLW9mZi1ieTogSWdvciBSdXNza2lraCA8aWdvci5ydXNza2lraEBhcXVhbnRp YS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYyB8IDEyNCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL25ldC91c2Iv YXFjMTExLmggfCAgMTkgKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9u cygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvdXNiL2FxYzExMS5oCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYyBiL2RyaXZlcnMvbmV0L3VzYi9h cWMxMTEuYwo+IGluZGV4IGM5MTRlMTkzODdmMi4uN2YzZTVhNjE1NzUwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvbmV0L3VzYi9hcWMxMTEuYwo+ICsrKyBiL2RyaXZlcnMvbmV0L3VzYi9hcWMxMTEu Ywo+IEBAIC0xNCw2ICsxNCwxMzAgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3VzYi9jZGMuaD4KPiAg I2luY2x1ZGUgPGxpbnV4L3VzYi91c2JuZXQuaD4KPiAgCj4gKyNpbmNsdWRlICJhcWMxMTEuaCIK PiArCj4gK3N0YXRpYyBpbnQgX19hcWMxMTFfcmVhZF9jbWQoc3RydWN0IHVzYm5ldCAqZGV2LCB1 OCBjbWQsIHUxNiB2YWx1ZSwKPiArCQkJICAgICB1MTYgaW5kZXgsIHUxNiBzaXplLCB2b2lkICpk YXRhLCBpbnQgbm9wbSkKPiArewo+ICsJaW50IHJldDsKPiArCWludCAoKmZuKShzdHJ1Y3QgdXNi bmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSwgdTE2IHZhbHVlLAo+ICsJCSAgdTE2IGluZGV4 LCB2b2lkICpkYXRhLCB1MTYgc2l6ZSk7Cj4gKwo+ICsJaWYgKG5vcG0pCj4gKwkJZm4gPSB1c2Ju ZXRfcmVhZF9jbWRfbm9wbTsKPiArCWVsc2UKPiArCQlmbiA9IHVzYm5ldF9yZWFkX2NtZDsKCklm IHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGlzLCBwYXNzIHRoZSBmdW5jdGlvbi4KCj4gKwo+ICsJ cmV0ID0gZm4oZGV2LCBjbWQsIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVD SVBfREVWSUNFLAo+ICsJCSB2YWx1ZSwgaW5kZXgsIGRhdGEsIHNpemUpOwo+ICsJaWYgKHNpemUg PT0gMikKPiArCQlsZTE2X3RvX2NwdXMoZGF0YSk7CgpUaGF0IGlzIGluY3JlZGlibHkgZGlydHkK Cj4gKwo+ICsJaWYgKHVubGlrZWx5KHJldCA8IDApKQo+ICsJCW5ldGRldl93YXJuKGRldi0+bmV0 LAo+ICsJCQkgICAgIkZhaWxlZCB0byByZWFkKDB4JXgpIHJlZyBpbmRleCAweCUwNHg6ICVkXG4i LAo+ICsJCQkgICAgY21kLCBpbmRleCwgcmV0KTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgYXFjMTExX3JlYWRfY21kX25vcG0oc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBj bWQsIHUxNiB2YWx1ZSwKPiArCQkJCXUxNiBpbmRleCwgdTE2IHNpemUsIHZvaWQgKmRhdGEpCj4g K3sKPiArCXJldHVybiBfX2FxYzExMV9yZWFkX2NtZChkZXYsIGNtZCwgdmFsdWUsIGluZGV4LCBz aXplLCBkYXRhLCAxKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhcWMxMTFfcmVhZF9jbWQoc3Ry dWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHUxNiB2YWx1ZSwKPiArCQkJICAgdTE2IGluZGV4LCB1 MTYgc2l6ZSwgdm9pZCAqZGF0YSkKPiArewo+ICsJcmV0dXJuIF9fYXFjMTExX3JlYWRfY21kKGRl diwgY21kLCB2YWx1ZSwgaW5kZXgsIHNpemUsIGRhdGEsIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IF9fYXFfd3JpdGVfY21kKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1OCByZXF0eXBl LAo+ICsJCQkgIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCBjb25zdCB2b2lkICpkYXRhLCB1MTYgc2l6 ZSkKPiArewo+ICsJdm9pZCAqYnVmID0gTlVMTDsKPiArCWludCBlcnIgPSAtRU5PTUVNOwo+ICsK PiArCW5ldGRldl9kYmcoZGV2LT5uZXQsCj4gKwkJICAgIiVzIGNtZD0lI3ggcmVxdHlwZT0lI3gg dmFsdWU9JSN4IGluZGV4PSUjeCBzaXplPSVkXG4iLAo+ICsJCSAgIF9fZnVuY19fLCBjbWQsIHJl cXR5cGUsIHZhbHVlLCBpbmRleCwgc2l6ZSk7Cj4gKwo+ICsJaWYgKGRhdGEpIHsKPiArCQlidWYg PSBrbWVtZHVwKGRhdGEsIHNpemUsIEdGUF9LRVJORUwpOwoKVW5kZXIgd2hpY2ggY29udGV4dHMg aXMgdGhpcyB1c2VkPwoKCVJlZ2FyZHMKCQlPbGl2ZXIK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oliver Neukum Subject: Re: [PATCH net-next 03/19] net: usb: aqc111: Add implementation of read and write commands Date: Mon, 08 Oct 2018 15:44:39 +0200 Message-ID: <1539006279.10342.13.camel@suse.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: Dmitry Bezrukov , "linux-usb@vger.kernel.org" , "netdev@vger.kernel.org" To: Igor Russkikh , "David S . Miller" Return-path: Received: from mx2.suse.de ([195.135.220.15]:50892 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726056AbeJHVFS (ORCPT ); Mon, 8 Oct 2018 17:05:18 -0400 In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Fr, 2018-10-05 at 10:24 +0000, Igor Russkikh wrote: > From: Dmitry Bezrukov > > Read/write command register defines and functions > > Signed-off-by: Dmitry Bezrukov > Signed-off-by: Igor Russkikh > --- > drivers/net/usb/aqc111.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++ > drivers/net/usb/aqc111.h | 19 ++++++++ > 2 files changed, 143 insertions(+) > create mode 100644 drivers/net/usb/aqc111.h > > diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c > index c914e19387f2..7f3e5a615750 100644 > --- a/drivers/net/usb/aqc111.c > +++ b/drivers/net/usb/aqc111.c > @@ -14,6 +14,130 @@ > #include > #include > > +#include "aqc111.h" > + > +static int __aqc111_read_cmd(struct usbnet *dev, u8 cmd, u16 value, > + u16 index, u16 size, void *data, int nopm) > +{ > + int ret; > + int (*fn)(struct usbnet *dev, u8 cmd, u8 reqtype, u16 value, > + u16 index, void *data, u16 size); > + > + if (nopm) > + fn = usbnet_read_cmd_nopm; > + else > + fn = usbnet_read_cmd; If you really want to do this, pass the function. > + > + ret = fn(dev, cmd, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, > + value, index, data, size); > + if (size == 2) > + le16_to_cpus(data); That is incredibly dirty > + > + if (unlikely(ret < 0)) > + netdev_warn(dev->net, > + "Failed to read(0x%x) reg index 0x%04x: %d\n", > + cmd, index, ret); > + return ret; > +} > + > +static int aqc111_read_cmd_nopm(struct usbnet *dev, u8 cmd, u16 value, > + u16 index, u16 size, void *data) > +{ > + return __aqc111_read_cmd(dev, cmd, value, index, size, data, 1); > +} > + > +static int aqc111_read_cmd(struct usbnet *dev, u8 cmd, u16 value, > + u16 index, u16 size, void *data) > +{ > + return __aqc111_read_cmd(dev, cmd, value, index, size, data, 0); > +} > + > +static int __aq_write_cmd(struct usbnet *dev, u8 cmd, u8 reqtype, > + u16 value, u16 index, const void *data, u16 size) > +{ > + void *buf = NULL; > + int err = -ENOMEM; > + > + netdev_dbg(dev->net, > + "%s cmd=%#x reqtype=%#x value=%#x index=%#x size=%d\n", > + __func__, cmd, reqtype, value, index, size); > + > + if (data) { > + buf = kmemdup(data, size, GFP_KERNEL); Under which contexts is this used? Regards Oliver