wifi: brcm80211: fmac: Add error log in brcmf_usb_dl_cmd()

In brcmf_usb_dl_cmd(), the error logging is not enough to describe
the error state. And some caller of the brcmf_usb_dl_cmd() does not
handle its error. An error log in brcmf_usb_dl_cmd() is needed to
prevent silent failure.

Add error handling in brcmf_usb_dl_cmd() to log the command id and
error code in the brcmf_usb_dl_cmd() fails. In this way, every
invocation of the function logs a message upon failure.

Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Link: https://patch.msgid.link/20250422065938.2345-1-vulab@iscas.ac.cn
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Wentao Liang 2025-04-22 14:59:38 +08:00 committed by Johannes Berg
parent fcc2d3e11b
commit a3cdd0899b

View File

@ -741,15 +741,19 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info *devinfo, u8 cmd,
void *buffer, int buflen)
{
int ret;
char *tmpbuf;
char *tmpbuf = NULL;
u16 size;
if ((!devinfo) || (devinfo->ctl_urb == NULL))
return -EINVAL;
if (!devinfo || !devinfo->ctl_urb) {
ret = -EINVAL;
goto err;
}
tmpbuf = kmalloc(buflen, GFP_ATOMIC);
if (!tmpbuf)
return -ENOMEM;
if (!tmpbuf) {
ret = -ENOMEM;
goto err;
}
size = buflen;
devinfo->ctl_urb->transfer_buffer_length = size;
@ -770,18 +774,23 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info *devinfo, u8 cmd,
ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC);
if (ret < 0) {
brcmf_err("usb_submit_urb failed %d\n", ret);
goto finalize;
goto err;
}
if (!brcmf_usb_ioctl_resp_wait(devinfo)) {
usb_kill_urb(devinfo->ctl_urb);
ret = -ETIMEDOUT;
goto err;
} else {
memcpy(buffer, tmpbuf, buflen);
}
finalize:
kfree(tmpbuf);
return 0;
err:
kfree(tmpbuf);
brcmf_err("dl cmd %u failed: err=%d\n", cmd, ret);
return ret;
}