Bluetooth: Fix handling of experimental feature for quality reports
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 28 Sep 2021 10:10:14 +0000 (12:10 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 28 Sep 2021 21:39:40 +0000 (14:39 -0700)
The existence of the experimental feature identifiy is the indication
that it is supported or not. No extra flag needed and the initial flag
should define if a feature is enabled or not. This is actually defined
in the management API definition.

Fixes: ae7d925b5c043 ("Bluetooth: Support the quality report events")
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/mgmt.c

index a6aeefd..84336be 100644 (file)
@@ -3863,19 +3863,12 @@ static int read_exp_features_info(struct sock *sk, struct hci_dev *hdev,
                idx++;
        }
 
-       if (hdev) {
-               if (hdev->set_quality_report) {
-                       /* BIT(0): indicating if set_quality_report is
-                        * supported by controller.
-                        */
+       if (hdev && hdev->set_quality_report) {
+               if (hci_dev_test_flag(hdev, HCI_QUALITY_REPORT))
                        flags = BIT(0);
-
-                       /* BIT(1): indicating if the feature is enabled. */
-                       if (hci_dev_test_flag(hdev, HCI_QUALITY_REPORT))
-                               flags |= BIT(1);
-               } else {
+               else
                        flags = 0;
-               }
+
                memcpy(rp->features[idx].uuid, quality_report_uuid, 16);
                rp->features[idx].flags = cpu_to_le32(flags);
                idx++;