OSDN Git Service

Bluetooth: mgmt: Add commands for runtime configuration
authorMarcel Holtmann <marcel@holtmann.org>
Wed, 17 Jun 2020 14:39:07 +0000 (16:39 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 18 Jun 2020 10:11:03 +0000 (13:11 +0300)
This adds the required read/set commands for runtime configuration. Even
while currently no parameters are specified, the commands are made
available.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Reviewed-by: Alain Michaud <alainm@chromium.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/mgmt.c
net/bluetooth/mgmt_config.c
net/bluetooth/mgmt_config.h

index 99fbfd4..ecfdfc4 100644 (file)
@@ -114,6 +114,8 @@ static const u16 mgmt_commands[] = {
        MGMT_OP_SET_EXP_FEATURE,
        MGMT_OP_READ_DEF_SYSTEM_CONFIG,
        MGMT_OP_SET_DEF_SYSTEM_CONFIG,
+       MGMT_OP_READ_DEF_RUNTIME_CONFIG,
+       MGMT_OP_SET_DEF_RUNTIME_CONFIG,
 };
 
 static const u16 mgmt_events[] = {
@@ -166,6 +168,7 @@ static const u16 mgmt_untrusted_commands[] = {
        MGMT_OP_READ_SECURITY_INFO,
        MGMT_OP_READ_EXP_FEATURES_INFO,
        MGMT_OP_READ_DEF_SYSTEM_CONFIG,
+       MGMT_OP_READ_DEF_RUNTIME_CONFIG,
 };
 
 static const u16 mgmt_untrusted_events[] = {
@@ -7305,6 +7308,10 @@ static const struct hci_mgmt_handler mgmt_handlers[] = {
                                                HCI_MGMT_UNTRUSTED },
        { set_def_system_config,   MGMT_SET_DEF_SYSTEM_CONFIG_SIZE,
                                                HCI_MGMT_VAR_LEN },
+       { read_def_runtime_config, MGMT_READ_DEF_RUNTIME_CONFIG_SIZE,
+                                               HCI_MGMT_UNTRUSTED },
+       { set_def_runtime_config,  MGMT_SET_DEF_RUNTIME_CONFIG_SIZE,
+                                               HCI_MGMT_VAR_LEN },
 };
 
 void mgmt_index_added(struct hci_dev *hdev)
index f6dfbe9..8e7ad2a 100644 (file)
@@ -251,3 +251,21 @@ int set_def_system_config(struct sock *sk, struct hci_dev *hdev, void *data,
                               MGMT_OP_SET_DEF_SYSTEM_CONFIG,
                               MGMT_STATUS_SUCCESS);
 }
+
+int read_def_runtime_config(struct sock *sk, struct hci_dev *hdev, void *data,
+                           u16 data_len)
+{
+       bt_dev_dbg(hdev, "sock %p", sk);
+
+       return mgmt_cmd_complete(sk, hdev->id,
+                                MGMT_OP_READ_DEF_RUNTIME_CONFIG, 0, NULL, 0);
+}
+
+int set_def_runtime_config(struct sock *sk, struct hci_dev *hdev, void *data,
+                          u16 data_len)
+{
+       bt_dev_dbg(hdev, "sock %p", sk);
+
+       return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_DEF_SYSTEM_CONFIG,
+                              MGMT_STATUS_INVALID_PARAMS);
+}
index 51da6e6..a4965f1 100644 (file)
@@ -9,3 +9,9 @@ int read_def_system_config(struct sock *sk, struct hci_dev *hdev, void *data,
 
 int set_def_system_config(struct sock *sk, struct hci_dev *hdev, void *data,
                          u16 data_len);
+
+int read_def_runtime_config(struct sock *sk, struct hci_dev *hdev, void *data,
+                           u16 data_len);
+
+int set_def_runtime_config(struct sock *sk, struct hci_dev *hdev, void *data,
+                          u16 data_len);