* [PATCH] bluetooth: btusb: Fix issue with suspend
@ 2014-09-05 15:16 Larry Finger
2014-09-06 17:02 ` Marcel Holtmann
0 siblings, 1 reply; 7+ messages in thread
From: Larry Finger @ 2014-09-05 15:16 UTC (permalink / raw)
To: Marcel Holtmann, Gustavo Padovan, Johan Hedberg
Cc: linux-bluetooth, netdev, Champion Chen, Larry Finger, Stable
From: Champion Chen <champion_chen@realsil.com.cn>
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>
Cc: Stable <stable@vger.kernel.org>
---
Johan,
To help Champion with the process, I have formatted the patch in
the correct manner. I hope I understand the issue correctly and
stated it in a coherent manner in the commit message.
Larry
---
drivers/bluetooth/btusb.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 292c38e..45a7211 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -330,6 +330,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))
@@ -417,6 +420,9 @@ static void btusb_bulk_complete(struct urb *urb)
urb->actual_length) < 0) {
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;
}
}
@@ -512,6 +518,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.8.4.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] bluetooth: btusb: Fix issue with suspend
2014-09-05 15:16 [PATCH] bluetooth: btusb: Fix issue with suspend Larry Finger
@ 2014-09-06 17:02 ` Marcel Holtmann
2014-09-06 17:16 ` Larry Finger
0 siblings, 1 reply; 7+ messages in thread
From: Marcel Holtmann @ 2014-09-06 17:02 UTC (permalink / raw)
To: Larry Finger
Cc: Gustavo F. Padovan, Johan Hedberg, linux-bluetooth, netdev,
Champion Chen, Stable
Hi Larry,
> 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>
> Cc: Stable <stable@vger.kernel.org>
> ---
> Johan,
>
> To help Champion with the process, I have formatted the patch in
> the correct manner. I hope I understand the issue correctly and
> stated it in a coherent manner in the commit message.
>
> Larry
> ---
> drivers/bluetooth/btusb.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 292c38e..45a7211 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -330,6 +330,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))
> @@ -417,6 +420,9 @@ static void btusb_bulk_complete(struct urb *urb)
> urb->actual_length) < 0) {
> 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;
> }
this one is utterly bogus. Either urb->status is 0 or it is -ENOENT, but it will not be both. I think you put it to the wrong if clause.
> }
>
> @@ -512,6 +518,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))
Regards
Marcel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] bluetooth: btusb: Fix issue with suspend
2014-09-06 17:02 ` Marcel Holtmann
@ 2014-09-06 17:16 ` Larry Finger
2014-09-06 17:35 ` Marcel Holtmann
0 siblings, 1 reply; 7+ messages in thread
From: Larry Finger @ 2014-09-06 17:16 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Gustavo F. Padovan, Johan Hedberg, linux-bluetooth, netdev,
Champion Chen, Stable
On 09/06/2014 12:02 PM, Marcel Holtmann wrote:
> Hi Larry,
>
>> 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>
>> Cc: Stable <stable@vger.kernel.org>
>> ---
>> Johan,
>>
>> To help Champion with the process, I have formatted the patch in
>> the correct manner. I hope I understand the issue correctly and
>> stated it in a coherent manner in the commit message.
>>
>> Larry
>> ---
>> drivers/bluetooth/btusb.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
>> index 292c38e..45a7211 100644
>> --- a/drivers/bluetooth/btusb.c
>> +++ b/drivers/bluetooth/btusb.c
>> @@ -330,6 +330,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))
>> @@ -417,6 +420,9 @@ static void btusb_bulk_complete(struct urb *urb)
>> urb->actual_length) < 0) {
>> 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;
>> }
>
> this one is utterly bogus. Either urb->status is 0 or it is -ENOENT, but it will not be both. I think you put it to the wrong if clause.
Thanks for the review. Obviously, you are correct. A revised patch will be sent
soon.
The code sent by Champion is now posted at
http://github.com/lwfinger/rtl8723au_bt/new. It works for everyone that has
tested it.
Larry
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] bluetooth: btusb: Fix issue with suspend
2014-09-06 17:16 ` Larry Finger
@ 2014-09-06 17:35 ` Marcel Holtmann
2014-09-06 19:05 ` Larry Finger
0 siblings, 1 reply; 7+ messages in thread
From: Marcel Holtmann @ 2014-09-06 17:35 UTC (permalink / raw)
To: Larry Finger
Cc: Gustavo F. Padovan, Johan Hedberg, BlueZ development,
Network Development, Champion Chen, Stable
Hi Larry,
>>> 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>
>>> Cc: Stable <stable@vger.kernel.org>
>>> ---
>>> Johan,
>>>
>>> To help Champion with the process, I have formatted the patch in
>>> the correct manner. I hope I understand the issue correctly and
>>> stated it in a coherent manner in the commit message.
>>>
>>> Larry
>>> ---
>>> drivers/bluetooth/btusb.c | 9 +++++++++
>>> 1 file changed, 9 insertions(+)
>>>
>>> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
>>> index 292c38e..45a7211 100644
>>> --- a/drivers/bluetooth/btusb.c
>>> +++ b/drivers/bluetooth/btusb.c
>>> @@ -330,6 +330,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))
>>> @@ -417,6 +420,9 @@ static void btusb_bulk_complete(struct urb *urb)
>>> urb->actual_length) < 0) {
>>> 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;
>>> }
>>
>> this one is utterly bogus. Either urb->status is 0 or it is -ENOENT, but it will not be both. I think you put it to the wrong if clause.
>
> Thanks for the review. Obviously, you are correct. A revised patch will be sent soon.
one other thing. Please let maintainers decide when a patch is useful for stable and when not. Patches need to go upstream first anyway. People spamming stable@vger.kernel.org with patches that are not reviewed yet is pretty much a waste of time.
Regards
Marcel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] bluetooth: btusb: Fix issue with suspend
2014-09-06 17:35 ` Marcel Holtmann
@ 2014-09-06 19:05 ` Larry Finger
2014-09-06 19:12 ` Marcel Holtmann
0 siblings, 1 reply; 7+ messages in thread
From: Larry Finger @ 2014-09-06 19:05 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Gustavo F. Padovan, Johan Hedberg, BlueZ development,
Network Development, Champion Chen, Stable
On 09/06/2014 12:35 PM, Marcel Holtmann wrote:
> Hi Larry,
>
>
> one other thing. Please let maintainers decide when a patch is useful for stable and when not. Patches need to go upstream first anyway. People spamming stable@vger.kernel.org with patches that are not reviewed yet is pretty much a waste of time.
Sorry. In the wireless tree, the patch author suggests that the patch is
suitable for stable. If the maintainer disagrees, he strips the Cc to stable. It
seems that you do it the other way. In either case, I do not think the stable
patches are picked up by the maintainers of stable versions until the patch hits
mainline.
Larry
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] bluetooth: btusb: Fix issue with suspend
2014-09-06 19:05 ` Larry Finger
@ 2014-09-06 19:12 ` Marcel Holtmann
2014-09-06 19:19 ` Greg KH
0 siblings, 1 reply; 7+ messages in thread
From: Marcel Holtmann @ 2014-09-06 19:12 UTC (permalink / raw)
To: Larry Finger
Cc: Gustavo F. Padovan, Johan Hedberg, BlueZ development,
Network Development, Champion Chen, Stable
Hi Larry,
>> one other thing. Please let maintainers decide when a patch is useful for stable and when not. Patches need to go upstream first anyway. People spamming stable@vger.kernel.org with patches that are not reviewed yet is pretty much a waste of time.
>
> Sorry. In the wireless tree, the patch author suggests that the patch is suitable for stable. If the maintainer disagrees, he strips the Cc to stable. It seems that you do it the other way. In either case, I do not think the stable patches are picked up by the maintainers of stable versions until the patch hits mainline.
I have no idea what the stable@vger.kernel.org guys do with patches that are not yet upstream. However it is a waste of their time sending stuff to their mailing list that has not even seen a maintainer review. You can just mention it in the comment section that this might qualify for stable.
Regards
Marcel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] bluetooth: btusb: Fix issue with suspend
2014-09-06 19:12 ` Marcel Holtmann
@ 2014-09-06 19:19 ` Greg KH
0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2014-09-06 19:19 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Larry Finger, Gustavo F. Padovan, Johan Hedberg,
BlueZ development, Network Development, Champion Chen, Stable
On Sat, Sep 06, 2014 at 12:12:44PM -0700, Marcel Holtmann wrote:
> Hi Larry,
>
> >> one other thing. Please let maintainers decide when a patch is
> >> useful for stable and when not. Patches need to go upstream first
> >> anyway. People spamming stable@vger.kernel.org with patches that
> >> are not reviewed yet is pretty much a waste of time.
> >
> > Sorry. In the wireless tree, the patch author suggests that the
> > patch is suitable for stable. If the maintainer disagrees, he strips
> > the Cc to stable. It seems that you do it the other way. In either
> > case, I do not think the stable patches are picked up by the
> > maintainers of stable versions until the patch hits mainline.
>
> I have no idea what the stable@vger.kernel.org guys do with patches
> that are not yet upstream.
I ignore them :)
> However it is a waste of their time sending stuff to their mailing
> list that has not even seen a maintainer review. You can just mention
> it in the comment section that this might qualify for stable.
It doesn't bother me at all for the cc:, they are easy to filter away,
and it keeps me informed as to where patches will be coming from in the
future, and helps to track down things that get dropped.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-09-06 19:19 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-05 15:16 [PATCH] bluetooth: btusb: Fix issue with suspend Larry Finger
2014-09-06 17:02 ` Marcel Holtmann
2014-09-06 17:16 ` Larry Finger
2014-09-06 17:35 ` Marcel Holtmann
2014-09-06 19:05 ` Larry Finger
2014-09-06 19:12 ` Marcel Holtmann
2014-09-06 19:19 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).