diff options
author | Vinicius Costa Gomes <vinicius.gomes@openbossa.org> | 2011-08-19 20:06:51 -0400 |
---|---|---|
committer | Gustavo F. Padovan <padovan@profusion.mobi> | 2011-09-21 11:58:11 -0400 |
commit | d26a23454813908a1bf0e2fd8c73233b22c6dbd7 (patch) | |
tree | 20a47fdba8e49371265684bc2ed2306d7c042195 /net/bluetooth/l2cap_core.c | |
parent | e2dcd113d15ef99d23498859e7006955b5367698 (diff) |
Bluetooth: Add a flag to indicate that SMP is going on
Add HCI_CONN_LE_SMP_PEND flag to indicate that SMP is pending
for that connection. This allows to have information that an SMP
procedure is going on for that connection.
We use the HCI_CONN_ENCRYPT_PEND to indicate that encryption
(HCI_LE_Start_Encryption) is pending for that connection.
While a SMP procedure is going on we hold an reference to the
connection, to avoid disconnections.
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'net/bluetooth/l2cap_core.c')
-rw-r--r-- | net/bluetooth/l2cap_core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index b3bdb482bbe6..8136752d824b 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
@@ -986,8 +986,10 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err) | |||
986 | if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) | 986 | if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) |
987 | del_timer_sync(&conn->info_timer); | 987 | del_timer_sync(&conn->info_timer); |
988 | 988 | ||
989 | if (test_bit(HCI_CONN_ENCRYPT_PEND, &hcon->pend)) | 989 | if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->pend)) { |
990 | del_timer(&conn->security_timer); | 990 | del_timer(&conn->security_timer); |
991 | hci_conn_put(hcon); | ||
992 | } | ||
991 | 993 | ||
992 | hcon->l2cap_data = NULL; | 994 | hcon->l2cap_data = NULL; |
993 | kfree(conn); | 995 | kfree(conn); |