Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 426c189a authored by Andre Guedes's avatar Andre Guedes Committed by Johan Hedberg
Browse files

Bluetooth: Change interleaved discovery behavior



According to last discussion on IRC, if an interleaved discovery is
issued, but the device is not dual mode, we should return error
instead of performing a regular BR/EDR or LE-only discovery.

Signed-off-by: default avatarAndre Guedes <andre.guedes@openbossa.org>
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 978c93b9
Loading
Loading
Loading
Loading
+5 −24
Original line number Diff line number Diff line
@@ -2540,29 +2540,6 @@ static int remove_remote_oob_data(struct sock *sk, u16 index,
	return err;
}

static int discovery(struct hci_dev *hdev)
{
	int err;

	if (lmp_host_le_capable(hdev)) {
		if (lmp_bredr_capable(hdev)) {
			err = hci_le_scan(hdev, LE_SCAN_TYPE,
						LE_SCAN_INT, LE_SCAN_WIN,
						LE_SCAN_TIMEOUT_BREDR_LE);
		} else {
			hdev->discovery.type = DISCOV_TYPE_LE;
			err = hci_le_scan(hdev, LE_SCAN_TYPE,
						LE_SCAN_INT, LE_SCAN_WIN,
						LE_SCAN_TIMEOUT_LE_ONLY);
		}
	} else {
		hdev->discovery.type = DISCOV_TYPE_BREDR;
		err = hci_do_inquiry(hdev, INQUIRY_LEN_BREDR);
	}

	return err;
}

int mgmt_interleaved_discovery(struct hci_dev *hdev)
{
	int err;
@@ -2632,7 +2609,11 @@ static int start_discovery(struct sock *sk, u16 index,
		break;

	case DISCOV_TYPE_INTERLEAVED:
		err = discovery(hdev);
		if (lmp_host_le_capable(hdev) && lmp_bredr_capable(hdev))
			err = hci_le_scan(hdev, LE_SCAN_TYPE, LE_SCAN_INT,
					LE_SCAN_WIN, LE_SCAN_TIMEOUT_BREDR_LE);
		else
			err = -ENOTSUPP;
		break;

	default: