MGMT_OP_SET_APPEARANCE,
        MGMT_OP_SET_BLOCKED_KEYS,
        MGMT_OP_SET_WIDEBAND_SPEECH,
-       MGMT_OP_READ_SECURITY_INFO,
+       MGMT_OP_READ_CONTROLLER_CAP,
        MGMT_OP_READ_EXP_FEATURES_INFO,
        MGMT_OP_SET_EXP_FEATURE,
        MGMT_OP_READ_DEF_SYSTEM_CONFIG,
        MGMT_OP_READ_CONFIG_INFO,
        MGMT_OP_READ_EXT_INDEX_LIST,
        MGMT_OP_READ_EXT_INFO,
-       MGMT_OP_READ_SECURITY_INFO,
+       MGMT_OP_READ_CONTROLLER_CAP,
        MGMT_OP_READ_EXP_FEATURES_INFO,
        MGMT_OP_READ_DEF_SYSTEM_CONFIG,
        MGMT_OP_READ_DEF_RUNTIME_CONFIG,
        return err;
 }
 
-static int read_security_info(struct sock *sk, struct hci_dev *hdev,
-                             void *data, u16 data_len)
+static int read_controller_cap(struct sock *sk, struct hci_dev *hdev,
+                              void *data, u16 data_len)
 {
-       char buf[16];
-       struct mgmt_rp_read_security_info *rp = (void *)buf;
-       u16 sec_len = 0;
+       char buf[20];
+       struct mgmt_rp_read_controller_cap *rp = (void *)buf;
+       u16 cap_len = 0;
        u8 flags = 0;
+       u8 tx_power_range[2];
 
        bt_dev_dbg(hdev, "sock %p", sk);
 
 
        flags |= 0x08;          /* Encryption key size enforcement (LE) */
 
-       sec_len = eir_append_data(rp->sec, sec_len, 0x01, &flags, 1);
+       cap_len = eir_append_data(rp->cap, cap_len, MGMT_CAP_SEC_FLAGS,
+                                 &flags, 1);
 
        /* When the Read Simple Pairing Options command is supported, then
         * also max encryption key size information is provided.
         */
        if (hdev->commands[41] & 0x08)
-               sec_len = eir_append_le16(rp->sec, sec_len, 0x02,
+               cap_len = eir_append_le16(rp->cap, cap_len,
+                                         MGMT_CAP_MAX_ENC_KEY_SIZE,
                                          hdev->max_enc_key_size);
 
-       sec_len = eir_append_le16(rp->sec, sec_len, 0x03, SMP_MAX_ENC_KEY_SIZE);
+       cap_len = eir_append_le16(rp->cap, cap_len,
+                                 MGMT_CAP_SMP_MAX_ENC_KEY_SIZE,
+                                 SMP_MAX_ENC_KEY_SIZE);
+
+       /* Append the min/max LE tx power parameters if we were able to fetch
+        * it from the controller
+        */
+       if (hdev->commands[38] & 0x80) {
+               memcpy(&tx_power_range[0], &hdev->min_le_tx_power, 1);
+               memcpy(&tx_power_range[1], &hdev->max_le_tx_power, 1);
+               cap_len = eir_append_data(rp->cap, cap_len, MGMT_CAP_LE_TX_PWR,
+                                         tx_power_range, 2);
+       }
 
-       rp->sec_len = cpu_to_le16(sec_len);
+       rp->cap_len = cpu_to_le16(cap_len);
 
        hci_dev_unlock(hdev);
 
-       return mgmt_cmd_complete(sk, hdev->id, MGMT_OP_READ_SECURITY_INFO, 0,
-                                rp, sizeof(*rp) + sec_len);
+       return mgmt_cmd_complete(sk, hdev->id, MGMT_OP_READ_CONTROLLER_CAP, 0,
+                                rp, sizeof(*rp) + cap_len);
 }
 
 #ifdef CONFIG_BT_FEATURE_DEBUG
        { set_blocked_keys,        MGMT_OP_SET_BLOCKED_KEYS_SIZE,
                                                HCI_MGMT_VAR_LEN },
        { set_wideband_speech,     MGMT_SETTING_SIZE },
-       { read_security_info,      MGMT_READ_SECURITY_INFO_SIZE,
+       { read_controller_cap,     MGMT_READ_CONTROLLER_CAP_SIZE,
                                                HCI_MGMT_UNTRUSTED },
        { read_exp_features_info,  MGMT_READ_EXP_FEATURES_INFO_SIZE,
                                                HCI_MGMT_UNTRUSTED |