Commit 4ac0718e authored by Simon Arlott's avatar Simon Arlott Committed by Greg Kroah-Hartman

USB: cxacru: Use appropriate logging for errors

When an error occurs, existing logging uses dbg() so the cause of a
problem is hard to determine. Error conditions shouldn't only be
properly reported with debugging enabled.

A side effect of this change is that when an uninitialised device is
started, a log message similar to the following is sent:
	cxacru 5-2:1.0: receive of cm 0x90 failed (-104)
This is normal - the device did not respond so firmware will be loaded.
Signed-off-by: default avatarSimon Arlott <simon@fire.lp0.eu>
Acked-by: default avatarDuncan Sands <baldrick@free.fr>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1f4f714f
...@@ -482,7 +482,9 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, ...@@ -482,7 +482,9 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
int rbuflen = ((rsize - 1) / stride + 1) * CMD_PACKET_SIZE; int rbuflen = ((rsize - 1) / stride + 1) * CMD_PACKET_SIZE;
if (wbuflen > PAGE_SIZE || rbuflen > PAGE_SIZE) { if (wbuflen > PAGE_SIZE || rbuflen > PAGE_SIZE) {
dbg("too big transfer requested"); if (printk_ratelimit())
usb_err(instance->usbatm, "requested transfer size too large (%d, %d)\n",
wbuflen, rbuflen);
ret = -ENOMEM; ret = -ENOMEM;
goto fail; goto fail;
} }
...@@ -493,8 +495,9 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, ...@@ -493,8 +495,9 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
init_completion(&instance->rcv_done); init_completion(&instance->rcv_done);
ret = usb_submit_urb(instance->rcv_urb, GFP_KERNEL); ret = usb_submit_urb(instance->rcv_urb, GFP_KERNEL);
if (ret < 0) { if (ret < 0) {
dbg("submitting read urb for cm %#x failed", cm); if (printk_ratelimit())
ret = ret; usb_err(instance->usbatm, "submit of read urb for cm %#x failed (%d)\n",
cm, ret);
goto fail; goto fail;
} }
...@@ -510,27 +513,29 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, ...@@ -510,27 +513,29 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
init_completion(&instance->snd_done); init_completion(&instance->snd_done);
ret = usb_submit_urb(instance->snd_urb, GFP_KERNEL); ret = usb_submit_urb(instance->snd_urb, GFP_KERNEL);
if (ret < 0) { if (ret < 0) {
dbg("submitting write urb for cm %#x failed", cm); if (printk_ratelimit())
ret = ret; usb_err(instance->usbatm, "submit of write urb for cm %#x failed (%d)\n",
cm, ret);
goto fail; goto fail;
} }
ret = cxacru_start_wait_urb(instance->snd_urb, &instance->snd_done, NULL); ret = cxacru_start_wait_urb(instance->snd_urb, &instance->snd_done, NULL);
if (ret < 0) { if (ret < 0) {
dbg("sending cm %#x failed", cm); if (printk_ratelimit())
ret = ret; usb_err(instance->usbatm, "send of cm %#x failed (%d)\n", cm, ret);
goto fail; goto fail;
} }
ret = cxacru_start_wait_urb(instance->rcv_urb, &instance->rcv_done, &actlen); ret = cxacru_start_wait_urb(instance->rcv_urb, &instance->rcv_done, &actlen);
if (ret < 0) { if (ret < 0) {
dbg("receiving cm %#x failed", cm); if (printk_ratelimit())
ret = ret; usb_err(instance->usbatm, "receive of cm %#x failed (%d)\n", cm, ret);
goto fail; goto fail;
} }
if (actlen % CMD_PACKET_SIZE || !actlen) { if (actlen % CMD_PACKET_SIZE || !actlen) {
dbg("response is not a positive multiple of %d: %#x", if (printk_ratelimit())
CMD_PACKET_SIZE, actlen); usb_err(instance->usbatm, "invalid response length to cm %#x: %d\n",
cm, actlen);
ret = -EIO; ret = -EIO;
goto fail; goto fail;
} }
...@@ -538,12 +543,16 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, ...@@ -538,12 +543,16 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
/* check the return status and copy the data to the output buffer, if needed */ /* check the return status and copy the data to the output buffer, if needed */
for (offb = offd = 0; offd < rsize && offb < actlen; offb += CMD_PACKET_SIZE) { for (offb = offd = 0; offd < rsize && offb < actlen; offb += CMD_PACKET_SIZE) {
if (rbuf[offb] != cm) { if (rbuf[offb] != cm) {
dbg("wrong cm %#x in response", rbuf[offb]); if (printk_ratelimit())
usb_err(instance->usbatm, "wrong cm %#x in response to cm %#x\n",
rbuf[offb], cm);
ret = -EIO; ret = -EIO;
goto fail; goto fail;
} }
if (rbuf[offb + 1] != CM_STATUS_SUCCESS) { if (rbuf[offb + 1] != CM_STATUS_SUCCESS) {
dbg("response failed: %#x", rbuf[offb + 1]); if (printk_ratelimit())
usb_err(instance->usbatm, "response to cm %#x failed: %#x\n",
cm, rbuf[offb + 1]);
ret = -EIO; ret = -EIO;
goto fail; goto fail;
} }
...@@ -582,14 +591,18 @@ static int cxacru_cm_get_array(struct cxacru_data *instance, enum cxacru_cm_requ ...@@ -582,14 +591,18 @@ static int cxacru_cm_get_array(struct cxacru_data *instance, enum cxacru_cm_requ
for (offb = 0; offb < len; ) { for (offb = 0; offb < len; ) {
int l = le32_to_cpu(buf[offb++]); int l = le32_to_cpu(buf[offb++]);
if (l > stride || l > (len - offb) / 2) { if (l > stride || l > (len - offb) / 2) {
dbg("wrong data length %#x in response", l); if (printk_ratelimit())
usb_err(instance->usbatm, "invalid data length from cm %#x: %d\n",
cm, l);
ret = -EIO; ret = -EIO;
goto cleanup; goto cleanup;
} }
while (l--) { while (l--) {
offd = le32_to_cpu(buf[offb++]); offd = le32_to_cpu(buf[offb++]);
if (offd >= size) { if (offd >= size) {
dbg("wrong index %#x in response", offd); if (printk_ratelimit())
usb_err(instance->usbatm, "wrong index #%x in response to cm #%x\n",
offd, cm);
ret = -EIO; ret = -EIO;
goto cleanup; goto cleanup;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment