* [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising
@ 2026-10-06 14:14 Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 2/4] Bluetooth: HCI: Fix tracking of instances sharing handle 0x00 Luiz Augusto von Dentz
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2026-10-06 14:14 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Global Advertising, enabled with MGMT_OP_SET_ADVERTISING, uses instance
0 and with extended advertising it has its own advertising set, but
instances were still being treated as if they shared the same set:
- Add Advertising and Add Extended Advertising Data would return
success without ever enabling the instance.
- Removing the last instance would disable all advertising sets,
stopping Global Advertising while leaving its setting enabled.
- Disabling Global Advertising would disable all sets, including
active instances.
Fix this by only overriding instances that share the advertising set of
Global Advertising, and by tracking HCI_LE_ADV_0 rather than HCI_LE_ADV
to determine the state of Global Advertising, which is now also cleared
when all advertising sets are disabled.
Fixes: 0d92808024b4 ("Bluetooth: HCI: Fix tracking of advertisement set/instance 0x00")
Assisted-by: OpenCode:claude-opus-5.5
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
include/net/bluetooth/hci_sync.h | 1 +
net/bluetooth/hci_event.c | 8 ++-
net/bluetooth/hci_sync.c | 2 +-
net/bluetooth/mgmt.c | 83 +++++++++++++++++++++++++++-----
4 files changed, 81 insertions(+), 13 deletions(-)
diff --git a/include/net/bluetooth/hci_sync.h b/include/net/bluetooth/hci_sync.h
index a6579a868678..59cb918d1405 100644
--- a/include/net/bluetooth/hci_sync.h
+++ b/include/net/bluetooth/hci_sync.h
@@ -122,6 +122,7 @@ int hci_disable_per_advertising_sync(struct hci_dev *hdev, u8 instance);
int hci_remove_advertising_sync(struct hci_dev *hdev, struct sock *sk,
u8 instance, bool force);
int hci_disable_advertising_sync(struct hci_dev *hdev);
+int hci_disable_ext_adv_legacy_instance_sync(struct hci_dev *hdev);
int hci_clear_adv_instance_sync(struct hci_dev *hdev, struct sock *sk,
u8 instance, bool force);
int hci_update_passive_scan_sync(struct hci_dev *hdev);
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index a3359aaad001..2c8f6f22a4ee 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -1686,8 +1686,12 @@ static u8 hci_cc_le_set_ext_adv_enable(struct hci_dev *hdev, void *data,
hci_dev_clear_flag(hdev, HCI_LE_ADV_0);
/* If just one instance was disabled check if there are
- * any other instance enabled before clearing HCI_LE_ADV
+ * any other instance enabled, including instance 0,
+ * before clearing HCI_LE_ADV
*/
+ if (hci_dev_test_flag(hdev, HCI_LE_ADV_0))
+ goto unlock;
+
list_for_each_entry_safe(adv, n, &hdev->adv_instances,
list) {
if (adv->enabled)
@@ -1698,6 +1702,8 @@ static u8 hci_cc_le_set_ext_adv_enable(struct hci_dev *hdev, void *data,
list_for_each_entry_safe(adv, n, &hdev->adv_instances,
list)
adv->enabled = false;
+
+ hci_dev_clear_flag(hdev, HCI_LE_ADV_0);
}
hci_dev_clear_flag(hdev, HCI_LE_ADV);
diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 1fe11d3ef1aa..19917aa49cb2 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -1156,7 +1156,7 @@ int hci_update_random_address_sync(struct hci_dev *hdev, bool require_privacy,
return 0;
}
-static int hci_disable_ext_adv_legacy_instance_sync(struct hci_dev *hdev)
+int hci_disable_ext_adv_legacy_instance_sync(struct hci_dev *hdev)
{
struct hci_cp_le_set_ext_adv_enable *cp;
struct hci_cp_ext_adv_set *set;
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index aea3482e3893..106b35c88c98 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -6546,7 +6546,12 @@ static void set_advertising_complete(struct hci_dev *hdev, void *data, int err)
return;
}
- if (hci_dev_test_flag(hdev, HCI_LE_ADV))
+ /* With extended advertising global advertising (instance 0) has its
+ * own advertising set so only consider its state, other instances may
+ * still be enabled.
+ */
+ if (ext_adv_capable(hdev) ? hci_dev_test_flag(hdev, HCI_LE_ADV_0) :
+ hci_dev_test_flag(hdev, HCI_LE_ADV))
hci_dev_set_flag(hdev, HCI_ADVERTISING);
else
hci_dev_clear_flag(hdev, HCI_ADVERTISING);
@@ -6566,6 +6571,34 @@ static void set_advertising_complete(struct hci_dev *hdev, void *data, int err)
list_empty(&hdev->adv_instances))
return;
+ /* With extended advertising instances are not overridden by global
+ * advertising, except the ones sharing its set, so only (re)start the
+ * instances that are not already enabled.
+ *
+ * Lookup instances by identifier while holding hdev->lock since the
+ * list may change while waiting for the HCI commands to complete.
+ */
+ if (ext_adv_capable(hdev)) {
+ u16 i;
+
+ for (i = 1; i <= hdev->le_num_of_adv_sets + 1; i++) {
+ bool enabled;
+
+ hci_dev_lock(hdev);
+ adv_instance = hci_find_adv_instance(hdev, i);
+ enabled = !adv_instance || adv_instance->enabled;
+ hci_dev_unlock(hdev);
+
+ if (enabled)
+ continue;
+
+ err = hci_schedule_adv_instance_sync(hdev, i, true);
+ enable_advertising_instance(hdev, err);
+ }
+
+ return;
+ }
+
instance = hdev->cur_adv_instance;
if (!instance) {
adv_instance = list_first_entry_or_null(&hdev->adv_instances,
@@ -6621,6 +6654,11 @@ static int set_adv_sync(struct hci_dev *hdev, void *data)
hci_update_scan_rsp_data_sync(hdev, 0x00);
hci_enable_advertising_sync(hdev);
}
+ } else if (ext_adv_capable(hdev)) {
+ /* Only disable global advertising (instance 0) leaving other
+ * instances untouched.
+ */
+ hci_disable_ext_adv_legacy_instance_sync(hdev);
} else {
hci_disable_advertising_sync(hdev);
}
@@ -8952,6 +8990,21 @@ static bool adv_busy(struct hci_dev *hdev)
return pending_find(MGMT_OP_SET_LE, hdev);
}
+/* Global advertising, enabled with MGMT_OP_SET_ADVERTISING, uses instance 0
+ * and takes precedence over any instance that would share its advertising
+ * set: with legacy advertising there is only a single set so all instances
+ * are overridden, whereas with extended advertising only an instance using
+ * handle 0x00 is.
+ */
+static bool adv_overridden_by_global(struct hci_dev *hdev,
+ struct adv_info *adv)
+{
+ if (!hci_dev_test_flag(hdev, HCI_ADVERTISING))
+ return false;
+
+ return !ext_adv_capable(hdev) || !adv->handle;
+}
+
static void add_adv_complete(struct hci_dev *hdev, struct sock *sk, u8 instance,
int err)
{
@@ -9113,12 +9166,12 @@ static int add_advertising(struct sock *sk, struct hci_dev *hdev,
schedule_instance = cp->instance;
}
- /* If the HCI_ADVERTISING flag is set or the device isn't powered or
- * there is no instance to be advertised then we have no HCI
- * communication to make. Simply return.
+ /* If the instance is overridden by global advertising or the device
+ * isn't powered or there is no instance to be advertised then we have
+ * no HCI communication to make. Simply return.
*/
if (!hdev_is_powered(hdev) ||
- hci_dev_test_flag(hdev, HCI_ADVERTISING) ||
+ adv_overridden_by_global(hdev, adv) ||
!schedule_instance) {
rp.instance = cp->instance;
err = mgmt_cmd_complete(sk, hdev->id, MGMT_OP_ADD_ADVERTISING,
@@ -9293,8 +9346,11 @@ static int add_ext_adv_params(struct sock *sk, struct hci_dev *hdev,
goto unlock;
}
- /* Submit request for advertising params if ext adv available */
- if (ext_adv_capable(hdev)) {
+ /* Submit request for advertising params if ext adv available, unless
+ * the set is in use by global advertising in which case the params
+ * will be programmed once the instance is scheduled.
+ */
+ if (ext_adv_capable(hdev) && !adv_overridden_by_global(hdev, adv)) {
cmd = mgmt_pending_new(sk, MGMT_OP_ADD_EXT_ADV_PARAMS, hdev,
data, data_len);
if (!cmd) {
@@ -9444,11 +9500,12 @@ static int add_ext_adv_data(struct sock *sk, struct hci_dev *hdev, void *data,
schedule_instance = cp->instance;
}
- /* If the HCI_ADVERTISING flag is set or there is no instance to
- * be advertised then we have no HCI communication to make.
+ /* If the instance is overridden by global advertising or there is no
+ * instance to be advertised then we have no HCI communication to make.
* Simply return.
*/
- if (hci_dev_test_flag(hdev, HCI_ADVERTISING) || !schedule_instance) {
+ if (adv_overridden_by_global(hdev, adv_instance) ||
+ !schedule_instance) {
if (adv_instance->pending) {
mgmt_advertising_added(sk, hdev, cp->instance);
adv_instance->pending = false;
@@ -9524,7 +9581,11 @@ static int remove_advertising_sync(struct hci_dev *hdev, void *data)
if (err)
return err;
- if (list_empty(&hdev->adv_instances))
+ /* Don't disable advertising if global advertising (instance 0) is
+ * enabled since it is not affected by removing instances.
+ */
+ if (list_empty(&hdev->adv_instances) &&
+ !hci_dev_test_flag(hdev, HCI_ADVERTISING))
err = hci_disable_advertising_sync(hdev);
return err;
--
2.55.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v5 2/4] Bluetooth: HCI: Fix tracking of instances sharing handle 0x00
2026-10-06 14:14 [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising Luiz Augusto von Dentz
@ 2026-10-06 14:15 ` Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic Luiz Augusto von Dentz
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2026-10-06 14:15 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
When the controller supports a single advertising set, instance 1 uses
handle 0x00 which is the same handle used by instance 0 (Global
Advertising), but hci_cc_le_set_ext_adv_enable would lookup the instance
using the handle as instance identifier, marking instance 0 as
enabled/disabled instead of instance 1, leaving its state out of sync.
Fix this by matching instances by handle and, for handle 0x00, using
hdev->cur_adv_instance, now set when enabling an instance, to determine
which instance owns the set. Also disable the instance sharing the
advertising set of instance 0 before overriding it.
Fixes: e77f43d531af ("Bluetooth: hci_core: Fix not handling hdev->le_num_of_adv_sets=1")
Assisted-by: OpenCode:claude-opus-5.5
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
net/bluetooth/hci_event.c | 47 ++++++++++++++++++++++++++++++---------
net/bluetooth/hci_sync.c | 35 ++++++++++++++++++++++++++++-
2 files changed, 70 insertions(+), 12 deletions(-)
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 2c8f6f22a4ee..9ec6c3c22fbd 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -1639,6 +1639,39 @@ static u8 hci_cc_le_set_adv_enable(struct hci_dev *hdev, void *data,
return rp->status;
}
+/* Update the enabled state of the instance(s) using the advertising set
+ * identified by handle.
+ *
+ * Instances may share handle 0x00 with instance 0 (Global Advertising), e.g.
+ * when the controller supports a single advertising set, in which case the
+ * set is owned by the instance last enabled (hdev->cur_adv_instance) and any
+ * other instance sharing it shall be considered disabled.
+ */
+static void hci_le_ext_adv_set_enabled(struct hci_dev *hdev, u8 handle,
+ bool enable)
+{
+ struct adv_info *adv;
+ bool owned = false;
+
+ list_for_each_entry(adv, &hdev->adv_instances, list) {
+ if (adv->handle != handle)
+ continue;
+
+ adv->enabled = enable &&
+ (handle ||
+ adv->instance == hdev->cur_adv_instance);
+ owned |= adv->enabled;
+ }
+
+ if (handle)
+ return;
+
+ if (enable && !owned)
+ hci_dev_set_flag(hdev, HCI_LE_ADV_0);
+ else
+ hci_dev_clear_flag(hdev, HCI_LE_ADV_0);
+}
+
static u8 hci_cc_le_set_ext_adv_enable(struct hci_dev *hdev, void *data,
struct sk_buff *skb)
{
@@ -1660,18 +1693,13 @@ static u8 hci_cc_le_set_ext_adv_enable(struct hci_dev *hdev, void *data,
hci_dev_lock(hdev);
- if (cp->num_of_sets)
- adv = hci_find_adv_instance(hdev, set->handle);
-
if (cp->enable) {
struct hci_conn *conn;
hci_dev_set_flag(hdev, HCI_LE_ADV);
- if (adv)
- adv->enabled = true;
- else if (!set->handle)
- hci_dev_set_flag(hdev, HCI_LE_ADV_0);
+ if (cp->num_of_sets)
+ hci_le_ext_adv_set_enabled(hdev, set->handle, true);
conn = hci_lookup_le_connect(hdev);
if (conn)
@@ -1680,10 +1708,7 @@ static u8 hci_cc_le_set_ext_adv_enable(struct hci_dev *hdev, void *data,
conn->conn_timeout);
} else {
if (cp->num_of_sets) {
- if (adv)
- adv->enabled = false;
- else if (!set->handle)
- hci_dev_clear_flag(hdev, HCI_LE_ADV_0);
+ hci_le_ext_adv_set_enabled(hdev, set->handle, false);
/* If just one instance was disabled check if there are
* any other instance enabled, including instance 0,
diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 19917aa49cb2..c5768069ee39 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -1156,6 +1156,30 @@ int hci_update_random_address_sync(struct hci_dev *hdev, bool require_privacy,
return 0;
}
+/* Check if the advertising set with handle 0x00 is in use, either by instance
+ * 0 or by an instance sharing its advertising set.
+ */
+static bool hci_ext_adv_handle_0_enabled(struct hci_dev *hdev)
+{
+ struct adv_info *adv;
+ bool enabled;
+
+ hci_dev_lock(hdev);
+
+ enabled = hci_dev_test_flag(hdev, HCI_LE_ADV_0);
+
+ list_for_each_entry(adv, &hdev->adv_instances, list) {
+ if (!adv->handle && adv->enabled) {
+ enabled = true;
+ break;
+ }
+ }
+
+ hci_dev_unlock(hdev);
+
+ return enabled;
+}
+
int hci_disable_ext_adv_legacy_instance_sync(struct hci_dev *hdev)
{
struct hci_cp_le_set_ext_adv_enable *cp;
@@ -1163,7 +1187,7 @@ int hci_disable_ext_adv_legacy_instance_sync(struct hci_dev *hdev)
u8 data[sizeof(*cp) + sizeof(*set) * 1];
u8 size;
- if (!hci_dev_test_flag(hdev, HCI_LE_ADV_0))
+ if (!hci_ext_adv_handle_0_enabled(hdev))
return 0;
memset(data, 0, sizeof(data));
@@ -1409,6 +1433,9 @@ int hci_setup_ext_adv_instance_sync(struct hci_dev *hdev, u8 instance)
return -EINVAL;
}
} else {
+ /* Disable the advertising set with handle 0x00, including any
+ * instance sharing it, since it is going to be overridden.
+ */
err = hci_disable_ext_adv_legacy_instance_sync(hdev);
if (err)
return err;
@@ -1676,6 +1703,12 @@ int hci_enable_ext_advertising_sync(struct hci_dev *hdev, u8 instance)
set->duration = cpu_to_le16(duration / 10);
}
+ /* Track which instance owns the advertising set since the handle
+ * alone is ambiguous when instances share handle 0x00, see
+ * hci_cc_le_set_ext_adv_enable.
+ */
+ hdev->cur_adv_instance = instance;
+
return __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_EXT_ADV_ENABLE,
sizeof(*cp) +
sizeof(*set) * cp->num_of_sets,
--
2.55.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v5 3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic
2026-10-06 14:14 [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 2/4] Bluetooth: HCI: Fix tracking of instances sharing handle 0x00 Luiz Augusto von Dentz
@ 2026-10-06 14:15 ` Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters Luiz Augusto von Dentz
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2026-10-06 14:15 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
When Add Advertising completes without HCI communication, e.g. when the
device is not powered or the instance is overridden by Global
Advertising, the instance is left marked as pending, so a subsequent
failure in add_adv_complete would remove it despite it having been
successfully added.
Fix this by clearing the pending state before completing the command.
Fixes: fffd38bca51c ("Bluetooth: mgmt/hci_core: multi-adv for add_advertising*()")
Assisted-by: OpenCode:claude-opus-5.5
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
net/bluetooth/mgmt.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 106b35c88c98..93872a5fc39c 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -9173,6 +9173,12 @@ static int add_advertising(struct sock *sk, struct hci_dev *hdev,
if (!hdev_is_powered(hdev) ||
adv_overridden_by_global(hdev, adv) ||
!schedule_instance) {
+ /* Instance has been accepted so it shall no longer be
+ * considered pending, otherwise a later failure in
+ * add_adv_complete would remove it.
+ */
+ adv->pending = false;
+
rp.instance = cp->instance;
err = mgmt_cmd_complete(sk, hdev->id, MGMT_OP_ADD_ADVERTISING,
MGMT_STATUS_SUCCESS, &rp, sizeof(rp));
--
2.55.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v5 4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters
2026-10-06 14:14 [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 2/4] Bluetooth: HCI: Fix tracking of instances sharing handle 0x00 Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic Luiz Augusto von Dentz
@ 2026-10-06 14:15 ` Luiz Augusto von Dentz
2026-10-06 15:10 ` [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising patchwork-bot+bluetooth
2026-10-06 15:24 ` [v5,1/4] " bluez.test.bot
4 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2026-10-06 14:15 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
If queueing the command fails the instance is never removed, despite it
having already been added or modified by hci_add_adv_instance, so remove
it as it is done by add_ext_adv_params_complete on failure, signaling
it has been removed if it was previously added.
Fixes: cba6b758711c ("Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 2")
Assisted-by: OpenCode:claude-opus-5.5
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
net/bluetooth/mgmt.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 93872a5fc39c..ce091bf84642 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -9361,14 +9361,15 @@ static int add_ext_adv_params(struct sock *sk, struct hci_dev *hdev,
data, data_len);
if (!cmd) {
err = -ENOMEM;
- hci_remove_adv_instance(hdev, cp->instance);
- goto unlock;
+ goto remove;
}
err = hci_cmd_sync_queue(hdev, add_ext_adv_params_sync, cmd,
add_ext_adv_params_complete);
- if (err < 0)
+ if (err < 0) {
mgmt_pending_free(cmd);
+ goto remove;
+ }
} else {
rp.instance = cp->instance;
rp.tx_power = HCI_ADV_TX_POWER_NO_PREFERENCE;
@@ -9379,6 +9380,18 @@ static int add_ext_adv_params(struct sock *sk, struct hci_dev *hdev,
MGMT_STATUS_SUCCESS, &rp, sizeof(rp));
}
+ goto unlock;
+
+remove:
+ /* The instance may have been modified already so remove it, like it
+ * is done in add_ext_adv_params_complete, signaling it has been
+ * removed if it was previously added.
+ */
+ if (!adv->pending)
+ mgmt_advertising_removed(sk, hdev, cp->instance);
+
+ hci_remove_adv_instance(hdev, cp->instance);
+
unlock:
hci_dev_unlock(hdev);
--
2.55.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising
2026-10-06 14:14 [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising Luiz Augusto von Dentz
` (2 preceding siblings ...)
2026-10-06 14:15 ` [PATCH v5 4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters Luiz Augusto von Dentz
@ 2026-10-06 15:10 ` patchwork-bot+bluetooth
2026-10-06 15:24 ` [v5,1/4] " bluez.test.bot
4 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+bluetooth @ 2026-10-06 15:10 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
Hello:
This series was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
On Tue, 6 Oct 2026 10:14:59 -0400 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>
> Global Advertising, enabled with MGMT_OP_SET_ADVERTISING, uses instance
> 0 and with extended advertising it has its own advertising set, but
> instances were still being treated as if they shared the same set:
>
> - Add Advertising and Add Extended Advertising Data would return
> success without ever enabling the instance.
> - Removing the last instance would disable all advertising sets,
> stopping Global Advertising while leaving its setting enabled.
> - Disabling Global Advertising would disable all sets, including
> active instances.
>
> [...]
Here is the summary with links:
- [v5,1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising
https://git.kernel.org/bluetooth/bluetooth-next/c/cbfccc737d71
- [v5,2/4] Bluetooth: HCI: Fix tracking of instances sharing handle 0x00
https://git.kernel.org/bluetooth/bluetooth-next/c/8c3e3b25a916
- [v5,3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic
https://git.kernel.org/bluetooth/bluetooth-next/c/dd07d6f51b82
- [v5,4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters
https://git.kernel.org/bluetooth/bluetooth-next/c/68d479844d57
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread* RE: [v5,1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising
2026-10-06 14:14 [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising Luiz Augusto von Dentz
` (3 preceding siblings ...)
2026-10-06 15:10 ` [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising patchwork-bot+bluetooth
@ 2026-10-06 15:24 ` bluez.test.bot
4 siblings, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2026-10-06 15:24 UTC (permalink / raw)
To: linux-bluetooth, luiz.dentz
[-- Attachment #1: Type: text/plain, Size: 3265 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1180355/
---Test result---
Test Summary:
CheckPatch PASS 2.15 seconds
VerifyFixes PASS 0.07 seconds
VerifySignedoff PASS 0.08 seconds
GitLint FAIL 0.74 seconds
SubjectPrefix PASS 0.84 seconds
BuildKernel PASS 17.46 seconds
CheckAllWarning PASS 20.06 seconds
CheckSparse WARNING 23.37 seconds
BuildKernel32 PASS 18.65 seconds
CheckKernelLLVM PASS 20.07 seconds
TestRunnerSetup PASS 448.04 seconds
TestRunner_l2cap-tester PASS 12.84 seconds
TestRunner_iso-tester FAIL 17.75 seconds
TestRunner_bnep-tester PASS 2.73 seconds
TestRunner_mgmt-tester FAIL 57.11 seconds
TestRunner_rfcomm-tester PASS 3.94 seconds
TestRunner_sco-tester PASS 4.90 seconds
TestRunner_ioctl-tester PASS 4.03 seconds
TestRunner_mesh-tester PASS 5.05 seconds
TestRunner_smp-tester PASS 3.88 seconds
TestRunner_userchan-tester PASS 2.78 seconds
TestRunner_6lowpan-tester PASS 3.91 seconds
IncrementalBuild PASS 26.97 seconds
Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint
Output:
[v5,3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic
1: T1 Title exceeds max length (82>80): "[v5,3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic"
[v5,4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters
1: T1 Title exceeds max length (85>80): "[v5,4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters"
##############################
Test: CheckSparse - WARNING
Desc: Run sparse tool with linux kernel
Output:
net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h):net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h):
##############################
Test: TestRunner_iso-tester - FAIL
Desc: Run iso-tester with test-runner
Output:
Total: 141, Passed: 136 (96.5%), Failed: 5, Not Run: 0
Failed Test Cases
ISO Broadcaster PAST Info - Success Timed out 1.842 seconds
ISO Broadcaster PAST Info RPA - Success Timed out 2.000 seconds
ISO Broadcaster PAST Sender - Success Timed out 2.000 seconds
ISO Broadcaster PAST Receiver - Success Timed out 1.898 seconds
ISO Broadcaster PAST Receiver Sync Lost - Success Timed out 1.817 seconds
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 503, Passed: 502 (99.8%), Failed: 1, Not Run: 0
Failed Test Cases
Add Ext Advertising - Success 5 (Set Adv off override) Timed out 2.611 seconds
https://github.com/bluez/bluetooth-next/pull/869
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-06 15:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-06 14:14 [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 2/4] Bluetooth: HCI: Fix tracking of instances sharing handle 0x00 Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 3/4] Bluetooth: MGMT: Fix pending state of instances added without HCI traffic Luiz Augusto von Dentz
2026-10-06 14:15 ` [PATCH v5 4/4] Bluetooth: MGMT: Fix leaking instance on Add Extended Advertising Parameters Luiz Augusto von Dentz
2026-10-06 15:10 ` [PATCH v5 1/4] Bluetooth: MGMT: Fix advertising instances with Global Advertising patchwork-bot+bluetooth
2026-10-06 15:24 ` [v5,1/4] " bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox