lkml.org 
[lkml]   [2014]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 013/105] Bluetooth: Fix issue with USB suspend in btusb driver
    Date
    3.13.11.10 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Champion Chen <champion_chen@realsil.com.cn>

    commit 85560c4a828ec9c8573840c9b66487b6ae584768 upstream.

    Suspend could fail for some platforms because
    btusb_suspend==> btusb_stop_traffic ==> usb_kill_anchored_urbs.

    When btusb_bulk_complete returns before system suspend and resubmits
    an URB, the system cannot enter suspend state.

    Signed-off-by: Champion Chen <champion_chen@realsil.com.cn>
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/bluetooth/btusb.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
    index 3980fd1..f3cd23d 100644
    --- a/drivers/bluetooth/btusb.c
    +++ b/drivers/bluetooth/btusb.c
    @@ -305,6 +305,9 @@ static void btusb_intr_complete(struct urb *urb)
    BT_ERR("%s corrupted event packet", hdev->name);
    hdev->stat.err_rx++;
    }
    + } else if (urb->status == -ENOENT) {
    + /* Avoid suspend failed when usb_kill_urb */
    + return;
    }

    if (!test_bit(BTUSB_INTR_RUNNING, &data->flags))
    @@ -393,6 +396,9 @@ static void btusb_bulk_complete(struct urb *urb)
    BT_ERR("%s corrupted ACL packet", hdev->name);
    hdev->stat.err_rx++;
    }
    + } else if (urb->status == -ENOENT) {
    + /* Avoid suspend failed when usb_kill_urb */
    + return;
    }

    if (!test_bit(BTUSB_BULK_RUNNING, &data->flags))
    @@ -487,6 +493,9 @@ static void btusb_isoc_complete(struct urb *urb)
    hdev->stat.err_rx++;
    }
    }
    + } else if (urb->status == -ENOENT) {
    + /* Avoid suspend failed when usb_kill_urb */
    + return;
    }

    if (!test_bit(BTUSB_ISOC_RUNNING, &data->flags))
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-10-27 20:41    [W:4.029 / U:0.412 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site