Commit 1937721f authored by John W. Linville's avatar John W. Linville
Browse files
parents 916448e7 be93112a
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,10 @@
static struct usb_device_id ath3k_table[] = {
static struct usb_device_id ath3k_table[] = {
	/* Atheros AR3011 */
	/* Atheros AR3011 */
	{ USB_DEVICE(0x0CF3, 0x3000) },
	{ USB_DEVICE(0x0CF3, 0x3000) },

	/* Atheros AR3011 with sflash firmware*/
	{ USB_DEVICE(0x0CF3, 0x3002) },

	{ }	/* Terminating entry */
	{ }	/* Terminating entry */
};
};


+9 −3
Original line number Original line Diff line number Diff line
@@ -99,6 +99,9 @@ static struct usb_device_id blacklist_table[] = {
	/* Broadcom BCM2033 without firmware */
	/* Broadcom BCM2033 without firmware */
	{ USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },


	/* Atheros 3011 with sflash firmware */
	{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },

	/* Broadcom BCM2035 */
	/* Broadcom BCM2035 */
	{ USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
	{ USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
	{ USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },
	{ USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },
@@ -239,6 +242,7 @@ static void btusb_intr_complete(struct urb *urb)


	err = usb_submit_urb(urb, GFP_ATOMIC);
	err = usb_submit_urb(urb, GFP_ATOMIC);
	if (err < 0) {
	if (err < 0) {
		if (err != -EPERM)
			BT_ERR("%s urb %p failed to resubmit (%d)",
			BT_ERR("%s urb %p failed to resubmit (%d)",
						hdev->name, urb, -err);
						hdev->name, urb, -err);
		usb_unanchor_urb(urb);
		usb_unanchor_urb(urb);
@@ -323,6 +327,7 @@ static void btusb_bulk_complete(struct urb *urb)


	err = usb_submit_urb(urb, GFP_ATOMIC);
	err = usb_submit_urb(urb, GFP_ATOMIC);
	if (err < 0) {
	if (err < 0) {
		if (err != -EPERM)
			BT_ERR("%s urb %p failed to resubmit (%d)",
			BT_ERR("%s urb %p failed to resubmit (%d)",
						hdev->name, urb, -err);
						hdev->name, urb, -err);
		usb_unanchor_urb(urb);
		usb_unanchor_urb(urb);
@@ -412,6 +417,7 @@ static void btusb_isoc_complete(struct urb *urb)


	err = usb_submit_urb(urb, GFP_ATOMIC);
	err = usb_submit_urb(urb, GFP_ATOMIC);
	if (err < 0) {
	if (err < 0) {
		if (err != -EPERM)
			BT_ERR("%s urb %p failed to resubmit (%d)",
			BT_ERR("%s urb %p failed to resubmit (%d)",
						hdev->name, urb, -err);
						hdev->name, urb, -err);
		usb_unanchor_urb(urb);
		usb_unanchor_urb(urb);
+3 −3
Original line number Original line Diff line number Diff line
@@ -882,7 +882,7 @@ static int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)
	int lm = 0;
	int lm = 0;


	if (type != SCO_LINK && type != ESCO_LINK)
	if (type != SCO_LINK && type != ESCO_LINK)
		return 0;
		return -EINVAL;


	BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
	BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));


@@ -908,7 +908,7 @@ static int sco_connect_cfm(struct hci_conn *hcon, __u8 status)
	BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
	BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);


	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
		return 0;
		return -EINVAL;


	if (!status) {
	if (!status) {
		struct sco_conn *conn;
		struct sco_conn *conn;
@@ -927,7 +927,7 @@ static int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)
	BT_DBG("hcon %p reason %d", hcon, reason);
	BT_DBG("hcon %p reason %d", hcon, reason);


	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
		return 0;
		return -EINVAL;


	sco_conn_del(hcon, bt_err(reason));
	sco_conn_del(hcon, bt_err(reason));