diff options
| author | Olof Johansson <olof@lixom.net> | 2012-09-05 15:35:48 -0700 | 
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-09-05 15:35:48 -0700 | 
| commit | 1875962377574b4edb7b164001e3e341c25290d5 (patch) | |
| tree | 374a5299403ec21e2d9a66a6548ce876a388b589 /net/bluetooth/hci_event.c | |
| parent | 5cbee140a28c2746449ae31e85738043ae4da927 (diff) | |
| parent | c88a79a7789b2909ad1cf69ea2c9142030bbd6f4 (diff) | |
| download | olio-linux-3.10-1875962377574b4edb7b164001e3e341c25290d5.tar.xz olio-linux-3.10-1875962377574b4edb7b164001e3e341c25290d5.zip  | |
Merge branch 'soc-core' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/dt
* 'soc-core' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
  ARM: mach-shmobile: Add compilation support for dtbs using 'make dtbs'
  + sync to 3.6-rc3
Diffstat (limited to 'net/bluetooth/hci_event.c')
| -rw-r--r-- | net/bluetooth/hci_event.c | 28 | 
1 files changed, 22 insertions, 6 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 41ff978a33f..715d7e33fba 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -1365,6 +1365,9 @@ static bool hci_resolve_next_name(struct hci_dev *hdev)  		return false;  	e = hci_inquiry_cache_lookup_resolve(hdev, BDADDR_ANY, NAME_NEEDED); +	if (!e) +		return false; +  	if (hci_resolve_name(hdev, e) == 0) {  		e->name_state = NAME_PENDING;  		return true; @@ -1393,12 +1396,20 @@ static void hci_check_pending_name(struct hci_dev *hdev, struct hci_conn *conn,  		return;  	e = hci_inquiry_cache_lookup_resolve(hdev, bdaddr, NAME_PENDING); -	if (e) { +	/* If the device was not found in a list of found devices names of which +	 * are pending. there is no need to continue resolving a next name as it +	 * will be done upon receiving another Remote Name Request Complete +	 * Event */ +	if (!e) +		return; + +	list_del(&e->list); +	if (name) {  		e->name_state = NAME_KNOWN; -		list_del(&e->list); -		if (name) -			mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00, -					 e->data.rssi, name, name_len); +		mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00, +				 e->data.rssi, name, name_len); +	} else { +		e->name_state = NAME_NOT_KNOWN;  	}  	if (hci_resolve_next_name(hdev)) @@ -1762,7 +1773,12 @@ static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)  		if (conn->type == ACL_LINK) {  			conn->state = BT_CONFIG;  			hci_conn_hold(conn); -			conn->disc_timeout = HCI_DISCONN_TIMEOUT; + +			if (!conn->out && !hci_conn_ssp_enabled(conn) && +			    !hci_find_link_key(hdev, &ev->bdaddr)) +				conn->disc_timeout = HCI_PAIRING_TIMEOUT; +			else +				conn->disc_timeout = HCI_DISCONN_TIMEOUT;  		} else  			conn->state = BT_CONNECTED;  |