Commit 5638d9ea authored by Luiz Augusto von Dentz's avatar Luiz Augusto von Dentz
Browse files

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: 26afbd82 ("Bluetooth: Add initial implementation of CIS connections")
Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tested-by: default avatarFrédéric Danis <frederic.danis@collabora.com>
parent 7c9524d9
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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)