Jp1081b Usb - Lan Driver 21
priv = netdev_priv(netdev); priv->udev = udev; priv->netdev = netdev; spin_lock_init(&priv->lock);
usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe, skb->data, skb->len, jp1081b_tx_complete, skb);
return 0;
static int jp1081b_probe(struct usb_interface *intf, const struct usb_device_id *id) Jp1081b Usb Lan Driver 21
netif_start_queue(netdev); return 0;
#define JP1081B_VENDOR_ID 0x0b95 // ASIX Electronics #define JP1081B_PRODUCT_ID 0x1790 // AX88179
static const struct net_device_ops jp1081b_netdev_ops = .ndo_open = jp1081b_open, .ndo_stop = jp1081b_stop, .ndo_start_xmit = jp1081b_start_xmit, .ndo_set_mac_address = eth_mac_addr, ; priv = netdev_priv(netdev)
static struct usb_driver jp1081b_driver = .name = "jp1081b", .id_table = jp1081b_table, .probe = jp1081b_probe, .disconnect = jp1081b_disconnect, ;
struct jp1081b_private *priv = netdev_priv(netdev); int ret;
if (status) if (status != -ENOENT && status != -ECONNRESET) dev_err(&priv->udev->dev, "RX URB error: %d\n", status); return; udev = udev
struct usb_device *udev = interface_to_usbdev(intf); struct net_device *netdev; struct jp1081b_private *priv; int ret;
skb_put_data(skb, priv->rx_buffer, urb->actual_length); skb->protocol = eth_type_trans(skb, netdev); netif_rx(skb); netdev->stats.rx_packets++; netdev->stats.rx_bytes += urb->actual_length;