Skip to content

Commit

Permalink
Bluetooth: Change interleaved discovery behavior
Browse files Browse the repository at this point in the history
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: Andre Guedes <andre.guedes@openbossa.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
  • Loading branch information
Andre Guedes authored and Johan Hedberg committed Feb 29, 2012
1 parent 978c93b commit 426c189
Showing 1 changed file with 5 additions and 24 deletions.
29 changes: 5 additions & 24 deletions net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 426c189

Please sign in to comment.