Browse Source

Bluetooth: Track discovery type

This patch adds to struct discovery_state the field 'type' so that
we can track the discovery type the device is performing.

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>
Andre Guedes 13 năm trước cách đây
mục cha
commit
4aab14e550

+ 1 - 0
include/net/bluetooth/hci_core.h

@@ -57,6 +57,7 @@ struct inquiry_entry {
 };
 };
 
 
 struct discovery_state {
 struct discovery_state {
+	int type;
 	enum {
 	enum {
 		DISCOVERY_STOPPED,
 		DISCOVERY_STOPPED,
 		DISCOVERY_STARTING,
 		DISCOVERY_STARTING,

+ 2 - 0
net/bluetooth/hci_core.c

@@ -380,6 +380,8 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state)
 
 
 	switch (state) {
 	switch (state) {
 	case DISCOVERY_STOPPED:
 	case DISCOVERY_STOPPED:
+		hdev->discovery.type = 0;
+
 		if (hdev->discovery.state != DISCOVERY_STARTING)
 		if (hdev->discovery.state != DISCOVERY_STARTING)
 			mgmt_discovering(hdev, 0);
 			mgmt_discovering(hdev, 0);
 		break;
 		break;

+ 3 - 1
net/bluetooth/mgmt.c

@@ -2192,7 +2192,9 @@ static int start_discovery(struct sock *sk, u16 index,
 		goto failed;
 		goto failed;
 	}
 	}
 
 
-	switch (cp->type) {
+	hdev->discovery.type = cp->type;
+
+	switch (hdev->discovery.type) {
 	case DISCOV_TYPE_BREDR:
 	case DISCOV_TYPE_BREDR:
 	case DISCOV_TYPE_INTERLEAVED:
 	case DISCOV_TYPE_INTERLEAVED:
 		err = hci_do_inquiry(hdev, INQUIRY_LEN_BREDR);
 		err = hci_do_inquiry(hdev, INQUIRY_LEN_BREDR);