Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Bluetooth: Make LE scan interval and window a controller option

The scan interval and window for LE passive scanning and connection
establishment should be configurable on a per controller basis. So
introduce a setting that later on will allow modifying it.

This setting does not affect LE active scanning during device
discovery phase. As long as that phase uses interleaved discovery,
it will continuously scan.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>

authored by

Marcel Holtmann and committed by
Johan Hedberg
bef64738 3932eb33

+7 -2
+2
include/net/bluetooth/hci_core.h
··· 164 164 __u16 page_scan_interval; 165 165 __u16 page_scan_window; 166 166 __u8 page_scan_type; 167 + __u16 le_scan_interval; 168 + __u16 le_scan_window; 167 169 168 170 __u16 devid_source; 169 171 __u16 devid_vendor;
+2 -2
net/bluetooth/hci_conn.c
··· 562 562 hci_req_init(&req, hdev); 563 563 564 564 memset(&cp, 0, sizeof(cp)); 565 - cp.scan_interval = __constant_cpu_to_le16(0x0060); 566 - cp.scan_window = __constant_cpu_to_le16(0x0030); 565 + cp.scan_interval = cpu_to_le16(hdev->le_scan_interval); 566 + cp.scan_window = cpu_to_le16(hdev->le_scan_window); 567 567 bacpy(&cp.peer_addr, &conn->dst); 568 568 cp.peer_addr_type = conn->dst_type; 569 569 if (bacmp(&hdev->bdaddr, BDADDR_ANY))
+3
net/bluetooth/hci_core.c
··· 2273 2273 hdev->sniff_max_interval = 800; 2274 2274 hdev->sniff_min_interval = 80; 2275 2275 2276 + hdev->le_scan_interval = 0x0060; 2277 + hdev->le_scan_window = 0x0030; 2278 + 2276 2279 mutex_init(&hdev->lock); 2277 2280 mutex_init(&hdev->req_lock); 2278 2281