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

Commit 76ef7cf7 authored by Andrei Emeltchenko's avatar Andrei Emeltchenko Committed by Gustavo Padovan
Browse files

Bluetooth: AMP: Handle number of compl blocks for AMP_LINK



Add handling blocks count for AMP link.

Signed-off-by: default avatarAndrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
parent 42c4e53e
Loading
Loading
Loading
Loading
+23 −2
Original line number Original line Diff line number Diff line
@@ -2677,6 +2677,27 @@ static void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
	queue_work(hdev->workqueue, &hdev->tx_work);
	queue_work(hdev->workqueue, &hdev->tx_work);
}
}


static struct hci_conn *__hci_conn_lookup_handle(struct hci_dev *hdev,
						 __u16 handle)
{
	struct hci_chan *chan;

	switch (hdev->dev_type) {
	case HCI_BREDR:
		return hci_conn_hash_lookup_handle(hdev, handle);
	case HCI_AMP:
		chan = hci_chan_lookup_handle(hdev, handle);
		if (chan)
			return chan->conn;
		break;
	default:
		BT_ERR("%s unknown dev_type %d", hdev->name, hdev->dev_type);
		break;
	}

	return NULL;
}

static void hci_num_comp_blocks_evt(struct hci_dev *hdev, struct sk_buff *skb)
static void hci_num_comp_blocks_evt(struct hci_dev *hdev, struct sk_buff *skb)
{
{
	struct hci_ev_num_comp_blocks *ev = (void *) skb->data;
	struct hci_ev_num_comp_blocks *ev = (void *) skb->data;
@@ -2698,13 +2719,13 @@ static void hci_num_comp_blocks_evt(struct hci_dev *hdev, struct sk_buff *skb)


	for (i = 0; i < ev->num_hndl; i++) {
	for (i = 0; i < ev->num_hndl; i++) {
		struct hci_comp_blocks_info *info = &ev->handles[i];
		struct hci_comp_blocks_info *info = &ev->handles[i];
		struct hci_conn *conn;
		struct hci_conn *conn = NULL;
		__u16  handle, block_count;
		__u16  handle, block_count;


		handle = __le16_to_cpu(info->handle);
		handle = __le16_to_cpu(info->handle);
		block_count = __le16_to_cpu(info->blocks);
		block_count = __le16_to_cpu(info->blocks);


		conn = hci_conn_hash_lookup_handle(hdev, handle);
		conn = __hci_conn_lookup_handle(hdev, handle);
		if (!conn)
		if (!conn)
			continue;
			continue;