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: Alain Michaud <alainm@chromium.org> Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
7e90de4ac1
commit
10873f99ce
|
@ -295,6 +295,14 @@ struct hci_dev {
|
|||
__u8 le_scan_type;
|
||||
__u16 le_scan_interval;
|
||||
__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_max_interval;
|
||||
__u16 le_conn_latency;
|
||||
|
@ -323,6 +331,16 @@ struct hci_dev {
|
|||
__u16 devid_product;
|
||||
__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 esco_type;
|
||||
__u16 link_policy;
|
||||
|
|
|
@ -789,11 +789,8 @@ static void set_ext_conn_params(struct hci_conn *conn,
|
|||
|
||||
memset(p, 0, sizeof(*p));
|
||||
|
||||
/* Set window to be the same value as the interval to
|
||||
* enable continuous scanning.
|
||||
*/
|
||||
p->scan_interval = cpu_to_le16(hdev->le_scan_interval);
|
||||
p->scan_window = p->scan_interval;
|
||||
p->scan_interval = cpu_to_le16(hdev->le_scan_int_connect);
|
||||
p->scan_window = cpu_to_le16(hdev->le_scan_window_connect);
|
||||
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_latency = cpu_to_le16(conn->le_conn_latency);
|
||||
|
@ -875,11 +872,8 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
|
|||
|
||||
memset(&cp, 0, sizeof(cp));
|
||||
|
||||
/* Set window to be the same value as the interval to enable
|
||||
* continuous scanning.
|
||||
*/
|
||||
cp.scan_interval = cpu_to_le16(hdev->le_scan_interval);
|
||||
cp.scan_window = cp.scan_interval;
|
||||
cp.scan_interval = cpu_to_le16(hdev->le_scan_int_connect);
|
||||
cp.scan_window = cpu_to_le16(hdev->le_scan_window_connect);
|
||||
|
||||
bacpy(&cp.peer_addr, &conn->dst);
|
||||
cp.peer_addr_type = conn->dst_type;
|
||||
|
|
|
@ -2982,7 +2982,7 @@ int hci_add_adv_instance(struct hci_dev *hdev, u8 instance, u32 flags,
|
|||
adv_instance->remaining_time = timeout;
|
||||
|
||||
if (duration == 0)
|
||||
adv_instance->duration = HCI_DEFAULT_ADV_DURATION;
|
||||
adv_instance->duration = hdev->def_multi_adv_rotation_duration;
|
||||
else
|
||||
adv_instance->duration = duration;
|
||||
|
||||
|
@ -3400,6 +3400,12 @@ struct hci_dev *hci_alloc_dev(void)
|
|||
hdev->le_adv_max_interval = 0x0800;
|
||||
hdev->le_scan_interval = 0x0060;
|
||||
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_max_interval = 0x0028;
|
||||
hdev->le_conn_latency = 0x0000;
|
||||
|
@ -3415,6 +3421,7 @@ struct hci_dev *hci_alloc_dev(void)
|
|||
hdev->le_tx_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->def_multi_adv_rotation_duration = HCI_DEFAULT_ADV_DURATION;
|
||||
|
||||
hdev->rpa_timeout = HCI_DEFAULT_RPA_TIMEOUT;
|
||||
hdev->discov_interleaved_timeout = DISCOV_INTERLEAVED_TIMEOUT;
|
||||
|
@ -3423,6 +3430,11 @@ struct hci_dev *hci_alloc_dev(void)
|
|||
hdev->auth_payload_timeout = DEFAULT_AUTH_PAYLOAD_TIMEOUT;
|
||||
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->req_lock);
|
||||
|
||||
|
|
|
@ -34,9 +34,6 @@
|
|||
#define HCI_REQ_PEND 1
|
||||
#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)
|
||||
{
|
||||
skb_queue_head_init(&req->cmd_q);
|
||||
|
@ -366,13 +363,11 @@ void __hci_req_write_fast_connectable(struct hci_request *req, bool enable)
|
|||
/* 160 msec page scan interval */
|
||||
acp.interval = cpu_to_le16(0x0100);
|
||||
} else {
|
||||
type = PAGE_SCAN_TYPE_STANDARD; /* default */
|
||||
|
||||
/* default 1.28 sec page scan */
|
||||
acp.interval = cpu_to_le16(0x0800);
|
||||
type = hdev->def_page_scan_type;
|
||||
acp.interval = cpu_to_le16(hdev->def_page_scan_int);
|
||||
}
|
||||
|
||||
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 ||
|
||||
__cpu_to_le16(hdev->page_scan_window) != acp.window)
|
||||
|
@ -927,8 +922,8 @@ void hci_req_add_le_passive_scan(struct hci_request *req)
|
|||
filter_policy |= 0x02;
|
||||
|
||||
if (hdev->suspended) {
|
||||
window = LE_SUSPEND_SCAN_WINDOW;
|
||||
interval = LE_SUSPEND_SCAN_INTERVAL;
|
||||
window = hdev->le_scan_window_suspend;
|
||||
interval = hdev->le_scan_int_suspend;
|
||||
} else {
|
||||
window = hdev->le_scan_window;
|
||||
interval = hdev->le_scan_interval;
|
||||
|
|
Loading…
Reference in New Issue