Bluetooth: hci_conn: Fix not matching by CIS ID
This fixes only matching CIS by address which prevents creating new hcon if upper layer is requesting a specific CIS ID. Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
06149746e7
commit
c14516faed
@ -1180,7 +1180,9 @@ static inline struct hci_conn *hci_conn_hash_lookup_le(struct hci_dev *hdev,
|
|||||||
|
|
||||||
static inline struct hci_conn *hci_conn_hash_lookup_cis(struct hci_dev *hdev,
|
static inline struct hci_conn *hci_conn_hash_lookup_cis(struct hci_dev *hdev,
|
||||||
bdaddr_t *ba,
|
bdaddr_t *ba,
|
||||||
__u8 ba_type)
|
__u8 ba_type,
|
||||||
|
__u8 cig,
|
||||||
|
__u8 id)
|
||||||
{
|
{
|
||||||
struct hci_conn_hash *h = &hdev->conn_hash;
|
struct hci_conn_hash *h = &hdev->conn_hash;
|
||||||
struct hci_conn *c;
|
struct hci_conn *c;
|
||||||
@ -1191,6 +1193,14 @@ static inline struct hci_conn *hci_conn_hash_lookup_cis(struct hci_dev *hdev,
|
|||||||
if (c->type != ISO_LINK)
|
if (c->type != ISO_LINK)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* Match CIG ID if set */
|
||||||
|
if (cig != BT_ISO_QOS_CIG_UNSET && cig != c->iso_qos.ucast.cig)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Match CIS ID if set */
|
||||||
|
if (id != BT_ISO_QOS_CIS_UNSET && id != c->iso_qos.ucast.cis)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (ba_type == c->dst_type && !bacmp(&c->dst, ba)) {
|
if (ba_type == c->dst_type && !bacmp(&c->dst, ba)) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return c;
|
return c;
|
||||||
|
@ -1841,7 +1841,8 @@ struct hci_conn *hci_bind_cis(struct hci_dev *hdev, bdaddr_t *dst,
|
|||||||
{
|
{
|
||||||
struct hci_conn *cis;
|
struct hci_conn *cis;
|
||||||
|
|
||||||
cis = hci_conn_hash_lookup_cis(hdev, dst, dst_type);
|
cis = hci_conn_hash_lookup_cis(hdev, dst, dst_type, qos->ucast.cig,
|
||||||
|
qos->ucast.cis);
|
||||||
if (!cis) {
|
if (!cis) {
|
||||||
cis = hci_conn_add(hdev, ISO_LINK, dst, HCI_ROLE_MASTER);
|
cis = hci_conn_add(hdev, ISO_LINK, dst, HCI_ROLE_MASTER);
|
||||||
if (!cis)
|
if (!cis)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user