From: Luiz Augusto von Dentz Date: Mon, 17 Oct 2022 22:36:23 +0000 (-0700) Subject: Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect X-Git-Tag: v6.1-rc5~60^2~9^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5638d9ea9c01c77fc11693d48cf719bc7e88f224;p=platform%2Fkernel%2Flinux-starfive.git Bluetooth: hci_conn: Fix not restoring ISO buffer count on disconnect 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 Tested-by: Frédéric Danis --- diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 1176bad..a6c12863 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)