* [PATCH] Bluetooth: MGMT: Clear disabled connection parameters when loading none
@ 2026-10-29 20:28 Kevin Dewald
0 siblings, 0 replies; only message in thread
From: Kevin Dewald @ 2026-10-29 20:28 UTC (permalink / raw)
To: linux-bluetooth
Cc: Marcel Holtmann, Luiz Augusto von Dentz, linux-kernel, Kevin Dewald
Load Connection Parameters only clears the disabled connection
parameters when it loads more than one entry, so that loading a single
entry can update the parameters of one device without dropping the
others. Loading no entries does not clear them either, though, which is
what bluetoothd does when it starts without stored connection
parameters.
Pair Device adds disabled connection parameters for the device it pairs
with, so these now survive bluetoothd restarts, and new connections to
the device keep using the parameters they were created with instead of
the defaults set since, e.g. the connection interval from main.conf.
Clear the disabled connection parameters unless a single entry is
loaded, as was done for any number of entries before.
Fixes: 0ece498c27d8 ("Bluetooth: MGMT: Make MGMT_OP_LOAD_CONN_PARAM update existing connection")
Assisted-by: Claude:claude-opus-5.5
Signed-off-by: Kevin Dewald <kevin@simpleble.org>
---
Found with the BlueZ functional tests, which run one after another on
the same VMs: after test_bearer_le_pair, the next LE connection between
the two hosts kept the parameters the pairing had added.
Reproduced in test-runner: host0 pairs with host1, then bluetoothd is
restarted on host0 with MinConnectionInterval and MaxConnectionInterval
of 80 (100 ms) in main.conf and connects to host1 again. Without this
patch LE Extended Create Connection asks for 30 to 50 ms (3 of 3 runs),
with it for 100 ms (3 of 3). Without the earlier pairing it asks for
100 ms either way. The kernel testers pass as before. Only tested with
the emulator.
net/bluetooth/mgmt.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 3cb4f9ece8..cf5256f4a8 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -8175,7 +8175,11 @@ static int load_conn_param(struct sock *sk, struct hci_dev *hdev, void *data,
hci_dev_lock(hdev);
- if (param_count > 1)
+ /* A single entry may be an update for one device, so keep the other
+ * disabled parameters then, but clear them otherwise, including when
+ * no entries are loaded.
+ */
+ if (param_count != 1)
hci_conn_params_clear_disabled(hdev);
for (i = 0; i < param_count; i++) {
base-commit: 1081a6ef8f1e0661fd52eb3f878691b0b96cdff9
--
2.53.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-29 20:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-29 20:28 [PATCH] Bluetooth: MGMT: Clear disabled connection parameters when loading none Kevin Dewald
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®