|
@@ -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;
|