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

Commit cd4c5391 authored by Suraj Sumangala's avatar Suraj Sumangala Committed by Marcel Holtmann
Browse files

Bluetooth: Add one more buffer for HCI stream reassembly



Additional reassembly buffer to keep track of stream reasembly

Signed-off-by: default avatarSuraj Sumangala <suraj@atheros.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 0a79f674
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ struct bdaddr_list {
	struct list_head list;
	bdaddr_t bdaddr;
};

#define NUM_REASSEMBLY 4
struct hci_dev {
	struct list_head list;
	spinlock_t	lock;
@@ -123,7 +123,7 @@ struct hci_dev {
	struct sk_buff_head	cmd_q;

	struct sk_buff		*sent_cmd;
	struct sk_buff		*reassembly[3];
	struct sk_buff		*reassembly[NUM_REASSEMBLY];

	struct mutex		req_lock;
	wait_queue_head_t	req_wait_q;
+3 −3
Original line number Diff line number Diff line
@@ -914,7 +914,7 @@ int hci_register_dev(struct hci_dev *hdev)
	skb_queue_head_init(&hdev->cmd_q);
	skb_queue_head_init(&hdev->raw_q);

	for (i = 0; i < 3; i++)
	for (i = 0; i < NUM_REASSEMBLY; i++)
		hdev->reassembly[i] = NULL;

	init_waitqueue_head(&hdev->req_wait_q);
@@ -973,7 +973,7 @@ int hci_unregister_dev(struct hci_dev *hdev)

	hci_dev_do_close(hdev);

	for (i = 0; i < 3; i++)
	for (i = 0; i < NUM_REASSEMBLY; i++)
		kfree_skb(hdev->reassembly[i]);

	hci_notify(hdev, HCI_DEV_UNREG);
@@ -1034,7 +1034,7 @@ int hci_recv_frame(struct sk_buff *skb)
EXPORT_SYMBOL(hci_recv_frame);

/* Receive packet type fragment */
#define __reassembly(hdev, type)  ((hdev)->reassembly[(type) - 2])
#define __reassembly(hdev, type)  ((hdev)->reassembly[(type) - 1])

int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count)
{