迴環網卡驅動

#include <linux/kernel.h>
#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/string.h>
#include <linux/socket.h>
#include <linux/errno.h>
#include <linux/fcntl.h>
#include <linux/in.h>
#include <linux/init.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <linux/inet.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/ethtool.h>
#include <net/sock.h>
#include <net/checksum.h>
#include <linux/if_ether.h>    /* For the statistics structure. */
#include <linux/if_arp.h>    /* For ARPHRD_ETHER */
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/percpu.h>

static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)
{

     skb->protocol = eth_type_trans(skb,dev);
    netif_rx(skb);
    return 0;

}
static struct net_device_stats *get_stats(struct net_device *dev)
{
    struct net_device_stats *stats = &dev->stats;
    unsigned long bytes = 0;
    unsigned long packets = 0;
    stats->rx_packets = packets;
    stats->tx_packets = packets;
    stats->rx_bytes = bytes;
    stats->tx_bytes = bytes;

    return stats;
}


struct net_device loopback_dev = {
    .name                 = "lookback",
    .hard_start_xmit    = loopback_xmit,
    .mtu                = (16 * 1024) + 20 + 20 + 12,
    .get_stats            = &get_stats,
    .hard_header_len    = ETH_HLEN, 
    .type                = ARPHRD_LOOPBACK,    
    .flags                = IFF_LOOPBACK,
    .hard_header        = eth_header,    
    .addr_len            = ETH_ALEN,    
    .features            = NETIF_F_SG | NETIF_F_FRAGLIST
#ifdef LOOPBACK_TSO
                          | NETIF_F_TSO
#endif
                          | NETIF_F_NO_CSUM | NETIF_F_HIGHDMA
                          | NETIF_F_LLTX,
};
static int loopback_init()
{
        return register_netdev(&loopback_dev);
    
}
module_init(loopback_init);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章