Jp1081b Usb Lan Driver 21 Direct
static int jp1081b_stop(struct net_device *netdev)
struct jp1081b_private struct usb_device *udev; struct net_device *netdev; struct urb *tx_urb; struct urb *rx_urb; u8 *tx_buffer; u8 *rx_buffer; int rx_pipe; int tx_pipe; int link_status; spinlock_t lock; ;
netif_stop_queue(netdev); return NETDEV_TX_OK; Jp1081b Usb Lan Driver 21
static int jp1081b_send_cmd(struct usb_device *udev, u8 req, u16 val, u16 index, void *data, u16 len)
if (ret == 6 && is_valid_ether_addr(mac_addr)) eth_hw_addr_set(netdev, mac_addr); else eth_random_addr(mac_addr); eth_hw_addr_set(netdev, mac_addr); dev_warn(&priv->udev->dev, "Using random MAC\n"); struct net_device *netdev
#define USB_BULK_IN 0x81 #define USB_BULK_OUT 0x02 #define USB_CTRL_TIMEOUT 1000
usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe, skb->data, skb->len, jp1081b_tx_complete, skb); struct urb *tx_urb
ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC); if (ret) netdev->stats.tx_dropped++; netif_stop_queue(netdev); return NETDEV_TX_BUSY;
static struct usb_driver jp1081b_driver = .name = "jp1081b", .id_table = jp1081b_table, .probe = jp1081b_probe, .disconnect = jp1081b_disconnect, ;
all: $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
static int jp1081b_probe(struct usb_interface *intf, const struct usb_device_id *id)