From: Gustavo Padovan Date: Tue, 12 Jun 2012 01:36:42 +0000 (-0300) Subject: Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetoot... X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=cbe461c526e1e0f8b55f91180df64f02d8daed45;p=openwrt%2Fstaging%2Fblogic.git Merge branch 'for-upstream' of git://git./linux/kernel/git/bluetooth/bluetooth Conflicts: net/bluetooth/hci_event.c --- cbe461c526e1e0f8b55f91180df64f02d8daed45 diff --cc net/bluetooth/hci_event.c index 47656beee14c,94ad124a4ea3..1ba929c05d0d --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@@ -3040,7 -3043,51 +3040,51 @@@ static void hci_extended_inquiry_result hci_dev_unlock(hdev); } + static void hci_key_refresh_complete_evt(struct hci_dev *hdev, + struct sk_buff *skb) + { + struct hci_ev_key_refresh_complete *ev = (void *) skb->data; + struct hci_conn *conn; + + BT_DBG("%s status %u handle %u", hdev->name, ev->status, + __le16_to_cpu(ev->handle)); + + hci_dev_lock(hdev); + + conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle)); + if (!conn) + goto unlock; + + if (!ev->status) + conn->sec_level = conn->pending_sec_level; + + clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags); + + if (ev->status && conn->state == BT_CONNECTED) { + hci_acl_disconn(conn, HCI_ERROR_AUTH_FAILURE); + hci_conn_put(conn); + goto unlock; + } + + if (conn->state == BT_CONFIG) { + if (!ev->status) + conn->state = BT_CONNECTED; + + hci_proto_connect_cfm(conn, ev->status); + hci_conn_put(conn); + } else { + hci_auth_cfm(conn, ev->status); + + hci_conn_hold(conn); + conn->disc_timeout = HCI_DISCONN_TIMEOUT; + hci_conn_put(conn); + } + + unlock: + hci_dev_unlock(hdev); + } + -static inline u8 hci_get_auth_req(struct hci_conn *conn) +static u8 hci_get_auth_req(struct hci_conn *conn) { /* If remote requests dedicated bonding follow that lead */ if (conn->remote_auth == 0x02 || conn->remote_auth == 0x03) {