Bluetooth: ISO: Match QoS adv handle with BIG handle

JIRA: https://issues.redhat.com/browse/RHEL-30099

commit 71b7bb48b9837ca97c75a521cc68398641dcb1d6
Author: Iulia Tanasescu <iulia.tanasescu@nxp.com>
Date:   Tue Oct 3 17:37:39 2023 +0300

    Bluetooth: ISO: Match QoS adv handle with BIG handle

    In case the user binds multiple sockets for the same BIG, the BIG
    handle should be matched with the associated adv handle, if it has
    already been allocated previously.

    Signed-off-by: Iulia Tanasescu <iulia.tanasescu@nxp.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

Signed-off-by: David Marlin <dmarlin@redhat.com>
This commit is contained in:
David Marlin 2024-03-22 13:59:42 -05:00
parent 88f1bcb4ff
commit e5b292cdfc
1 changed files with 12 additions and 0 deletions

View File

@ -1521,6 +1521,18 @@ static int qos_set_bis(struct hci_dev *hdev, struct bt_iso_qos *qos)
/* Allocate BIS if not set */
if (qos->bcast.bis == BT_ISO_QOS_BIS_UNSET) {
if (qos->bcast.big != BT_ISO_QOS_BIG_UNSET) {
conn = hci_conn_hash_lookup_big(hdev, qos->bcast.big);
if (conn) {
/* If the BIG handle is already matched to an advertising
* handle, do not allocate a new one.
*/
qos->bcast.bis = conn->iso_qos.bcast.bis;
return 0;
}
}
/* Find an unused adv set to advertise BIS, skip instance 0x00
* since it is reserved as general purpose set.
*/