1635 IRDA_MESSAGE("IRDA-USB found at address %d, Vendor: %x, Product: %x\n",
1636 dev->devnum, le16_to_cpu(dev->descriptor.idVendor),
1637 le16_to_cpu(dev->descriptor.idProduct));
1638
1639 net = alloc_irdadev(sizeof(*self));
1640 if (!net)
1641 goto err_out;
1642
1643 SET_NETDEV_DEV(net, &intf->dev);
1644 self = net->priv;
1645 self->netdev = net;
1646 spin_lock_init(&self->lock);
1647 init_timer(&self->rx_defer_timer);
1648
1649 self->capability = id->driver_info;
1650 self->needspatch = ((self->capability & IUC_STIR421X) != 0);
1651
1652
1653 if (self->capability & IUC_STIR421X) {
1654 self->max_rx_urb = IU_SIGMATEL_MAX_RX_URBS;
1655 self->header_length = USB_IRDA_STIR421X_HEADER;
1656 } else {
1657 self->max_rx_urb = IU_MAX_RX_URBS;
1658 self->header_length = USB_IRDA_HEADER;
1659 }
1660
1661 self->rx_urb = kcalloc(self->max_rx_urb, sizeof(struct urb *),
1662 GFP_KERNEL);
1663
1664 for (i = 0; i < self->max_rx_urb; i++) {
1665 self->rx_urb[i] = usb_alloc_urb(0, GFP_KERNEL);
1666 if (!self->rx_urb[i]) {
1667 goto err_out_1;
1668 }
1669 }
1670 self->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
1671 if (!self->tx_urb) {
1672 goto err_out_1;
1673 }
1674 self->speed_urb = usb_alloc_urb(0, GFP_KERNEL);
1675 if (!self->speed_urb) {