Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bd57416 authored by Marcel Holtmann's avatar Marcel Holtmann Committed by David S. Miller
Browse files

[Bluetooth] Handling pending connect attempts after inquiry



After an inquiry completed or got canceled the Bluetooth core should
check for any pending connect attempts.

Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent e52726de
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@
static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb)
{
	__u8 status;
	struct hci_conn *pend;

	BT_DBG("%s ocf 0x%x", hdev->name, ocf);

@@ -71,6 +72,15 @@ static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb
			clear_bit(HCI_INQUIRY, &hdev->flags);
			hci_req_complete(hdev, status);
		}

		hci_dev_lock(hdev);

		pend = hci_conn_hash_lookup_state(hdev, ACL_LINK, BT_CONNECT2);
		if (pend)
			hci_acl_connect(pend);

		hci_dev_unlock(hdev);

		break;

	default:
@@ -565,11 +575,20 @@ static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status)
static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
{
	__u8 status = *((__u8 *) skb->data);
	struct hci_conn *pend;

	BT_DBG("%s status %d", hdev->name, status);

	clear_bit(HCI_INQUIRY, &hdev->flags);
	hci_req_complete(hdev, status);

	hci_dev_lock(hdev);

	pend = hci_conn_hash_lookup_state(hdev, ACL_LINK, BT_CONNECT2);
	if (pend)
		hci_acl_connect(pend);

	hci_dev_unlock(hdev);
}

/* Inquiry Result */