Bluetooth: Set LE Suggested Default Data Length to maximum
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 2 May 2017 04:43:24 +0000 (21:43 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 18 May 2017 11:52:49 +0000 (13:52 +0200)
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>
net/bluetooth/hci_core.c

index 05686776a5fb78d67dd38b22632ccfd1355b857e..4a0cac774107dd555c6866491cc8c87f728cb915 100644 (file)
@@ -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;
 }