Commit ca21fbe9 authored by Florian Grandel's avatar Florian Grandel Committed by Marcel Holtmann
Browse files

Bluetooth: mgmt: multi adv for create_instance_scan_rsp_data()



The create_instance_scan_rsp_data() function could not deal with
multiple advertising instances previously. This is being fixed by adding
an additional instance parameter.

Signed-off-by: default avatarFlorian Grandel <fgrandel@gmail.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 7b683b74
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -872,15 +872,22 @@ static u8 create_default_scan_rsp_data(struct hci_dev *hdev, u8 *ptr)
	return ad_len;
}

static u8 create_instance_scan_rsp_data(struct hci_dev *hdev, u8 *ptr)
static u8 create_instance_scan_rsp_data(struct hci_dev *hdev, u8 instance,
					u8 *ptr)
{
	struct adv_info *adv_instance;

	adv_instance = hci_find_adv_instance(hdev, instance);
	if (!adv_instance)
		return 0;

	/* TODO: Set the appropriate entries based on advertising instance flags
	 * here once flags other than 0 are supported.
	 */
	memcpy(ptr, hdev->adv_instance.scan_rsp_data,
	       hdev->adv_instance.scan_rsp_len);
	memcpy(ptr, adv_instance->scan_rsp_data,
	       adv_instance->scan_rsp_len);

	return hdev->adv_instance.scan_rsp_len;
	return adv_instance->scan_rsp_len;
}

static void update_inst_scan_rsp_data(struct hci_request *req, u8 instance)
@@ -895,7 +902,7 @@ static void update_inst_scan_rsp_data(struct hci_request *req, u8 instance)
	memset(&cp, 0, sizeof(cp));

	if (instance)
		len = create_instance_scan_rsp_data(hdev, cp.data);
		len = create_instance_scan_rsp_data(hdev, instance, cp.data);
	else
		len = create_default_scan_rsp_data(hdev, cp.data);