Commit bef64738 authored by Marcel Holtmann's avatar Marcel Holtmann Committed by Johan Hedberg

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: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 3932eb33
...@@ -164,6 +164,8 @@ struct hci_dev { ...@@ -164,6 +164,8 @@ struct hci_dev {
__u16 page_scan_interval; __u16 page_scan_interval;
__u16 page_scan_window; __u16 page_scan_window;
__u8 page_scan_type; __u8 page_scan_type;
__u16 le_scan_interval;
__u16 le_scan_window;
__u16 devid_source; __u16 devid_source;
__u16 devid_vendor; __u16 devid_vendor;
......
...@@ -562,8 +562,8 @@ static int hci_create_le_conn(struct hci_conn *conn) ...@@ -562,8 +562,8 @@ static int hci_create_le_conn(struct hci_conn *conn)
hci_req_init(&req, hdev); hci_req_init(&req, hdev);
memset(&cp, 0, sizeof(cp)); memset(&cp, 0, sizeof(cp));
cp.scan_interval = __constant_cpu_to_le16(0x0060); cp.scan_interval = cpu_to_le16(hdev->le_scan_interval);
cp.scan_window = __constant_cpu_to_le16(0x0030); cp.scan_window = cpu_to_le16(hdev->le_scan_window);
bacpy(&cp.peer_addr, &conn->dst); bacpy(&cp.peer_addr, &conn->dst);
cp.peer_addr_type = conn->dst_type; cp.peer_addr_type = conn->dst_type;
if (bacmp(&hdev->bdaddr, BDADDR_ANY)) if (bacmp(&hdev->bdaddr, BDADDR_ANY))
......
...@@ -2273,6 +2273,9 @@ struct hci_dev *hci_alloc_dev(void) ...@@ -2273,6 +2273,9 @@ struct hci_dev *hci_alloc_dev(void)
hdev->sniff_max_interval = 800; hdev->sniff_max_interval = 800;
hdev->sniff_min_interval = 80; hdev->sniff_min_interval = 80;
hdev->le_scan_interval = 0x0060;
hdev->le_scan_window = 0x0030;
mutex_init(&hdev->lock); mutex_init(&hdev->lock);
mutex_init(&hdev->req_lock); mutex_init(&hdev->req_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment