mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-29 12:28:27 +02:00
Bluetooth: ISO: Update hci_conn_hash_lookup_big for Broadcast slave
[ Upstream commit83d328a72e] Currently, hci_conn_hash_lookup_big only checks for BIS master connections, by filtering out connections with the destination address set. This commit updates this function to also consider BIS slave connections, since it is also used for a Broadcast Receiver to set an available BIG handle before issuing the LE BIG Create Sync command. Signed-off-by: Iulia Tanasescu <iulia.tanasescu@nxp.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Stable-dep-of:f0c200a4a5("Bluetooth: ISO: Fix BIS connection dst_type handling") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ae76cf6c2c
commit
825ce373fd
@@ -1315,7 +1315,17 @@ static inline struct hci_conn *hci_conn_hash_lookup_big(struct hci_dev *hdev,
|
||||
rcu_read_lock();
|
||||
|
||||
list_for_each_entry_rcu(c, &h->list, list) {
|
||||
if (bacmp(&c->dst, BDADDR_ANY) || c->type != ISO_LINK)
|
||||
if (c->type != ISO_LINK)
|
||||
continue;
|
||||
|
||||
/* An ISO_LINK hcon with BDADDR_ANY as destination
|
||||
* address is a Broadcast connection. A Broadcast
|
||||
* slave connection is associated with a PA train,
|
||||
* so the sync_handle can be used to differentiate
|
||||
* from unicast.
|
||||
*/
|
||||
if (bacmp(&c->dst, BDADDR_ANY) &&
|
||||
c->sync_handle == HCI_SYNC_HANDLE_INVALID)
|
||||
continue;
|
||||
|
||||
if (handle == c->iso_qos.bcast.big) {
|
||||
|
||||
@@ -6976,6 +6976,7 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data,
|
||||
/* Mark PA sync as established */
|
||||
set_bit(HCI_CONN_PA_SYNC, &bis->flags);
|
||||
|
||||
bis->sync_handle = conn->sync_handle;
|
||||
bis->iso_qos.bcast.big = ev->handle;
|
||||
memset(&interval, 0, sizeof(interval));
|
||||
memcpy(&interval, ev->latency, sizeof(ev->latency));
|
||||
|
||||
@@ -1928,7 +1928,6 @@ static void iso_conn_ready(struct iso_conn *conn)
|
||||
if (!bacmp(&hcon->dst, BDADDR_ANY)) {
|
||||
bacpy(&hcon->dst, &iso_pi(parent)->dst);
|
||||
hcon->dst_type = iso_pi(parent)->dst_type;
|
||||
hcon->sync_handle = iso_pi(parent)->sync_handle;
|
||||
}
|
||||
|
||||
if (ev3) {
|
||||
|
||||
Reference in New Issue
Block a user