Commit 6decb5b4 authored by Jaganath Kanakkassery's avatar Jaganath Kanakkassery Committed by Marcel Holtmann

Bluetooth: Define PHY flags in hdev and set 1M as default

1M is mandatory to be supported by LE controllers and the same
would be set in power on. This patch defines hdev flags for
LE PHYs and set 1M to default.
Signed-off-by: default avatarJaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 25a13e38
...@@ -1514,6 +1514,10 @@ struct hci_cp_le_set_default_phy { ...@@ -1514,6 +1514,10 @@ struct hci_cp_le_set_default_phy {
__u8 rx_phys; __u8 rx_phys;
} __packed; } __packed;
#define HCI_LE_SET_PHY_1M 0x01
#define HCI_LE_SET_PHY_2M 0x02
#define HCI_LE_SET_PHY_CODED 0x04
#define HCI_OP_LE_SET_EXT_SCAN_PARAMS 0x2041 #define HCI_OP_LE_SET_EXT_SCAN_PARAMS 0x2041
struct hci_cp_le_set_ext_scan_params { struct hci_cp_le_set_ext_scan_params {
__u8 own_addr_type; __u8 own_addr_type;
......
...@@ -315,6 +315,9 @@ struct hci_dev { ...@@ -315,6 +315,9 @@ struct hci_dev {
unsigned long sco_last_tx; unsigned long sco_last_tx;
unsigned long le_last_tx; unsigned long le_last_tx;
__u8 le_tx_def_phys;
__u8 le_rx_def_phys;
struct workqueue_struct *workqueue; struct workqueue_struct *workqueue;
struct workqueue_struct *req_workqueue; struct workqueue_struct *req_workqueue;
......
...@@ -830,10 +830,9 @@ static int hci_init4_req(struct hci_request *req, unsigned long opt) ...@@ -830,10 +830,9 @@ static int hci_init4_req(struct hci_request *req, unsigned long opt)
if (hdev->commands[35] & 0x20) { if (hdev->commands[35] & 0x20) {
struct hci_cp_le_set_default_phy cp; struct hci_cp_le_set_default_phy cp;
/* No transmitter PHY or receiver PHY preferences */ cp.all_phys = 0x00;
cp.all_phys = 0x03; cp.tx_phys = hdev->le_tx_def_phys;
cp.tx_phys = 0; cp.rx_phys = hdev->le_rx_def_phys;
cp.rx_phys = 0;
hci_req_add(req, HCI_OP_LE_SET_DEFAULT_PHY, sizeof(cp), &cp); hci_req_add(req, HCI_OP_LE_SET_DEFAULT_PHY, sizeof(cp), &cp);
} }
...@@ -3027,6 +3026,8 @@ struct hci_dev *hci_alloc_dev(void) ...@@ -3027,6 +3026,8 @@ struct hci_dev *hci_alloc_dev(void)
hdev->le_max_tx_time = 0x0148; hdev->le_max_tx_time = 0x0148;
hdev->le_max_rx_len = 0x001b; hdev->le_max_rx_len = 0x001b;
hdev->le_max_rx_time = 0x0148; hdev->le_max_rx_time = 0x0148;
hdev->le_tx_def_phys = HCI_LE_SET_PHY_1M;
hdev->le_rx_def_phys = HCI_LE_SET_PHY_1M;
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;
......
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