提交 6decb5b4 编写于 作者: J Jaganath Kanakkassery 提交者: 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: NJaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册