Lines Matching refs:urb

1287 static void btusb_intr_complete(struct urb *urb)
1289 struct hci_dev *hdev = urb->context;
1293 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1294 urb->actual_length);
1299 if (urb->status == 0) {
1300 hdev->stat.byte_rx += urb->actual_length;
1302 if (btusb_recv_intr(data, urb->transfer_buffer,
1303 urb->actual_length) < 0) {
1307 } else if (urb->status == -ENOENT) {
1316 usb_anchor_urb(urb, &data->intr_anchor);
1318 err = usb_submit_urb(urb, GFP_ATOMIC);
1320 /* -EPERM: urb is being killed;
1324 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1325 urb, -err);
1328 usb_unanchor_urb(urb);
1335 struct urb *urb;
1345 urb = usb_alloc_urb(0, mem_flags);
1346 if (!urb)
1353 usb_free_urb(urb);
1359 usb_fill_int_urb(urb, data->udev, pipe, buf, size,
1362 urb->transfer_flags |= URB_FREE_BUFFER;
1364 usb_anchor_urb(urb, &data->intr_anchor);
1366 err = usb_submit_urb(urb, mem_flags);
1369 bt_dev_err(hdev, "urb %p submission failed (%d)",
1370 urb, -err);
1373 usb_unanchor_urb(urb);
1387 switch (urb->dev->speed) {
1390 data->intr_interval = usecs_to_jiffies(urb->interval * 125);
1393 data->intr_interval = msecs_to_jiffies(urb->interval);
1398 usb_free_urb(urb);
1403 static void btusb_bulk_complete(struct urb *urb)
1405 struct hci_dev *hdev = urb->context;
1409 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1410 urb->actual_length);
1415 if (urb->status == 0) {
1416 hdev->stat.byte_rx += urb->actual_length;
1418 if (data->recv_bulk(data, urb->transfer_buffer,
1419 urb->actual_length) < 0) {
1423 } else if (urb->status == -ENOENT) {
1431 usb_anchor_urb(urb, &data->bulk_anchor);
1434 err = usb_submit_urb(urb, GFP_ATOMIC);
1436 /* -EPERM: urb is being killed;
1440 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1441 urb, -err);
1442 usb_unanchor_urb(urb);
1449 struct urb *urb;
1459 urb = usb_alloc_urb(0, mem_flags);
1460 if (!urb)
1465 usb_free_urb(urb);
1471 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size,
1474 urb->transfer_flags |= URB_FREE_BUFFER;
1477 usb_anchor_urb(urb, &data->bulk_anchor);
1479 err = usb_submit_urb(urb, mem_flags);
1482 bt_dev_err(hdev, "urb %p submission failed (%d)",
1483 urb, -err);
1484 usb_unanchor_urb(urb);
1487 usb_free_urb(urb);
1492 static void btusb_isoc_complete(struct urb *urb)
1494 struct hci_dev *hdev = urb->context;
1498 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1499 urb->actual_length);
1504 if (urb->status == 0) {
1505 for (i = 0; i < urb->number_of_packets; i++) {
1506 unsigned int offset = urb->iso_frame_desc[i].offset;
1507 unsigned int length = urb->iso_frame_desc[i].actual_length;
1509 if (urb->iso_frame_desc[i].status)
1514 if (btusb_recv_isoc(data, urb->transfer_buffer + offset,
1520 } else if (urb->status == -ENOENT) {
1528 usb_anchor_urb(urb, &data->isoc_anchor);
1530 err = usb_submit_urb(urb, GFP_ATOMIC);
1532 /* -EPERM: urb is being killed;
1536 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1537 urb, -err);
1538 usb_unanchor_urb(urb);
1542 static inline void __fill_isoc_descriptor_msbc(struct urb *urb, int len,
1571 urb->iso_frame_desc[i].offset = offset;
1572 urb->iso_frame_desc[i].length = offset;
1577 urb->iso_frame_desc[i].offset = offset;
1578 urb->iso_frame_desc[i].length = len;
1582 urb->number_of_packets = i;
1585 static inline void __fill_isoc_descriptor(struct urb *urb, int len, int mtu)
1593 urb->iso_frame_desc[i].offset = offset;
1594 urb->iso_frame_desc[i].length = mtu;
1598 urb->iso_frame_desc[i].offset = offset;
1599 urb->iso_frame_desc[i].length = len;
1603 urb->number_of_packets = i;
1609 struct urb *urb;
1619 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, mem_flags);
1620 if (!urb)
1628 usb_free_urb(urb);
1634 usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete,
1637 urb->transfer_flags = URB_FREE_BUFFER | URB_ISO_ASAP;
1639 __fill_isoc_descriptor(urb, size,
1642 usb_anchor_urb(urb, &data->isoc_anchor);
1644 err = usb_submit_urb(urb, mem_flags);
1647 bt_dev_err(hdev, "urb %p submission failed (%d)",
1648 urb, -err);
1649 usb_unanchor_urb(urb);
1652 usb_free_urb(urb);
1657 static void btusb_diag_complete(struct urb *urb)
1659 struct hci_dev *hdev = urb->context;
1663 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1664 urb->actual_length);
1666 if (urb->status == 0) {
1669 skb = bt_skb_alloc(urb->actual_length, GFP_ATOMIC);
1671 skb_put_data(skb, urb->transfer_buffer,
1672 urb->actual_length);
1675 } else if (urb->status == -ENOENT) {
1683 usb_anchor_urb(urb, &data->diag_anchor);
1686 err = usb_submit_urb(urb, GFP_ATOMIC);
1688 /* -EPERM: urb is being killed;
1692 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1693 urb, -err);
1694 usb_unanchor_urb(urb);
1701 struct urb *urb;
1711 urb = usb_alloc_urb(0, mem_flags);
1712 if (!urb)
1717 usb_free_urb(urb);
1723 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size,
1726 urb->transfer_flags |= URB_FREE_BUFFER;
1729 usb_anchor_urb(urb, &data->diag_anchor);
1731 err = usb_submit_urb(urb, mem_flags);
1734 bt_dev_err(hdev, "urb %p submission failed (%d)",
1735 urb, -err);
1736 usb_unanchor_urb(urb);
1739 usb_free_urb(urb);
1744 static void btusb_tx_complete(struct urb *urb)
1746 struct sk_buff *skb = urb->context;
1751 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1752 urb->actual_length);
1757 if (!urb->status) {
1758 hdev->stat.byte_tx += urb->transfer_buffer_length;
1761 hci_cmd_sync_cancel(hdev, -urb->status);
1770 kfree(urb->setup_packet);
1775 static void btusb_isoc_tx_complete(struct urb *urb)
1777 struct sk_buff *skb = urb->context;
1780 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1781 urb->actual_length);
1786 if (!urb->status)
1787 hdev->stat.byte_tx += urb->transfer_buffer_length;
1792 kfree(urb->setup_packet);
1914 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb)
1918 struct urb *urb;
1921 urb = usb_alloc_urb(0, GFP_KERNEL);
1922 if (!urb)
1927 usb_free_urb(urb);
1939 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr,
1944 return urb;
1947 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb)
1950 struct urb *urb;
1956 urb = usb_alloc_urb(0, GFP_KERNEL);
1957 if (!urb)
1962 usb_fill_bulk_urb(urb, data->udev, pipe,
1967 return urb;
1970 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb)
1973 struct urb *urb;
1979 urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, GFP_KERNEL);
1980 if (!urb)
1985 usb_fill_int_urb(urb, data->udev, pipe,
1989 urb->transfer_flags = URB_ISO_ASAP;
1992 __fill_isoc_descriptor_msbc(urb, skb->len,
1996 __fill_isoc_descriptor(urb, skb->len,
2000 return urb;
2003 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb)
2008 usb_anchor_urb(urb, &data->tx_anchor);
2010 err = usb_submit_urb(urb, GFP_KERNEL);
2013 bt_dev_err(hdev, "urb %p submission failed (%d)",
2014 urb, -err);
2015 kfree(urb->setup_packet);
2016 usb_unanchor_urb(urb);
2021 usb_free_urb(urb);
2025 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb)
2038 return submit_tx_urb(hdev, urb);
2040 usb_anchor_urb(urb, &data->deferred);
2043 usb_free_urb(urb);
2049 struct urb *urb;
2055 urb = alloc_ctrl_urb(hdev, skb);
2056 if (IS_ERR(urb))
2057 return PTR_ERR(urb);
2060 return submit_or_queue_tx_urb(hdev, urb);
2063 urb = alloc_bulk_urb(hdev, skb);
2064 if (IS_ERR(urb))
2065 return PTR_ERR(urb);
2068 return submit_or_queue_tx_urb(hdev, urb);
2074 urb = alloc_isoc_urb(hdev, skb);
2075 if (IS_ERR(urb))
2076 return PTR_ERR(urb);
2079 return submit_tx_urb(hdev, urb);
2082 urb = alloc_bulk_urb(hdev, skb);
2083 if (IS_ERR(urb))
2084 return PTR_ERR(urb);
2086 return submit_or_queue_tx_urb(hdev, urb);
2501 struct urb *urb;
2516 urb = alloc_bulk_urb(hdev, skb);
2518 urb = alloc_ctrl_urb(hdev, skb);
2528 urb = alloc_ctrl_urb(hdev, skb);
2530 if (IS_ERR(urb))
2531 return PTR_ERR(urb);
2534 return submit_or_queue_tx_urb(hdev, urb);
2537 urb = alloc_bulk_urb(hdev, skb);
2538 if (IS_ERR(urb))
2539 return PTR_ERR(urb);
2542 return submit_or_queue_tx_urb(hdev, urb);
2548 urb = alloc_isoc_urb(hdev, skb);
2549 if (IS_ERR(urb))
2550 return PTR_ERR(urb);
2553 return submit_tx_urb(hdev, urb);
2556 urb = alloc_bulk_urb(hdev, skb);
2557 if (IS_ERR(urb))
2558 return PTR_ERR(urb);
2560 return submit_or_queue_tx_urb(hdev, urb);
2611 static void btusb_mtk_wmt_recv(struct urb *urb)
2613 struct hci_dev *hdev = urb->context;
2618 if (urb->status == 0 && urb->actual_length > 0) {
2619 hdev->stat.byte_rx += urb->actual_length;
2627 kfree(urb->setup_packet);
2632 skb_put_data(skb, urb->transfer_buffer, urb->actual_length);
2641 kfree(urb->setup_packet);
2650 kfree(urb->setup_packet);
2661 kfree(urb->setup_packet);
2663 } else if (urb->status == -ENOENT) {
2670 /* The URB complete handler is still called with urb->actual_length = 0
2679 usb_anchor_urb(urb, &data->ctrl_anchor);
2680 err = usb_submit_urb(urb, GFP_ATOMIC);
2682 kfree(urb->setup_packet);
2683 /* -EPERM: urb is being killed;
2687 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
2688 urb, -err);
2689 usb_unanchor_urb(urb);
2700 struct urb *urb;
2702 urb = usb_alloc_urb(0, GFP_KERNEL);
2703 if (!urb)
2708 usb_free_urb(urb);
2721 usb_free_urb(urb);
2727 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr,
2730 urb->transfer_flags |= URB_FREE_BUFFER;
2732 usb_anchor_urb(urb, &data->ctrl_anchor);
2733 err = usb_submit_urb(urb, GFP_KERNEL);
2736 bt_dev_err(hdev, "urb %p submission failed (%d)",
2737 urb, -err);
2738 usb_unanchor_urb(urb);
2741 usb_free_urb(urb);
4000 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable)
4004 struct urb *urb;
4010 urb = usb_alloc_urb(0, GFP_KERNEL);
4011 if (!urb)
4016 usb_free_urb(urb);
4025 usb_fill_bulk_urb(urb, data->udev, pipe,
4030 return urb;
4036 struct urb *urb;
4044 urb = alloc_diag_urb(hdev, enable);
4045 if (IS_ERR(urb))
4046 return PTR_ERR(urb);
4048 return submit_or_queue_tx_urb(hdev, urb);
4675 struct urb *urb;
4678 while ((urb = usb_get_from_anchor(&data->deferred))) {
4679 usb_anchor_urb(urb, &data->tx_anchor);
4681 err = usb_submit_urb(urb, GFP_ATOMIC);
4684 BT_ERR("%s urb %p submission failed (%d)",
4685 data->hdev->name, urb, -err);
4686 kfree(urb->setup_packet);
4687 usb_unanchor_urb(urb);
4688 usb_free_urb(urb);
4693 usb_free_urb(urb);
4697 while ((urb = usb_get_from_anchor(&data->deferred))) {
4698 kfree(urb->setup_packet);
4699 usb_free_urb(urb);