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

Commit c0068c85 authored by John W. Linville's avatar John W. Linville
Browse files
parents 2411054a adb08ede
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ struct hci_dev {

	struct inquiry_cache	inq_cache;
	struct hci_conn_hash	conn_hash;
	struct bdaddr_list	blacklist;
	struct list_head	blacklist;

	struct hci_dev_stats	stat;

+1 −1
Original line number Diff line number Diff line
@@ -924,7 +924,7 @@ int hci_register_dev(struct hci_dev *hdev)

	hci_conn_hash_init(hdev);

	INIT_LIST_HEAD(&hdev->blacklist.list);
	INIT_LIST_HEAD(&hdev->blacklist);

	memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));

+3 −5
Original line number Diff line number Diff line
@@ -168,9 +168,8 @@ static int hci_sock_release(struct socket *sock)
struct bdaddr_list *hci_blacklist_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
{
	struct list_head *p;
	struct bdaddr_list *blacklist = &hdev->blacklist;

	list_for_each(p, &blacklist->list) {
	list_for_each(p, &hdev->blacklist) {
		struct bdaddr_list *b;

		b = list_entry(p, struct bdaddr_list, list);
@@ -202,7 +201,7 @@ static int hci_blacklist_add(struct hci_dev *hdev, void __user *arg)

	bacpy(&entry->bdaddr, &bdaddr);

	list_add(&entry->list, &hdev->blacklist.list);
	list_add(&entry->list, &hdev->blacklist);

	return 0;
}
@@ -210,9 +209,8 @@ static int hci_blacklist_add(struct hci_dev *hdev, void __user *arg)
int hci_blacklist_clear(struct hci_dev *hdev)
{
	struct list_head *p, *n;
	struct bdaddr_list *blacklist = &hdev->blacklist;

	list_for_each_safe(p, n, &blacklist->list) {
	list_for_each_safe(p, n, &hdev->blacklist) {
		struct bdaddr_list *b;

		b = list_entry(p, struct bdaddr_list, list);
+1 −2
Original line number Diff line number Diff line
@@ -439,12 +439,11 @@ static const struct file_operations inquiry_cache_fops = {
static int blacklist_show(struct seq_file *f, void *p)
{
	struct hci_dev *hdev = f->private;
	struct bdaddr_list *blacklist = &hdev->blacklist;
	struct list_head *l;

	hci_dev_lock_bh(hdev);

	list_for_each(l, &blacklist->list) {
	list_for_each(l, &hdev->blacklist) {
		struct bdaddr_list *b;
		bdaddr_t bdaddr;

+21 −3
Original line number Diff line number Diff line
@@ -2527,6 +2527,10 @@ static int l2cap_build_conf_req(struct sock *sk, void *data)
		if (pi->imtu != L2CAP_DEFAULT_MTU)
			l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu);

		if (!(pi->conn->feat_mask & L2CAP_FEAT_ERTM) &&
				!(pi->conn->feat_mask & L2CAP_FEAT_STREAMING))
			break;

		rfc.mode            = L2CAP_MODE_BASIC;
		rfc.txwin_size      = 0;
		rfc.max_transmit    = 0;
@@ -2534,6 +2538,8 @@ static int l2cap_build_conf_req(struct sock *sk, void *data)
		rfc.monitor_timeout = 0;
		rfc.max_pdu_size    = 0;

		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
							(unsigned long) &rfc);
		break;

	case L2CAP_MODE_ERTM:
@@ -2546,6 +2552,9 @@ static int l2cap_build_conf_req(struct sock *sk, void *data)
		if (L2CAP_DEFAULT_MAX_PDU_SIZE > pi->conn->mtu - 10)
			rfc.max_pdu_size = cpu_to_le16(pi->conn->mtu - 10);

		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
							(unsigned long) &rfc);

		if (!(pi->conn->feat_mask & L2CAP_FEAT_FCS))
			break;

@@ -2566,6 +2575,9 @@ static int l2cap_build_conf_req(struct sock *sk, void *data)
		if (L2CAP_DEFAULT_MAX_PDU_SIZE > pi->conn->mtu - 10)
			rfc.max_pdu_size = cpu_to_le16(pi->conn->mtu - 10);

		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
							(unsigned long) &rfc);

		if (!(pi->conn->feat_mask & L2CAP_FEAT_FCS))
			break;

@@ -2577,9 +2589,6 @@ static int l2cap_build_conf_req(struct sock *sk, void *data)
		break;
	}

	l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
						(unsigned long) &rfc);

	/* FIXME: Need actual value of the flush timeout */
	//if (flush_to != L2CAP_DEFAULT_FLUSH_TO)
	//   l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to);
@@ -3339,6 +3348,15 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm

	del_timer(&conn->info_timer);

	if (result != L2CAP_IR_SUCCESS) {
		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
		conn->info_ident = 0;

		l2cap_conn_start(conn);

		return 0;
	}

	if (type == L2CAP_IT_FEAT_MASK) {
		conn->feat_mask = get_unaligned_le32(rsp->data);

Loading