Lines Matching refs:dev
154 static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags);
209 static void ipheth_kill_urbs(struct ipheth_device *dev) in ipheth_kill_urbs() argument
211 usb_kill_urb(dev->tx_urb); in ipheth_kill_urbs()
212 usb_kill_urb(dev->rx_urb); in ipheth_kill_urbs()
217 struct ipheth_device *dev; in ipheth_rcvbulk_callback() local
223 dev = urb->context; in ipheth_rcvbulk_callback()
224 if (dev == NULL) in ipheth_rcvbulk_callback()
236 dev_err(&dev->intf->dev, "%s: urb status: %d\n", in ipheth_rcvbulk_callback()
242 dev->net->stats.rx_length_errors++; in ipheth_rcvbulk_callback()
250 dev_err(&dev->intf->dev, "%s: dev_alloc_skb: -ENOMEM\n", in ipheth_rcvbulk_callback()
252 dev->net->stats.rx_dropped++; in ipheth_rcvbulk_callback()
257 skb->dev = dev->net; in ipheth_rcvbulk_callback()
258 skb->protocol = eth_type_trans(skb, dev->net); in ipheth_rcvbulk_callback()
260 dev->net->stats.rx_packets++; in ipheth_rcvbulk_callback()
261 dev->net->stats.rx_bytes += len; in ipheth_rcvbulk_callback()
264 ipheth_rx_submit(dev, GFP_ATOMIC); in ipheth_rcvbulk_callback()
269 struct ipheth_device *dev; in ipheth_sndbulk_callback() local
272 dev = urb->context; in ipheth_sndbulk_callback()
273 if (dev == NULL) in ipheth_sndbulk_callback()
280 dev_err(&dev->intf->dev, "%s: urb status: %d\n", in ipheth_sndbulk_callback()
283 dev_kfree_skb_irq(dev->tx_skb); in ipheth_sndbulk_callback()
284 netif_wake_queue(dev->net); in ipheth_sndbulk_callback()
287 static int ipheth_carrier_set(struct ipheth_device *dev) in ipheth_carrier_set() argument
289 struct usb_device *udev = dev->udev; in ipheth_carrier_set()
298 dev->ctrl_buf, IPHETH_CTRL_BUF_SIZE, in ipheth_carrier_set()
301 dev_err(&dev->intf->dev, "%s: usb_control_msg: %d\n", in ipheth_carrier_set()
306 if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON) in ipheth_carrier_set()
307 netif_carrier_on(dev->net); in ipheth_carrier_set()
309 netif_carrier_off(dev->net); in ipheth_carrier_set()
316 struct ipheth_device *dev = container_of(work, struct ipheth_device, in ipheth_carrier_check_work() local
319 ipheth_carrier_set(dev); in ipheth_carrier_check_work()
320 schedule_delayed_work(&dev->carrier_work, IPHETH_CARRIER_CHECK_TIMEOUT); in ipheth_carrier_check_work()
323 static int ipheth_get_macaddr(struct ipheth_device *dev) in ipheth_get_macaddr() argument
325 struct usb_device *udev = dev->udev; in ipheth_get_macaddr()
326 struct net_device *net = dev->net; in ipheth_get_macaddr()
335 dev->ctrl_buf, in ipheth_get_macaddr()
339 dev_err(&dev->intf->dev, "%s: usb_control_msg: %d\n", in ipheth_get_macaddr()
342 dev_err(&dev->intf->dev, in ipheth_get_macaddr()
347 memcpy(net->dev_addr, dev->ctrl_buf, ETH_ALEN); in ipheth_get_macaddr()
354 static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags) in ipheth_rx_submit() argument
356 struct usb_device *udev = dev->udev; in ipheth_rx_submit()
359 usb_fill_bulk_urb(dev->rx_urb, udev, in ipheth_rx_submit()
360 usb_rcvbulkpipe(udev, dev->bulk_in), in ipheth_rx_submit()
361 dev->rx_buf, IPHETH_BUF_SIZE, in ipheth_rx_submit()
363 dev); in ipheth_rx_submit()
364 dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in ipheth_rx_submit()
366 retval = usb_submit_urb(dev->rx_urb, mem_flags); in ipheth_rx_submit()
368 dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n", in ipheth_rx_submit()
375 struct ipheth_device *dev = netdev_priv(net); in ipheth_open() local
376 struct usb_device *udev = dev->udev; in ipheth_open()
381 retval = ipheth_carrier_set(dev); in ipheth_open()
385 retval = ipheth_rx_submit(dev, GFP_KERNEL); in ipheth_open()
389 schedule_delayed_work(&dev->carrier_work, IPHETH_CARRIER_CHECK_TIMEOUT); in ipheth_open()
396 struct ipheth_device *dev = netdev_priv(net); in ipheth_close() local
398 cancel_delayed_work_sync(&dev->carrier_work); in ipheth_close()
405 struct ipheth_device *dev = netdev_priv(net); in ipheth_tx() local
406 struct usb_device *udev = dev->udev; in ipheth_tx()
412 dev->net->stats.tx_dropped++; in ipheth_tx()
417 memcpy(dev->tx_buf, skb->data, skb->len); in ipheth_tx()
419 memset(dev->tx_buf + skb->len, 0, IPHETH_BUF_SIZE - skb->len); in ipheth_tx()
421 usb_fill_bulk_urb(dev->tx_urb, udev, in ipheth_tx()
422 usb_sndbulkpipe(udev, dev->bulk_out), in ipheth_tx()
423 dev->tx_buf, IPHETH_BUF_SIZE, in ipheth_tx()
425 dev); in ipheth_tx()
426 dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in ipheth_tx()
428 retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC); in ipheth_tx()
430 dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n", in ipheth_tx()
432 dev->net->stats.tx_errors++; in ipheth_tx()
435 dev->tx_skb = skb; in ipheth_tx()
437 dev->net->stats.tx_packets++; in ipheth_tx()
438 dev->net->stats.tx_bytes += skb->len; in ipheth_tx()
447 struct ipheth_device *dev = netdev_priv(net); in ipheth_tx_timeout() local
449 dev_err(&dev->intf->dev, "%s: TX timeout\n", __func__); in ipheth_tx_timeout()
450 dev->net->stats.tx_errors++; in ipheth_tx_timeout()
451 usb_unlink_urb(dev->tx_urb); in ipheth_tx_timeout()
456 struct ipheth_device *dev = netdev_priv(net); in ipheth_ethtool_op_get_link() local
457 return netif_carrier_ok(dev->net); in ipheth_ethtool_op_get_link()
477 struct ipheth_device *dev; in ipheth_probe() local
490 dev = netdev_priv(netdev); in ipheth_probe()
491 dev->udev = udev; in ipheth_probe()
492 dev->net = netdev; in ipheth_probe()
493 dev->intf = intf; in ipheth_probe()
499 dev_err(&intf->dev, "Unable to find alternate settings interface\n"); in ipheth_probe()
506 dev->bulk_in = endp->bEndpointAddress; in ipheth_probe()
508 dev->bulk_out = endp->bEndpointAddress; in ipheth_probe()
510 if (!(dev->bulk_in && dev->bulk_out)) { in ipheth_probe()
512 dev_err(&intf->dev, "Unable to find endpoints\n"); in ipheth_probe()
516 dev->ctrl_buf = kmalloc(IPHETH_CTRL_BUF_SIZE, GFP_KERNEL); in ipheth_probe()
517 if (dev->ctrl_buf == NULL) { in ipheth_probe()
522 retval = ipheth_get_macaddr(dev); in ipheth_probe()
526 INIT_DELAYED_WORK(&dev->carrier_work, ipheth_carrier_check_work); in ipheth_probe()
528 retval = ipheth_alloc_urbs(dev); in ipheth_probe()
530 dev_err(&intf->dev, "error allocating urbs: %d\n", retval); in ipheth_probe()
534 usb_set_intfdata(intf, dev); in ipheth_probe()
536 SET_NETDEV_DEV(netdev, &intf->dev); in ipheth_probe()
541 dev_err(&intf->dev, "error registering netdev: %d\n", retval); in ipheth_probe()
546 dev_info(&intf->dev, "Apple iPhone USB Ethernet device attached\n"); in ipheth_probe()
550 ipheth_free_urbs(dev); in ipheth_probe()
554 kfree(dev->ctrl_buf); in ipheth_probe()
562 struct ipheth_device *dev; in ipheth_disconnect() local
564 dev = usb_get_intfdata(intf); in ipheth_disconnect()
565 if (dev != NULL) { in ipheth_disconnect()
566 unregister_netdev(dev->net); in ipheth_disconnect()
567 ipheth_kill_urbs(dev); in ipheth_disconnect()
568 ipheth_free_urbs(dev); in ipheth_disconnect()
569 kfree(dev->ctrl_buf); in ipheth_disconnect()
570 free_netdev(dev->net); in ipheth_disconnect()
573 dev_info(&intf->dev, "Apple iPhone USB Ethernet now disconnected\n"); in ipheth_disconnect()