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

Commit 63748aa8 authored by David S. Miller's avatar David S. Miller
Browse files
parents 43be6366 b1fb0683
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -257,7 +257,6 @@ static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned ch

	if (hdr & 0x10) {
		BT_ERR("%s error in block", data->hdev->name);
		if (data->reassembly)
		kfree_skb(data->reassembly);
		data->reassembly = NULL;
		return -EIO;
+2 −2
Original line number Diff line number Diff line
@@ -359,9 +359,9 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
			BT_ERR("Very strange (stat=0x%04x)", stat);
		} else if ((stat & 0xff) != 0xff) {
			if (stat & 0x0020) {
				int stat = bt3c_read(iobase, 0x7002) & 0x10;
				int status = bt3c_read(iobase, 0x7002) & 0x10;
				BT_INFO("%s: Antenna %s", info->hdev->name,
							stat ? "out" : "in");
							status ? "out" : "in");
			}
			if (stat & 0x0001)
				bt3c_receive(info);
+23 −17
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>

#define VERSION "0.4"
#define VERSION "0.5"

static int ignore_dga;
static int ignore_csr;
@@ -171,6 +171,7 @@ struct btusb_data {

	__u8 cmdreq_type;

	unsigned int sco_num;
	int isoc_altsetting;
	int suspend_count;
};
@@ -496,11 +497,23 @@ static int btusb_open(struct hci_dev *hdev)
		return 0;

	err = btusb_submit_intr_urb(hdev, GFP_KERNEL);
	if (err < 0)
		goto failed;

	err = btusb_submit_bulk_urb(hdev, GFP_KERNEL);
	if (err < 0) {
		clear_bit(BTUSB_INTR_RUNNING, &data->flags);
		clear_bit(HCI_RUNNING, &hdev->flags);
		usb_kill_anchored_urbs(&data->intr_anchor);
		goto failed;
	}

	set_bit(BTUSB_BULK_RUNNING, &data->flags);
	btusb_submit_bulk_urb(hdev, GFP_KERNEL);

	return 0;

failed:
	clear_bit(BTUSB_INTR_RUNNING, &data->flags);
	clear_bit(HCI_RUNNING, &hdev->flags);
	return err;
}

@@ -655,20 +668,11 @@ static void btusb_notify(struct hci_dev *hdev, unsigned int evt)

	BT_DBG("%s evt %d", hdev->name, evt);

	if (hdev->conn_hash.acl_num > 0) {
		if (!test_and_set_bit(BTUSB_BULK_RUNNING, &data->flags)) {
			if (btusb_submit_bulk_urb(hdev, GFP_ATOMIC) < 0)
				clear_bit(BTUSB_BULK_RUNNING, &data->flags);
			else
				btusb_submit_bulk_urb(hdev, GFP_ATOMIC);
		}
	} else {
		clear_bit(BTUSB_BULK_RUNNING, &data->flags);
		usb_unlink_anchored_urbs(&data->bulk_anchor);
	}

	if (hdev->conn_hash.sco_num != data->sco_num) {
		data->sco_num = hdev->conn_hash.sco_num;
		schedule_work(&data->work);
	}
}

static int inline __set_isoc_interface(struct hci_dev *hdev, int altsetting)
{
@@ -982,9 +986,11 @@ static int btusb_resume(struct usb_interface *intf)
	}

	if (test_bit(BTUSB_BULK_RUNNING, &data->flags)) {
		if (btusb_submit_bulk_urb(hdev, GFP_NOIO) < 0)
		err = btusb_submit_bulk_urb(hdev, GFP_NOIO);
		if (err < 0) {
			clear_bit(BTUSB_BULK_RUNNING, &data->flags);
		else
			return err;
		} else
			btusb_submit_bulk_urb(hdev, GFP_NOIO);
	}

+1 −2
Original line number Diff line number Diff line
@@ -102,7 +102,6 @@ static int h4_close(struct hci_uart *hu)

	skb_queue_purge(&h4->txq);

	if (h4->rx_skb)
	kfree_skb(h4->rx_skb);

	hu->priv = NULL;
+1 −2
Original line number Diff line number Diff line
@@ -163,7 +163,6 @@ static int ll_close(struct hci_uart *hu)
	skb_queue_purge(&ll->tx_wait_q);
	skb_queue_purge(&ll->txq);

	if (ll->rx_skb)
	kfree_skb(ll->rx_skb);

	hu->priv = NULL;
Loading