diff options
author | Thomas Pugliese <thomas.pugliese@gmail.com> | 2014-02-28 16:06:51 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-28 19:14:48 -0500 |
commit | d1c5dd6f8edf16d2ed5a9a3d023b6f3f091cc42d (patch) | |
tree | a17a67eec3e8d8af894f8de95dcf9eee3f7325f1 /drivers/usb/wusbcore | |
parent | ecf3701cede840476b012ac4796f77c6dd9ee623 (diff) |
usb: wusbcore: add info to HWA debug prints
This patch adds a debug print in the transfer dequeue case where a
transfer result arrives for a transfer that has already been cleaned up.
It also adds the transfer ID to some debug prints and prints error codes
as signed integers in a couple of others.
Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/wusbcore')
-rw-r--r-- | drivers/usb/wusbcore/wa-xfer.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index ff1de5e396a4..0636206f75ab 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c | |||
@@ -369,13 +369,13 @@ static unsigned __wa_xfer_is_done(struct wa_xfer *xfer) | |||
369 | break; | 369 | break; |
370 | case WA_SEG_ERROR: | 370 | case WA_SEG_ERROR: |
371 | xfer->result = seg->result; | 371 | xfer->result = seg->result; |
372 | dev_dbg(dev, "xfer %p ID %08X#%u: ERROR result %zu(0x%08zX)\n", | 372 | dev_dbg(dev, "xfer %p ID %08X#%u: ERROR result %zi(0x%08zX)\n", |
373 | xfer, wa_xfer_id(xfer), seg->index, seg->result, | 373 | xfer, wa_xfer_id(xfer), seg->index, seg->result, |
374 | seg->result); | 374 | seg->result); |
375 | goto out; | 375 | goto out; |
376 | case WA_SEG_ABORTED: | 376 | case WA_SEG_ABORTED: |
377 | xfer->result = seg->result; | 377 | xfer->result = seg->result; |
378 | dev_dbg(dev, "xfer %p ID %08X#%u: ABORTED result %zu(0x%08zX)\n", | 378 | dev_dbg(dev, "xfer %p ID %08X#%u: ABORTED result %zi(0x%08zX)\n", |
379 | xfer, wa_xfer_id(xfer), seg->index, seg->result, | 379 | xfer, wa_xfer_id(xfer), seg->index, seg->result, |
380 | seg->result); | 380 | seg->result); |
381 | goto out; | 381 | goto out; |
@@ -2262,7 +2262,7 @@ static void wa_xfer_result_chew(struct wahc *wa, struct wa_xfer *xfer, | |||
2262 | } | 2262 | } |
2263 | if (usb_status & 0x80) { | 2263 | if (usb_status & 0x80) { |
2264 | seg->result = wa_xfer_status_to_errno(usb_status); | 2264 | seg->result = wa_xfer_status_to_errno(usb_status); |
2265 | dev_err(dev, "DTI: xfer %p#:%08X:%u failed (0x%02x)\n", | 2265 | dev_err(dev, "DTI: xfer %p 0x%08X:#%u failed (0x%02x)\n", |
2266 | xfer, xfer->id, seg->index, usb_status); | 2266 | xfer, xfer->id, seg->index, usb_status); |
2267 | seg->status = ((usb_status & 0x7F) == WA_XFER_STATUS_ABORTED) ? | 2267 | seg->status = ((usb_status & 0x7F) == WA_XFER_STATUS_ABORTED) ? |
2268 | WA_SEG_ABORTED : WA_SEG_ERROR; | 2268 | WA_SEG_ABORTED : WA_SEG_ERROR; |
@@ -2556,8 +2556,10 @@ static void wa_buf_in_cb(struct urb *urb) | |||
2556 | } | 2556 | } |
2557 | } else { | 2557 | } else { |
2558 | rpipe = xfer->ep->hcpriv; | 2558 | rpipe = xfer->ep->hcpriv; |
2559 | dev_dbg(dev, "xfer %p#%u: data in done (%zu bytes)\n", | 2559 | dev_dbg(dev, |
2560 | xfer, seg->index, seg->result); | 2560 | "xfer %p 0x%08X#%u: data in done (%zu bytes)\n", |
2561 | xfer, wa_xfer_id(xfer), seg->index, | ||
2562 | seg->result); | ||
2561 | rpipe_ready = rpipe_avail_inc(rpipe); | 2563 | rpipe_ready = rpipe_avail_inc(rpipe); |
2562 | done = __wa_xfer_mark_seg_as_done(xfer, seg, | 2564 | done = __wa_xfer_mark_seg_as_done(xfer, seg, |
2563 | WA_SEG_DONE); | 2565 | WA_SEG_DONE); |
@@ -2575,8 +2577,9 @@ static void wa_buf_in_cb(struct urb *urb) | |||
2575 | spin_lock_irqsave(&xfer->lock, flags); | 2577 | spin_lock_irqsave(&xfer->lock, flags); |
2576 | rpipe = xfer->ep->hcpriv; | 2578 | rpipe = xfer->ep->hcpriv; |
2577 | if (printk_ratelimit()) | 2579 | if (printk_ratelimit()) |
2578 | dev_err(dev, "xfer %p#%u: data in error %d\n", | 2580 | dev_err(dev, "xfer %p 0x%08X#%u: data in error %d\n", |
2579 | xfer, seg->index, urb->status); | 2581 | xfer, wa_xfer_id(xfer), seg->index, |
2582 | urb->status); | ||
2580 | if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, | 2583 | if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, |
2581 | EDC_ERROR_TIMEFRAME)){ | 2584 | EDC_ERROR_TIMEFRAME)){ |
2582 | dev_err(dev, "DTO: URB max acceptable errors " | 2585 | dev_err(dev, "DTO: URB max acceptable errors " |
@@ -2670,11 +2673,15 @@ static void wa_dti_cb(struct urb *urb) | |||
2670 | xfer_result->hdr.bNotifyType); | 2673 | xfer_result->hdr.bNotifyType); |
2671 | break; | 2674 | break; |
2672 | } | 2675 | } |
2676 | xfer_id = le32_to_cpu(xfer_result->dwTransferID); | ||
2673 | usb_status = xfer_result->bTransferStatus & 0x3f; | 2677 | usb_status = xfer_result->bTransferStatus & 0x3f; |
2674 | if (usb_status == WA_XFER_STATUS_NOT_FOUND) | 2678 | if (usb_status == WA_XFER_STATUS_NOT_FOUND) { |
2675 | /* taken care of already */ | 2679 | /* taken care of already */ |
2680 | dev_dbg(dev, "%s: xfer 0x%08X#%u not found.\n", | ||
2681 | __func__, xfer_id, | ||
2682 | xfer_result->bTransferSegment & 0x7f); | ||
2676 | break; | 2683 | break; |
2677 | xfer_id = le32_to_cpu(xfer_result->dwTransferID); | 2684 | } |
2678 | xfer = wa_xfer_get_by_id(wa, xfer_id); | 2685 | xfer = wa_xfer_get_by_id(wa, xfer_id); |
2679 | if (xfer == NULL) { | 2686 | if (xfer == NULL) { |
2680 | /* FIXME: transaction not found. */ | 2687 | /* FIXME: transaction not found. */ |