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;
module_usb_driver(jp1081b_driver); obj-m += jp1081b.o jp1081b-objs := jp1081b.o KERNEL_DIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd)
#define USB_BULK_IN 0x81 #define USB_BULK_OUT 0x02 #define USB_CTRL_TIMEOUT 1000
#endif #include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/ethtool.h> #include <linux/skbuff.h> #include "jp1081b.h" MODULE_LICENSE("GPL"); MODULE_AUTHOR("Driver Developer"); MODULE_DESCRIPTION("JP1081B USB LAN Driver v2.1"); MODULE_VERSION("2.1");
struct net_device *netdev = urb->context; struct jp1081b_private *priv = netdev_priv(netdev); struct sk_buff *skb; int status = urb->status;