LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH RFC] staging: r8188eu: Use usb_control_msg_recv/send() in usbctrl_vendorreq()
@ 2021-08-22 23:02 Fabio M. De Francesco
  2021-08-23  8:11 ` Pavel Skripkin
  0 siblings, 1 reply; 8+ messages in thread
From: Fabio M. De Francesco @ 2021-08-22 23:02 UTC (permalink / raw)
  To: Larry Finger, Phillip Potter, Greg Kroah-Hartman,
	open list:STAGING SUBSYSTEM, open list, Pavel Skripkin
  Cc: Fabio M. De Francesco

Replace usb_control_msg() with the new usb_control_msg_recv() and
usb_control_msg_send() API of USB Core.

This patch is an RFC for different reasons:

1) I'm not sure if it is needed: while Greg Kroah-Hartman suggested to 
use the new API in a message to a thread that was about a series of patches
submitted by Pavel Skripkin (who decided to not use it), I cannot explain 
if and why the driver would benefit from this patch.
2) I have doubts about the sematic of the API I use here, so I'd like to
know whether or not I'm using them properly.
3) At the moment I cannot test the driver because I don't have my device
with me.
4) This patch could probably lead to a slight change in some lines of
Pavel's series (for sure in usb_read*()).

I'd like to hear from the Maintainers and other interested people if this
patch is worth to be considered and, in this case, if there are suggestions
for the purpose to improve it. 

Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
---
 drivers/staging/r8188eu/hal/usb_ops_linux.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/r8188eu/hal/usb_ops_linux.c b/drivers/staging/r8188eu/hal/usb_ops_linux.c
index 6a0a24acf292..9e290c1cc449 100644
--- a/drivers/staging/r8188eu/hal/usb_ops_linux.c
+++ b/drivers/staging/r8188eu/hal/usb_ops_linux.c
@@ -15,7 +15,7 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u16 value, void *pdata,
 	struct adapter	*adapt = pintfhdl->padapter;
 	struct dvobj_priv  *dvobjpriv = adapter_to_dvobj(adapt);
 	struct usb_device *udev = dvobjpriv->pusbdev;
-	unsigned int pipe;
+	u8 pipe;
 	int status = 0;
 	u8 reqtype;
 	u8 *pIo_buf;
@@ -47,19 +47,20 @@ static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u16 value, void *pdata,
 		memset(pIo_buf, 0, len);
 
 		if (requesttype == 0x01) {
-			pipe = usb_rcvctrlpipe(udev, 0);/* read_in */
 			reqtype =  REALTEK_USB_VENQT_READ;
+			status = usb_control_msg_recv(udev, pipe, REALTEK_USB_VENQT_CMD_REQ,
+						      reqtype, value, REALTEK_USB_VENQT_CMD_IDX,
+						      pIo_buf, len, RTW_USB_CONTROL_MSG_TIMEOUT,
+						      GFP_KERNEL);
 		} else {
-			pipe = usb_sndctrlpipe(udev, 0);/* write_out */
 			reqtype =  REALTEK_USB_VENQT_WRITE;
-			memcpy(pIo_buf, pdata, len);
+			status = usb_control_msg_send(udev, pipe, REALTEK_USB_VENQT_CMD_REQ,
+						      reqtype, value, REALTEK_USB_VENQT_CMD_IDX,
+						      pIo_buf, len, RTW_USB_CONTROL_MSG_TIMEOUT,
+						      GFP_KERNEL);
 		}
 
-		status = usb_control_msg(udev, pipe, REALTEK_USB_VENQT_CMD_REQ,
-					 reqtype, value, REALTEK_USB_VENQT_CMD_IDX,
-					 pIo_buf, len, RTW_USB_CONTROL_MSG_TIMEOUT);
-
-		if (status == len) {   /*  Success this control transfer. */
+		if (!status) {   /*  Success this control transfer. */
 			rtw_reset_continual_urb_error(dvobjpriv);
 			if (requesttype == 0x01)
 				memcpy(pdata, pIo_buf,  len);
-- 
2.32.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-08-24  0:20 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-22 23:02 [PATCH RFC] staging: r8188eu: Use usb_control_msg_recv/send() in usbctrl_vendorreq() Fabio M. De Francesco
2021-08-23  8:11 ` Pavel Skripkin
2021-08-23  8:30   ` Pavel Skripkin
2021-08-23 10:52     ` Fabio M. De Francesco
2021-08-23 10:47   ` Fabio M. De Francesco
2021-08-23 11:05     ` Pavel Skripkin
2021-08-24  0:20       ` Fabio M. De Francesco
2021-08-23 21:41     ` Phillip Potter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).