Commit 10873f99 authored by Alain Michaud's avatar Alain Michaud Committed by Marcel Holtmann

Bluetooth: centralize default value initialization.

This patch centralized the initialization of default parameters.  This
is required to allow clients to more easily customize the default
system parameters.
Signed-off-by: default avatarAlain Michaud <alainm@chromium.org>
Reviewed-by: default avatarAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 7e90de4a
...@@ -295,6 +295,14 @@ struct hci_dev { ...@@ -295,6 +295,14 @@ struct hci_dev {
__u8 le_scan_type; __u8 le_scan_type;
__u16 le_scan_interval; __u16 le_scan_interval;
__u16 le_scan_window; __u16 le_scan_window;
__u16 le_scan_int_suspend;
__u16 le_scan_window_suspend;
__u16 le_scan_int_discovery;
__u16 le_scan_window_discovery;
__u16 le_scan_int_adv_monitor;
__u16 le_scan_window_adv_monitor;
__u16 le_scan_int_connect;
__u16 le_scan_window_connect;
__u16 le_conn_min_interval; __u16 le_conn_min_interval;
__u16 le_conn_max_interval; __u16 le_conn_max_interval;
__u16 le_conn_latency; __u16 le_conn_latency;
...@@ -323,6 +331,16 @@ struct hci_dev { ...@@ -323,6 +331,16 @@ struct hci_dev {
__u16 devid_product; __u16 devid_product;
__u16 devid_version; __u16 devid_version;
__u8 def_page_scan_type;
__u16 def_page_scan_int;
__u16 def_page_scan_window;
__u8 def_inq_scan_type;
__u16 def_inq_scan_int;
__u16 def_inq_scan_window;
__u16 def_br_lsto;
__u16 def_page_timeout;
__u16 def_multi_adv_rotation_duration;
__u16 pkt_type; __u16 pkt_type;
__u16 esco_type; __u16 esco_type;
__u16 link_policy; __u16 link_policy;
......
...@@ -789,11 +789,8 @@ static void set_ext_conn_params(struct hci_conn *conn, ...@@ -789,11 +789,8 @@ static void set_ext_conn_params(struct hci_conn *conn,
memset(p, 0, sizeof(*p)); memset(p, 0, sizeof(*p));
/* Set window to be the same value as the interval to p->scan_interval = cpu_to_le16(hdev->le_scan_int_connect);
* enable continuous scanning. p->scan_window = cpu_to_le16(hdev->le_scan_window_connect);
*/
p->scan_interval = cpu_to_le16(hdev->le_scan_interval);
p->scan_window = p->scan_interval;
p->conn_interval_min = cpu_to_le16(conn->le_conn_min_interval); p->conn_interval_min = cpu_to_le16(conn->le_conn_min_interval);
p->conn_interval_max = cpu_to_le16(conn->le_conn_max_interval); p->conn_interval_max = cpu_to_le16(conn->le_conn_max_interval);
p->conn_latency = cpu_to_le16(conn->le_conn_latency); p->conn_latency = cpu_to_le16(conn->le_conn_latency);
...@@ -875,11 +872,8 @@ static void hci_req_add_le_create_conn(struct hci_request *req, ...@@ -875,11 +872,8 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
memset(&cp, 0, sizeof(cp)); memset(&cp, 0, sizeof(cp));
/* Set window to be the same value as the interval to enable cp.scan_interval = cpu_to_le16(hdev->le_scan_int_connect);
* continuous scanning. cp.scan_window = cpu_to_le16(hdev->le_scan_window_connect);
*/
cp.scan_interval = cpu_to_le16(hdev->le_scan_interval);
cp.scan_window = cp.scan_interval;
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;
......
...@@ -2982,7 +2982,7 @@ int hci_add_adv_instance(struct hci_dev *hdev, u8 instance, u32 flags, ...@@ -2982,7 +2982,7 @@ int hci_add_adv_instance(struct hci_dev *hdev, u8 instance, u32 flags,
adv_instance->remaining_time = timeout; adv_instance->remaining_time = timeout;
if (duration == 0) if (duration == 0)
adv_instance->duration = HCI_DEFAULT_ADV_DURATION; adv_instance->duration = hdev->def_multi_adv_rotation_duration;
else else
adv_instance->duration = duration; adv_instance->duration = duration;
...@@ -3400,6 +3400,12 @@ struct hci_dev *hci_alloc_dev(void) ...@@ -3400,6 +3400,12 @@ struct hci_dev *hci_alloc_dev(void)
hdev->le_adv_max_interval = 0x0800; hdev->le_adv_max_interval = 0x0800;
hdev->le_scan_interval = 0x0060; hdev->le_scan_interval = 0x0060;
hdev->le_scan_window = 0x0030; hdev->le_scan_window = 0x0030;
hdev->le_scan_int_suspend = 0x0400;
hdev->le_scan_window_suspend = 0x0012;
hdev->le_scan_int_discovery = DISCOV_LE_SCAN_INT;
hdev->le_scan_window_discovery = DISCOV_LE_SCAN_WIN;
hdev->le_scan_int_connect = 0x0060;
hdev->le_scan_window_connect = 0x0060;
hdev->le_conn_min_interval = 0x0018; hdev->le_conn_min_interval = 0x0018;
hdev->le_conn_max_interval = 0x0028; hdev->le_conn_max_interval = 0x0028;
hdev->le_conn_latency = 0x0000; hdev->le_conn_latency = 0x0000;
...@@ -3415,6 +3421,7 @@ struct hci_dev *hci_alloc_dev(void) ...@@ -3415,6 +3421,7 @@ struct hci_dev *hci_alloc_dev(void)
hdev->le_tx_def_phys = HCI_LE_SET_PHY_1M; hdev->le_tx_def_phys = HCI_LE_SET_PHY_1M;
hdev->le_rx_def_phys = HCI_LE_SET_PHY_1M; hdev->le_rx_def_phys = HCI_LE_SET_PHY_1M;
hdev->le_num_of_adv_sets = HCI_MAX_ADV_INSTANCES; hdev->le_num_of_adv_sets = HCI_MAX_ADV_INSTANCES;
hdev->def_multi_adv_rotation_duration = HCI_DEFAULT_ADV_DURATION;
hdev->rpa_timeout = HCI_DEFAULT_RPA_TIMEOUT; hdev->rpa_timeout = HCI_DEFAULT_RPA_TIMEOUT;
hdev->discov_interleaved_timeout = DISCOV_INTERLEAVED_TIMEOUT; hdev->discov_interleaved_timeout = DISCOV_INTERLEAVED_TIMEOUT;
...@@ -3423,6 +3430,11 @@ struct hci_dev *hci_alloc_dev(void) ...@@ -3423,6 +3430,11 @@ struct hci_dev *hci_alloc_dev(void)
hdev->auth_payload_timeout = DEFAULT_AUTH_PAYLOAD_TIMEOUT; hdev->auth_payload_timeout = DEFAULT_AUTH_PAYLOAD_TIMEOUT;
hdev->min_enc_key_size = HCI_MIN_ENC_KEY_SIZE; hdev->min_enc_key_size = HCI_MIN_ENC_KEY_SIZE;
/* default 1.28 sec page scan */
hdev->def_page_scan_type = PAGE_SCAN_TYPE_STANDARD;
hdev->def_page_scan_int = 0x0800;
hdev->def_page_scan_window = 0x0012;
mutex_init(&hdev->lock); mutex_init(&hdev->lock);
mutex_init(&hdev->req_lock); mutex_init(&hdev->req_lock);
......
...@@ -34,9 +34,6 @@ ...@@ -34,9 +34,6 @@
#define HCI_REQ_PEND 1 #define HCI_REQ_PEND 1
#define HCI_REQ_CANCELED 2 #define HCI_REQ_CANCELED 2
#define LE_SUSPEND_SCAN_WINDOW 0x0012
#define LE_SUSPEND_SCAN_INTERVAL 0x0400
void hci_req_init(struct hci_request *req, struct hci_dev *hdev) void hci_req_init(struct hci_request *req, struct hci_dev *hdev)
{ {
skb_queue_head_init(&req->cmd_q); skb_queue_head_init(&req->cmd_q);
...@@ -366,13 +363,11 @@ void __hci_req_write_fast_connectable(struct hci_request *req, bool enable) ...@@ -366,13 +363,11 @@ void __hci_req_write_fast_connectable(struct hci_request *req, bool enable)
/* 160 msec page scan interval */ /* 160 msec page scan interval */
acp.interval = cpu_to_le16(0x0100); acp.interval = cpu_to_le16(0x0100);
} else { } else {
type = PAGE_SCAN_TYPE_STANDARD; /* default */ type = hdev->def_page_scan_type;
acp.interval = cpu_to_le16(hdev->def_page_scan_int);
/* default 1.28 sec page scan */
acp.interval = cpu_to_le16(0x0800);
} }
acp.window = cpu_to_le16(0x0012); acp.window = cpu_to_le16(hdev->def_page_scan_window);
if (__cpu_to_le16(hdev->page_scan_interval) != acp.interval || if (__cpu_to_le16(hdev->page_scan_interval) != acp.interval ||
__cpu_to_le16(hdev->page_scan_window) != acp.window) __cpu_to_le16(hdev->page_scan_window) != acp.window)
...@@ -927,8 +922,8 @@ void hci_req_add_le_passive_scan(struct hci_request *req) ...@@ -927,8 +922,8 @@ void hci_req_add_le_passive_scan(struct hci_request *req)
filter_policy |= 0x02; filter_policy |= 0x02;
if (hdev->suspended) { if (hdev->suspended) {
window = LE_SUSPEND_SCAN_WINDOW; window = hdev->le_scan_window_suspend;
interval = LE_SUSPEND_SCAN_INTERVAL; interval = hdev->le_scan_int_suspend;
} else { } else {
window = hdev->le_scan_window; window = hdev->le_scan_window;
interval = hdev->le_scan_interval; interval = hdev->le_scan_interval;
......
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