diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2017-05-01 21:43:24 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2017-05-18 13:52:49 +0200 |
commit | 122048752e3d35fb5d91a94e671f42cf31ece16e (patch) | |
tree | adb4748b7f7cdc503e5f211b38006e6fa07a5e0c | |
parent | 86a6129ae209156baef04f668a4fd13f2c9590a4 (diff) | |
download | linux-stable-122048752e3d35fb5d91a94e671f42cf31ece16e.tar.gz linux-stable-122048752e3d35fb5d91a94e671f42cf31ece16e.tar.bz2 linux-stable-122048752e3d35fb5d91a94e671f42cf31ece16e.zip |
Bluetooth: Set LE Suggested Default Data Length to maximum
When LE Data Packet Length Extension is supported, then actually
increase the suggested default data length to the maximum to enable
higher througput.
< HCI Command: LE Read Maximum Data Length (0x08|0x002f) plen 0
> HCI Event: Command Complete (0x0e) plen 12
LE Read Maximum Data Length (0x08|0x002f) ncmd 1
Status: Success (0x00)
Max TX octets: 251
Max TX time: 2120
Max RX octets: 251
Max RX time: 2120
< HCI Command: LE Read Suggested Default Data Length (0x08|0x0023) plen 0
> HCI Event: Command Complete (0x0e) plen 8
LE Read Suggested Default Data Length (0x08|0x0023) ncmd 1
Status: Success (0x00)
TX octets: 27
TX time: 328
< HCI Command: LE Write Suggested Default Data Length (0x08|0x0024) plen 4
TX octets: 251
TX time: 2120
> HCI Event: Command Complete (0x0e) plen 4
LE Write Suggested Default Data Length (0x08|0x0024) ncmd 1
Status: Success (0x00)
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
-rw-r--r-- | net/bluetooth/hci_core.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 05686776a5fb..4a0cac774107 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -771,6 +771,15 @@ static int hci_init4_req(struct hci_request *req, unsigned long opt) sizeof(support), &support); } + /* Set Suggested Default Data Length to maximum if supported */ + if (hdev->le_features[0] & HCI_LE_DATA_LEN_EXT) { + struct hci_cp_le_write_def_data_len cp; + + cp.tx_len = hdev->le_max_tx_len; + cp.tx_time = hdev->le_max_tx_time; + hci_req_add(req, HCI_OP_LE_WRITE_DEF_DATA_LEN, sizeof(cp), &cp); + } + return 0; } |