# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/01/13 04:17:12+01:00 marcel@holtmann.org # [Bluetooth] Set disconnect timer for incoming ACL links # # In general a Bluetooth stack that creates an ACL link should also take # care of its termination, but some Bluetooth devices think otherwise. The # problem is that the Bluetooth specification don't defines an ownership # of an ACL link and if nobody cares about it, two devices stay connected # even if there is no need. To avoid leftover ACL links the disconnect # timer must also be used for incoming connections, but it is set twice # the default disconnect timeout so the other side get enough time to # clean everything by itself. # # include/net/bluetooth/hci_core.h # 2004/01/13 04:15:32+01:00 marcel@holtmann.org +5 -3 # Set disconnect timer for incoming ACL links # diff -Nru a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h --- a/include/net/bluetooth/hci_core.h Tue Jan 13 04:39:32 2004 +++ b/include/net/bluetooth/hci_core.h Tue Jan 13 04:39:32 2004 @@ -281,10 +281,12 @@ static inline void hci_conn_put(struct hci_conn *conn) { if (atomic_dec_and_test(&conn->refcnt)) { - if (conn->type == SCO_LINK) + if (conn->type == ACL_LINK) { + unsigned long timeo = (conn->out) ? + HCI_DISCONN_TIMEOUT : HCI_DISCONN_TIMEOUT * 2; + hci_conn_set_timer(conn, timeo); + } else hci_conn_set_timer(conn, HZ / 100); - else if (conn->out) - hci_conn_set_timer(conn, HCI_DISCONN_TIMEOUT); } }