Bluetooth: Pass inquiry length to bredr_inquiry()

Passing the needed inquiry length to bredr_inquiry() makes it possible
to also use this helper for interleaved discovery where the controller
doesn't support simultaneous Inquiry & LE scan.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Johan Hedberg 2015-11-11 12:24:21 +02:00 committed by Marcel Holtmann
parent 2f27498107
commit 7df26b5629
1 changed files with 5 additions and 3 deletions

View File

@ -1044,6 +1044,7 @@ static void le_scan_restart_work(struct work_struct *work)
static int bredr_inquiry(struct hci_request *req, unsigned long opt) static int bredr_inquiry(struct hci_request *req, unsigned long opt)
{ {
u8 length = opt;
struct hci_cp_inquiry cp; struct hci_cp_inquiry cp;
/* General inquiry access code (GIAC) */ /* General inquiry access code (GIAC) */
u8 lap[3] = { 0x33, 0x8b, 0x9e }; u8 lap[3] = { 0x33, 0x8b, 0x9e };
@ -1056,7 +1057,7 @@ static int bredr_inquiry(struct hci_request *req, unsigned long opt)
memset(&cp, 0, sizeof(cp)); memset(&cp, 0, sizeof(cp));
memcpy(&cp.lap, lap, sizeof(cp.lap)); memcpy(&cp.lap, lap, sizeof(cp.lap));
cp.length = DISCOV_BREDR_INQUIRY_LEN; cp.length = length;
hci_req_add(req, HCI_OP_INQUIRY, sizeof(cp), &cp); hci_req_add(req, HCI_OP_INQUIRY, sizeof(cp), &cp);
@ -1150,7 +1151,7 @@ static int interleaved_discov(struct hci_request *req, unsigned long opt)
if (err) if (err)
return err; return err;
return bredr_inquiry(req, opt); return bredr_inquiry(req, DISCOV_BREDR_INQUIRY_LEN);
} }
static void start_discovery(struct hci_dev *hdev, u8 *status) static void start_discovery(struct hci_dev *hdev, u8 *status)
@ -1162,7 +1163,8 @@ static void start_discovery(struct hci_dev *hdev, u8 *status)
switch (hdev->discovery.type) { switch (hdev->discovery.type) {
case DISCOV_TYPE_BREDR: case DISCOV_TYPE_BREDR:
if (!hci_dev_test_flag(hdev, HCI_INQUIRY)) if (!hci_dev_test_flag(hdev, HCI_INQUIRY))
hci_req_sync(hdev, bredr_inquiry, 0, HCI_CMD_TIMEOUT, hci_req_sync(hdev, bredr_inquiry,
DISCOV_BREDR_INQUIRY_LEN, HCI_CMD_TIMEOUT,
status); status);
return; return;
case DISCOV_TYPE_INTERLEAVED: case DISCOV_TYPE_INTERLEAVED: