lkml.org 
[lkml]   [2012]   [Jan]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[29/40] xhci: Properly handle COMP_2ND_BW_ERR
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Hans de Goede <hdegoede@redhat.com>

    commit 71d85724bdd947a3b42a88d08af79f290a1a767b upstream.

    I encountered a result of COMP_2ND_BW_ERR while improving how the pwc
    webcam driver handles not having the full usb1 bandwidth available to
    itself.

    I created the following test setup, a NEC xhci controller with a
    single TT USB 2 hub plugged into it, with a usb keyboard and a pwc webcam
    plugged into the usb2 hub. This caused the following to show up in dmesg
    when trying to stream from the pwc camera at its highest alt setting:

    xhci_hcd 0000:01:00.0: ERROR: unexpected command completion code 0x23.
    usb 6-2.1: Not enough bandwidth for altsetting 9

    And usb_set_interface returned -EINVAL, which caused my pwc code to not
    do the right thing as it expected -ENOSPC.

    This patch makes the xhci driver properly handle COMP_2ND_BW_ERR and makes
    usb_set_interface return -ENOSPC as expected.

    This should be backported to stable kernels as old as 2.6.32.

    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/host/xhci.c | 1 +
    drivers/usb/host/xhci.h | 1 -
    2 files changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/usb/host/xhci.c
    +++ b/drivers/usb/host/xhci.c
    @@ -1568,6 +1568,7 @@ static int xhci_configure_endpoint_resul
    /* FIXME: can we allocate more resources for the HC? */
    break;
    case COMP_BW_ERR:
    + case COMP_2ND_BW_ERR:
    dev_warn(&udev->dev, "Not enough bandwidth "
    "for new device state.\n");
    ret = -ENOSPC;
    --- a/drivers/usb/host/xhci.h
    +++ b/drivers/usb/host/xhci.h
    @@ -900,7 +900,6 @@ struct xhci_transfer_event {
    /* Invalid Stream ID Error */
    #define COMP_STRID_ERR 34
    /* Secondary Bandwidth Error - may be returned by a Configure Endpoint cmd */
    -/* FIXME - check for this */
    #define COMP_2ND_BW_ERR 35
    /* Split Transaction Error */
    #define COMP_SPLIT_ERR 36



    \
     
     \ /
      Last update: 2012-01-11 00:07    [W:4.397 / U:0.460 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site