Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9270fd61 authored by John W. Linville's avatar John W. Linville
Browse files
parents 24b9c373 d13431ca
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -100,6 +100,9 @@ static struct usb_device_id btusb_table[] = {
	/* Canyon CN-BTU1 with HID interfaces */
	{ USB_DEVICE(0x0c10, 0x0000) },

	/* Broadcom BCM20702A0 */
	{ USB_DEVICE(0x413c, 0x8197) },

	{ }	/* Terminating entry */
};

+5 −2
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@
#define L2CAP_DEFAULT_ACK_TO		200
#define L2CAP_LE_DEFAULT_MTU		23

#define L2CAP_DISC_TIMEOUT             (100)
#define L2CAP_DISC_REJ_TIMEOUT         (5000)  /*  5 seconds */
#define L2CAP_ENC_TIMEOUT              (5000)  /*  5 seconds */
#define L2CAP_CONN_TIMEOUT             (40000) /* 40 seconds */
#define L2CAP_INFO_TIMEOUT             (4000)  /*  4 seconds */

+1 −1
Original line number Diff line number Diff line
@@ -673,7 +673,7 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
		goto encrypt;

auth:
	if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
	if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
		return 0;

	if (!hci_conn_auth(conn, sec_level, auth_type))
+8 −8
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ static void l2cap_chan_timeout(unsigned long arg)

	if (sock_owned_by_user(sk)) {
		/* sk is owned by user. Try again later */
		__set_chan_timer(chan, HZ / 5);
		__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
		bh_unlock_sock(sk);
		chan_put(chan);
		return;
@@ -2488,7 +2488,7 @@ static inline int l2cap_connect_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hd
		if (sock_owned_by_user(sk)) {
			l2cap_state_change(chan, BT_DISCONN);
			__clear_chan_timer(chan);
			__set_chan_timer(chan, HZ / 5);
			__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
			break;
		}

@@ -2661,7 +2661,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hdr

	default:
		sk->sk_err = ECONNRESET;
		__set_chan_timer(chan, HZ * 5);
		__set_chan_timer(chan, L2CAP_DISC_REJ_TIMEOUT);
		l2cap_send_disconn_req(conn, chan, ECONNRESET);
		goto done;
	}
@@ -2718,7 +2718,7 @@ static inline int l2cap_disconnect_req(struct l2cap_conn *conn, struct l2cap_cmd
	if (sock_owned_by_user(sk)) {
		l2cap_state_change(chan, BT_DISCONN);
		__clear_chan_timer(chan);
		__set_chan_timer(chan, HZ / 5);
		__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
		bh_unlock_sock(sk);
		return 0;
	}
@@ -2752,7 +2752,7 @@ static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, struct l2cap_cmd
	if (sock_owned_by_user(sk)) {
		l2cap_state_change(chan,BT_DISCONN);
		__clear_chan_timer(chan);
		__set_chan_timer(chan, HZ / 5);
		__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
		bh_unlock_sock(sk);
		return 0;
	}
@@ -3998,7 +3998,7 @@ static inline void l2cap_check_encryption(struct l2cap_chan *chan, u8 encrypt)
	if (encrypt == 0x00) {
		if (chan->sec_level == BT_SECURITY_MEDIUM) {
			__clear_chan_timer(chan);
			__set_chan_timer(chan, HZ * 5);
			__set_chan_timer(chan, L2CAP_ENC_TIMEOUT);
		} else if (chan->sec_level == BT_SECURITY_HIGH)
			l2cap_chan_close(chan, ECONNREFUSED);
	} else {
@@ -4066,7 +4066,7 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
					L2CAP_CONN_REQ, sizeof(req), &req);
			} else {
				__clear_chan_timer(chan);
				__set_chan_timer(chan, HZ / 10);
				__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
			}
		} else if (chan->state == BT_CONNECT2) {
			struct l2cap_conn_rsp rsp;
@@ -4086,7 +4086,7 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
				}
			} else {
				l2cap_state_change(chan, BT_DISCONN);
				__set_chan_timer(chan, HZ / 10);
				__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
				res = L2CAP_CR_SEC_BLOCK;
				stat = L2CAP_CS_NO_INFO;
			}