staging: r8188eu: remove shared buffer for USB requests

Remove the shared buffer for USB requests because it is not necessary
and use a local on stack variable since the new Core USB API does not
have the constraints of usb_control_msg().

Co-developed-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Link: https://lore.kernel.org/r/20210924122705.3781-16-fmdefrancesco@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Pavel Skripkin 2021-09-24 14:27:04 +02:00 коммит произвёл Greg Kroah-Hartman
Родитель 46f0b1ad5b
Коммит d00a923f96
3 изменённых файлов: 7 добавлений и 25 удалений

Просмотреть файл

@ -14,7 +14,7 @@ static int usb_read(struct intf_hdl *intf, u16 value, void *data, u8 size)
struct dvobj_priv *dvobjpriv = adapter_to_dvobj(adapt); struct dvobj_priv *dvobjpriv = adapter_to_dvobj(adapt);
struct usb_device *udev = dvobjpriv->pusbdev; struct usb_device *udev = dvobjpriv->pusbdev;
int status; int status;
u8 *io_buf; /* Pointer to I/O buffer */ u8 io_buf[4];
mutex_lock(&dvobjpriv->usb_vendor_req_mutex); mutex_lock(&dvobjpriv->usb_vendor_req_mutex);
@ -23,9 +23,6 @@ static int usb_read(struct intf_hdl *intf, u16 value, void *data, u8 size)
goto mutex_unlock; goto mutex_unlock;
} }
/* Acquire IO memory for vendorreq */
io_buf = dvobjpriv->usb_vendor_req_buf;
status = usb_control_msg_recv(udev, 0, REALTEK_USB_VENQT_CMD_REQ, status = usb_control_msg_recv(udev, 0, REALTEK_USB_VENQT_CMD_REQ,
REALTEK_USB_VENQT_READ, value, REALTEK_USB_VENQT_READ, value,
REALTEK_USB_VENQT_CMD_IDX, io_buf, REALTEK_USB_VENQT_CMD_IDX, io_buf,
@ -70,14 +67,14 @@ static int usb_write(struct intf_hdl *intf, u16 value, void *data, u8 size)
struct dvobj_priv *dvobjpriv = adapter_to_dvobj(adapt); struct dvobj_priv *dvobjpriv = adapter_to_dvobj(adapt);
struct usb_device *udev = dvobjpriv->pusbdev; struct usb_device *udev = dvobjpriv->pusbdev;
int status; int status;
u8 *io_buf; /* Pointer to I/O buffer */ u8 io_buf[VENDOR_CMD_MAX_DATA_LEN];
mutex_lock(&dvobjpriv->usb_vendor_req_mutex); mutex_lock(&dvobjpriv->usb_vendor_req_mutex);
if (adapt->bSurpriseRemoved || adapt->pwrctrlpriv.pnp_bstop_trx) if (adapt->bSurpriseRemoved || adapt->pwrctrlpriv.pnp_bstop_trx) {
return -EPERM; status = -EPERM;
goto mutex_unlock;
io_buf = dvobjpriv->usb_vendor_req_buf; }
memcpy(io_buf, data, size); memcpy(io_buf, data, size);
status = usb_control_msg_send(udev, 0, REALTEK_USB_VENQT_CMD_REQ, status = usb_control_msg_send(udev, 0, REALTEK_USB_VENQT_CMD_REQ,

Просмотреть файл

@ -168,9 +168,6 @@ struct dvobj_priv {
struct semaphore usb_suspend_sema; struct semaphore usb_suspend_sema;
struct mutex usb_vendor_req_mutex; struct mutex usb_vendor_req_mutex;
u8 *usb_alloc_vendor_req_buf;
u8 *usb_vendor_req_buf;
struct usb_interface *pusbintf; struct usb_interface *pusbintf;
struct usb_device *pusbdev; struct usb_device *pusbdev;

Просмотреть файл

@ -75,24 +75,12 @@ static struct rtw_usb_drv *usb_drv = &rtl8188e_usb_drv;
static u8 rtw_init_intf_priv(struct dvobj_priv *dvobj) static u8 rtw_init_intf_priv(struct dvobj_priv *dvobj)
{ {
u8 rst = _SUCCESS;
mutex_init(&dvobj->usb_vendor_req_mutex); mutex_init(&dvobj->usb_vendor_req_mutex);
return _SUCCESS;
dvobj->usb_alloc_vendor_req_buf = kzalloc(MAX_USB_IO_CTL_SIZE, GFP_KERNEL);
if (!dvobj->usb_alloc_vendor_req_buf) {
DBG_88E("alloc usb_vendor_req_buf failed... /n");
rst = _FAIL;
goto exit;
}
dvobj->usb_vendor_req_buf = (u8 *)N_BYTE_ALIGMENT((size_t)(dvobj->usb_alloc_vendor_req_buf), ALIGNMENT_UNIT);
exit:
return rst;
} }
static void rtw_deinit_intf_priv(struct dvobj_priv *dvobj) static void rtw_deinit_intf_priv(struct dvobj_priv *dvobj)
{ {
kfree(dvobj->usb_alloc_vendor_req_buf);
mutex_destroy(&dvobj->usb_vendor_req_mutex); mutex_destroy(&dvobj->usb_vendor_req_mutex);
} }