Lines Matching refs:urb

1330 static void btusb_intr_complete(struct urb *urb)
1332 struct hci_dev *hdev = urb->context;
1336 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1337 urb->actual_length);
1342 if (urb->status == 0) {
1343 hdev->stat.byte_rx += urb->actual_length;
1345 if (btusb_recv_intr(data, urb->transfer_buffer,
1346 urb->actual_length) < 0) {
1350 } else if (urb->status == -ENOENT) {
1359 usb_anchor_urb(urb, &data->intr_anchor);
1361 err = usb_submit_urb(urb, GFP_ATOMIC);
1363 /* -EPERM: urb is being killed;
1367 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1368 urb, -err);
1371 usb_unanchor_urb(urb);
1378 struct urb *urb;
1388 urb = usb_alloc_urb(0, mem_flags);
1389 if (!urb)
1396 usb_free_urb(urb);
1402 usb_fill_int_urb(urb, data->udev, pipe, buf, size,
1405 urb->transfer_flags |= URB_FREE_BUFFER;
1407 usb_anchor_urb(urb, &data->intr_anchor);
1409 err = usb_submit_urb(urb, mem_flags);
1412 bt_dev_err(hdev, "urb %p submission failed (%d)",
1413 urb, -err);
1416 usb_unanchor_urb(urb);
1430 switch (urb->dev->speed) {
1433 data->intr_interval = usecs_to_jiffies(urb->interval * 125);
1436 data->intr_interval = msecs_to_jiffies(urb->interval);
1441 usb_free_urb(urb);
1446 static void btusb_bulk_complete(struct urb *urb)
1448 struct hci_dev *hdev = urb->context;
1452 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1453 urb->actual_length);
1458 if (urb->status == 0) {
1459 hdev->stat.byte_rx += urb->actual_length;
1461 if (data->recv_bulk(data, urb->transfer_buffer,
1462 urb->actual_length) < 0) {
1466 } else if (urb->status == -ENOENT) {
1474 usb_anchor_urb(urb, &data->bulk_anchor);
1477 err = usb_submit_urb(urb, GFP_ATOMIC);
1479 /* -EPERM: urb is being killed;
1483 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1484 urb, -err);
1485 usb_unanchor_urb(urb);
1492 struct urb *urb;
1502 urb = usb_alloc_urb(0, mem_flags);
1503 if (!urb)
1508 usb_free_urb(urb);
1514 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size,
1517 urb->transfer_flags |= URB_FREE_BUFFER;
1520 usb_anchor_urb(urb, &data->bulk_anchor);
1522 err = usb_submit_urb(urb, mem_flags);
1525 bt_dev_err(hdev, "urb %p submission failed (%d)",
1526 urb, -err);
1527 usb_unanchor_urb(urb);
1530 usb_free_urb(urb);
1535 static void btusb_isoc_complete(struct urb *urb)
1537 struct hci_dev *hdev = urb->context;
1541 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1542 urb->actual_length);
1547 if (urb->status == 0) {
1548 for (i = 0; i < urb->number_of_packets; i++) {
1549 unsigned int offset = urb->iso_frame_desc[i].offset;
1550 unsigned int length = urb->iso_frame_desc[i].actual_length;
1552 if (urb->iso_frame_desc[i].status)
1557 if (btusb_recv_isoc(data, urb->transfer_buffer + offset,
1563 } else if (urb->status == -ENOENT) {
1571 usb_anchor_urb(urb, &data->isoc_anchor);
1573 err = usb_submit_urb(urb, GFP_ATOMIC);
1575 /* -EPERM: urb is being killed;
1579 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1580 urb, -err);
1581 usb_unanchor_urb(urb);
1585 static inline void __fill_isoc_descriptor_msbc(struct urb *urb, int len,
1614 urb->iso_frame_desc[i].offset = offset;
1615 urb->iso_frame_desc[i].length = offset;
1620 urb->iso_frame_desc[i].offset = offset;
1621 urb->iso_frame_desc[i].length = len;
1625 urb->number_of_packets = i;
1628 static inline void __fill_isoc_descriptor(struct urb *urb, int len, int mtu)
1636 urb->iso_frame_desc[i].offset = offset;
1637 urb->iso_frame_desc[i].length = mtu;
1641 urb->iso_frame_desc[i].offset = offset;
1642 urb->iso_frame_desc[i].length = len;
1646 urb->number_of_packets = i;
1652 struct urb *urb;
1662 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, mem_flags);
1663 if (!urb)
1671 usb_free_urb(urb);
1677 usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete,
1680 urb->transfer_flags = URB_FREE_BUFFER | URB_ISO_ASAP;
1682 __fill_isoc_descriptor(urb, size,
1685 usb_anchor_urb(urb, &data->isoc_anchor);
1687 err = usb_submit_urb(urb, mem_flags);
1690 bt_dev_err(hdev, "urb %p submission failed (%d)",
1691 urb, -err);
1692 usb_unanchor_urb(urb);
1695 usb_free_urb(urb);
1700 static void btusb_diag_complete(struct urb *urb)
1702 struct hci_dev *hdev = urb->context;
1706 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1707 urb->actual_length);
1709 if (urb->status == 0) {
1712 skb = bt_skb_alloc(urb->actual_length, GFP_ATOMIC);
1714 skb_put_data(skb, urb->transfer_buffer,
1715 urb->actual_length);
1718 } else if (urb->status == -ENOENT) {
1726 usb_anchor_urb(urb, &data->diag_anchor);
1729 err = usb_submit_urb(urb, GFP_ATOMIC);
1731 /* -EPERM: urb is being killed;
1735 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1736 urb, -err);
1737 usb_unanchor_urb(urb);
1744 struct urb *urb;
1754 urb = usb_alloc_urb(0, mem_flags);
1755 if (!urb)
1760 usb_free_urb(urb);
1766 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size,
1769 urb->transfer_flags |= URB_FREE_BUFFER;
1772 usb_anchor_urb(urb, &data->diag_anchor);
1774 err = usb_submit_urb(urb, mem_flags);
1777 bt_dev_err(hdev, "urb %p submission failed (%d)",
1778 urb, -err);
1779 usb_unanchor_urb(urb);
1782 usb_free_urb(urb);
1787 static void btusb_tx_complete(struct urb *urb)
1789 struct sk_buff *skb = urb->context;
1794 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1795 urb->actual_length);
1800 if (!urb->status) {
1801 hdev->stat.byte_tx += urb->transfer_buffer_length;
1804 hci_cmd_sync_cancel(hdev, -urb->status);
1813 kfree(urb->setup_packet);
1818 static void btusb_isoc_tx_complete(struct urb *urb)
1820 struct sk_buff *skb = urb->context;
1823 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1824 urb->actual_length);
1829 if (!urb->status)
1830 hdev->stat.byte_tx += urb->transfer_buffer_length;
1835 kfree(urb->setup_packet);
1957 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb)
1961 struct urb *urb;
1964 urb = usb_alloc_urb(0, GFP_KERNEL);
1965 if (!urb)
1970 usb_free_urb(urb);
1982 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr,
1987 return urb;
1990 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb)
1993 struct urb *urb;
1999 urb = usb_alloc_urb(0, GFP_KERNEL);
2000 if (!urb)
2005 usb_fill_bulk_urb(urb, data->udev, pipe,
2010 return urb;
2013 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb)
2016 struct urb *urb;
2022 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, GFP_KERNEL);
2023 if (!urb)
2028 usb_fill_int_urb(urb, data->udev, pipe,
2032 urb->transfer_flags = URB_ISO_ASAP;
2035 __fill_isoc_descriptor_msbc(urb, skb->len,
2039 __fill_isoc_descriptor(urb, skb->len,
2043 return urb;
2046 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb)
2051 usb_anchor_urb(urb, &data->tx_anchor);
2053 err = usb_submit_urb(urb, GFP_KERNEL);
2056 bt_dev_err(hdev, "urb %p submission failed (%d)",
2057 urb, -err);
2058 kfree(urb->setup_packet);
2059 usb_unanchor_urb(urb);
2064 usb_free_urb(urb);
2068 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb)
2081 return submit_tx_urb(hdev, urb);
2083 usb_anchor_urb(urb, &data->deferred);
2086 usb_free_urb(urb);
2092 struct urb *urb;
2098 urb = alloc_ctrl_urb(hdev, skb);
2099 if (IS_ERR(urb))
2100 return PTR_ERR(urb);
2103 return submit_or_queue_tx_urb(hdev, urb);
2106 urb = alloc_bulk_urb(hdev, skb);
2107 if (IS_ERR(urb))
2108 return PTR_ERR(urb);
2111 return submit_or_queue_tx_urb(hdev, urb);
2117 urb = alloc_isoc_urb(hdev, skb);
2118 if (IS_ERR(urb))
2119 return PTR_ERR(urb);
2122 return submit_tx_urb(hdev, urb);
2125 urb = alloc_bulk_urb(hdev, skb);
2126 if (IS_ERR(urb))
2127 return PTR_ERR(urb);
2129 return submit_or_queue_tx_urb(hdev, urb);
2544 struct urb *urb;
2559 urb = alloc_bulk_urb(hdev, skb);
2561 urb = alloc_ctrl_urb(hdev, skb);
2571 urb = alloc_ctrl_urb(hdev, skb);
2573 if (IS_ERR(urb))
2574 return PTR_ERR(urb);
2577 return submit_or_queue_tx_urb(hdev, urb);
2580 urb = alloc_bulk_urb(hdev, skb);
2581 if (IS_ERR(urb))
2582 return PTR_ERR(urb);
2585 return submit_or_queue_tx_urb(hdev, urb);
2591 urb = alloc_isoc_urb(hdev, skb);
2592 if (IS_ERR(urb))
2593 return PTR_ERR(urb);
2596 return submit_tx_urb(hdev, urb);
2599 urb = alloc_bulk_urb(hdev, skb);
2600 if (IS_ERR(urb))
2601 return PTR_ERR(urb);
2603 return submit_or_queue_tx_urb(hdev, urb);
2654 static void btusb_mtk_wmt_recv(struct urb *urb)
2656 struct hci_dev *hdev = urb->context;
2661 if (urb->status == 0 && urb->actual_length > 0) {
2662 hdev->stat.byte_rx += urb->actual_length;
2670 kfree(urb->setup_packet);
2675 skb_put_data(skb, urb->transfer_buffer, urb->actual_length);
2684 kfree(urb->setup_packet);
2693 kfree(urb->setup_packet);
2704 kfree(urb->setup_packet);
2706 } else if (urb->status == -ENOENT) {
2713 /* The URB complete handler is still called with urb->actual_length = 0
2722 usb_anchor_urb(urb, &data->ctrl_anchor);
2723 err = usb_submit_urb(urb, GFP_ATOMIC);
2725 kfree(urb->setup_packet);
2726 /* -EPERM: urb is being killed;
2730 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
2731 urb, -err);
2732 usb_unanchor_urb(urb);
2743 struct urb *urb;
2745 urb = usb_alloc_urb(0, GFP_KERNEL);
2746 if (!urb)
2751 usb_free_urb(urb);
2764 usb_free_urb(urb);
2770 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr,
2773 urb->transfer_flags |= URB_FREE_BUFFER;
2775 usb_anchor_urb(urb, &data->ctrl_anchor);
2776 err = usb_submit_urb(urb, GFP_KERNEL);
2779 bt_dev_err(hdev, "urb %p submission failed (%d)",
2780 urb, -err);
2781 usb_unanchor_urb(urb);
2784 usb_free_urb(urb);
4052 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable)
4056 struct urb *urb;
4062 urb = usb_alloc_urb(0, GFP_KERNEL);
4063 if (!urb)
4068 usb_free_urb(urb);
4077 usb_fill_bulk_urb(urb, data->udev, pipe,
4082 return urb;
4088 struct urb *urb;
4096 urb = alloc_diag_urb(hdev, enable);
4097 if (IS_ERR(urb))
4098 return PTR_ERR(urb);
4100 return submit_or_queue_tx_urb(hdev, urb);
4727 struct urb *urb;
4730 while ((urb = usb_get_from_anchor(&data->deferred))) {
4731 usb_anchor_urb(urb, &data->tx_anchor);
4733 err = usb_submit_urb(urb, GFP_ATOMIC);
4736 BT_ERR("%s urb %p submission failed (%d)",
4737 data->hdev->name, urb, -err);
4738 kfree(urb->setup_packet);
4739 usb_unanchor_urb(urb);
4740 usb_free_urb(urb);
4745 usb_free_urb(urb);
4749 while ((urb = usb_get_from_anchor(&data->deferred))) {
4750 kfree(urb->setup_packet);
4751 usb_free_urb(urb);