From: Marcel Holtmann <marcel@holtmann.org>
Date: Tue, 28 Sep 2021 12:10:14 +0200
Subject: Bluetooth: Fix handling of experimental feature for quality reports
Patch-mainline: v5.16-rc1
Git-commit: 823f3bc4e2eca7170c2367c050c5361cb1cd7c25
References: jsc#PED-1407
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>
Acked-by: Lee, Chun-Yi <jlee@suse.com>
---
net/bluetooth/mgmt.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -3863,19 +3863,12 @@ static int read_exp_features_info(struct
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++;