2022-10-17 22:46:58

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH] Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect

From: Luiz Augusto von Dentz <[email protected]>

When disconnecting an ISO link the controller may not generate
HCI_EV_NUM_COMP_PKTS for unacked packets which needs to be restored in
hci_conn_del otherwise the host would assume they are still in use and
would not be able to use all the buffers available.

Fixes: 26afbd826ee3 ("Bluetooth: Add initial implementation of CIS connections")
Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
net/bluetooth/hci_conn.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 5d6ee5075642..df914f521c9d 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -1067,10 +1067,21 @@ int hci_conn_del(struct hci_conn *conn)
hdev->acl_cnt += conn->sent;
} else {
struct hci_conn *acl = conn->link;
+
if (acl) {
acl->link = NULL;
hci_conn_drop(acl);
}
+
+ /* Unacked ISO frames */
+ if (conn->type == ISO_LINK) {
+ if (hdev->iso_pkts)
+ hdev->iso_cnt += conn->sent;
+ else if (hdev->le_pkts)
+ hdev->le_cnt += conn->sent;
+ else
+ hdev->acl_cnt += conn->sent;
+ }
}

if (conn->amp_mgr)
--
2.37.3


2022-10-17 23:32:53

by bluez.test.bot

[permalink] [raw]
Subject: RE: Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=686004

---Test result---

Test Summary:
CheckPatch PASS 1.36 seconds
GitLint PASS 0.79 seconds
SubjectPrefix PASS 0.65 seconds
BuildKernel PASS 34.19 seconds
BuildKernel32 PASS 30.08 seconds
Incremental Build with patchesPASS 42.19 seconds
TestRunner: Setup PASS 507.77 seconds
TestRunner: l2cap-tester PASS 17.15 seconds
TestRunner: iso-tester PASS 15.95 seconds
TestRunner: bnep-tester PASS 6.26 seconds
TestRunner: mgmt-tester PASS 103.35 seconds
TestRunner: rfcomm-tester PASS 10.05 seconds
TestRunner: sco-tester PASS 9.43 seconds
TestRunner: ioctl-tester PASS 10.72 seconds
TestRunner: mesh-tester PASS 7.76 seconds
TestRunner: smp-tester PASS 9.41 seconds
TestRunner: userchan-tester PASS 6.51 seconds



---
Regards,
Linux Bluetooth

2022-10-18 22:17:19

by Frédéric Danis

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect

Hi Luiz,

I tested this patch and I'm not able to reproduce the issue after
applying it.

Tested-by: Frédéric Danis <[email protected]>


Le 18/10/2022 à 00:41, Luiz Augusto von Dentz a écrit :
> From: Luiz Augusto von Dentz <[email protected]>
>
> When disconnecting an ISO link the controller may not generate
> HCI_EV_NUM_COMP_PKTS for unacked packets which needs to be restored in
> hci_conn_del otherwise the host would assume they are still in use and
> would not be able to use all the buffers available.
>
> Fixes: 26afbd826ee3 ("Bluetooth: Add initial implementation of CIS connections")
> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
> ---
> net/bluetooth/hci_conn.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
> index 5d6ee5075642..df914f521c9d 100644
> --- a/net/bluetooth/hci_conn.c
> +++ b/net/bluetooth/hci_conn.c
> @@ -1067,10 +1067,21 @@ int hci_conn_del(struct hci_conn *conn)
> hdev->acl_cnt += conn->sent;
> } else {
> struct hci_conn *acl = conn->link;
> +
> if (acl) {
> acl->link = NULL;
> hci_conn_drop(acl);
> }
> +
> + /* Unacked ISO frames */
> + if (conn->type == ISO_LINK) {
> + if (hdev->iso_pkts)
> + hdev->iso_cnt += conn->sent;
> + else if (hdev->le_pkts)
> + hdev->le_cnt += conn->sent;
> + else
> + hdev->acl_cnt += conn->sent;
> + }
> }
>
> if (conn->amp_mgr)

--
Frédéric Danis Embedded Linux Consultant
[email protected]

2022-10-19 19:11:29

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect

Hello:

This patch was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Mon, 17 Oct 2022 15:41:47 -0700 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> When disconnecting an ISO link the controller may not generate
> HCI_EV_NUM_COMP_PKTS for unacked packets which needs to be restored in
> hci_conn_del otherwise the host would assume they are still in use and
> would not be able to use all the buffers available.
>
> [...]

Here is the summary with links:
- Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect
https://git.kernel.org/bluetooth/bluetooth-next/c/62294445832e

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html