mirror of https://gitee.com/openkylin/linux.git
Bluetooth: mgmt: multi adv for create_instance_adv_data()
The create_instance_adv_data() function could not deal with multiple advertising instances previously. This is being fixed by retrieving advertising instances from the newly introduced dynamic advertising instance list. Signed-off-by: Florian Grandel <fgrandel@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
ca21fbe97c
commit
f63ba24b97
|
@ -1014,8 +1014,18 @@ static u8 get_cur_adv_instance_scan_rsp_len(struct hci_dev *hdev)
|
||||||
|
|
||||||
static u8 create_instance_adv_data(struct hci_dev *hdev, u8 instance, u8 *ptr)
|
static u8 create_instance_adv_data(struct hci_dev *hdev, u8 instance, u8 *ptr)
|
||||||
{
|
{
|
||||||
|
struct adv_info *adv_instance = NULL;
|
||||||
u8 ad_len = 0, flags = 0;
|
u8 ad_len = 0, flags = 0;
|
||||||
u32 instance_flags = get_adv_instance_flags(hdev, instance);
|
u32 instance_flags;
|
||||||
|
|
||||||
|
/* Return 0 when the current instance identifier is invalid. */
|
||||||
|
if (instance) {
|
||||||
|
adv_instance = hci_find_adv_instance(hdev, instance);
|
||||||
|
if (!adv_instance)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
instance_flags = get_adv_instance_flags(hdev, instance);
|
||||||
|
|
||||||
/* The Add Advertising command allows userspace to set both the general
|
/* The Add Advertising command allows userspace to set both the general
|
||||||
* and limited discoverable flags.
|
* and limited discoverable flags.
|
||||||
|
@ -1049,12 +1059,11 @@ static u8 create_instance_adv_data(struct hci_dev *hdev, u8 instance, u8 *ptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instance) {
|
if (adv_instance) {
|
||||||
memcpy(ptr, hdev->adv_instance.adv_data,
|
memcpy(ptr, adv_instance->adv_data,
|
||||||
hdev->adv_instance.adv_data_len);
|
adv_instance->adv_data_len);
|
||||||
|
ad_len += adv_instance->adv_data_len;
|
||||||
ad_len += hdev->adv_instance.adv_data_len;
|
ptr += adv_instance->adv_data_len;
|
||||||
ptr += hdev->adv_instance.adv_data_len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Provide Tx Power only if we can provide a valid value for it */
|
/* Provide Tx Power only if we can provide a valid value for it */
|
||||||
|
|
Loading…
Reference in New Issue