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

Commit 2cbd3f5c authored by Marcel Holtmann's avatar Marcel Holtmann Committed by Johan Hedberg
Browse files

Bluetooth: btusb: Add internal callback for USB bulk rx data



Some vendors require special handling of the rx data from the USB
bulk endpoints. For that case provide an internal callback that
can overwrite it with a custom receive function.

Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 40f4938a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -299,6 +299,8 @@ struct btusb_data {
	unsigned int sco_num;
	int isoc_altsetting;
	int suspend_count;

	int (*recv_bulk)(struct btusb_data *data, void *buffer, int count);
};

static inline void btusb_free_frags(struct btusb_data *data)
@@ -590,7 +592,7 @@ static void btusb_bulk_complete(struct urb *urb)
	if (urb->status == 0) {
		hdev->stat.byte_rx += urb->actual_length;

		if (btusb_recv_bulk(data, urb->transfer_buffer,
		if (data->recv_bulk(data, urb->transfer_buffer,
				    urb->actual_length) < 0) {
			BT_ERR("%s corrupted ACL packet", hdev->name);
			hdev->stat.err_rx++;
@@ -2012,6 +2014,8 @@ static int btusb_probe(struct usb_interface *intf,
	init_usb_anchor(&data->isoc_anchor);
	spin_lock_init(&data->rxlock);

	data->recv_bulk = btusb_recv_bulk;

	hdev = hci_alloc_dev();
	if (!hdev)
		return -ENOMEM;