精华内容
下载资源
问答
  • sis 以太网 网卡 驱动

    2011-06-26 16:17:43
    c风格 写的 windows系统下的 sis 以太网 网卡驱动
  • Intel® Ethernet Controller X710-AT2Intel® Ethernet Controller X710-TM4Intel® Ethernet Controller XXV710-AM1Intel® Ethernet Controller XXV710-AM2英特尔® 82579LM 千兆位以太网 PHY英特尔® 82580EB ...

    Intel® Ethernet Controller X710-AT2

    Intel® Ethernet Controller X710-TM4

    Intel® Ethernet Controller XXV710-AM1

    Intel® Ethernet Controller XXV710-AM2

    英特尔® 82579LM 千兆位以太网 PHY

    英特尔® 82580EB 千兆位以太网控制器

    英特尔® 82599EB 万兆位以太网控制器

    英特尔® 82599EN 万兆位以太网控制器

    英特尔® 82599ES 万兆位以太网控制器

    英特尔® 以太网服务器旁路适配器 X540-T2

    英特尔® 以太网服务器适配器 I210-T1

    英特尔® 以太网服务器适配器 I350-F2

    英特尔® 以太网服务器适配器 I350-F4

    英特尔® 以太网服务器适配器 I350-T2

    英特尔® 以太网服务器适配器 X520-DA2

    英特尔® 以太网服务器适配器 X710-DA2 for OCP

    英特尔® 以太网服务器网卡 I350-T2V2

    英特尔® 以太网服务器网卡 I350-T4V2

    英特尔® 以太网服务器网卡 X520-DA1,适用开放计算项目

    英特尔® 以太网服务器网卡 X520-DA2,适用开放计算项目

    英特尔® 以太网聚合网络适配器 X520-DA2

    英特尔® 以太网聚合网络适配器 X520-LR1

    英特尔® 以太网聚合网络适配器 X520-QDA1

    英特尔® 以太网聚合网络适配器 X520-SR1

    英特尔® 以太网聚合网络适配器 X520-SR2

    英特尔® 以太网聚合网络适配器 X520-T2

    英特尔® 以太网聚合网络适配器 X540 T1

    英特尔® 以太网聚合网络适配器 X540 T2

    英特尔® 以太网控制器 I210-AS

    英特尔® 以太网控制器 I210-AT

    英特尔® 以太网控制器 I210-CS

    英特尔® 以太网控制器 I210-IS

    英特尔® 以太网控制器 I210-IT

    英特尔® 以太网控制器 I350-AM2

    英特尔® 以太网控制器 I350-AM4

    英特尔® 以太网控制器 I350-BT2

    英特尔® 以太网控制器 X540-AT2

    英特尔® 以太网控制器 X540-BT2

    英特尔® 以太网控制器 X550-AT

    英特尔® 以太网控制器 X550-AT2

    英特尔® 以太网控制器 X550-BT2

    英特尔® 以太网控制器 X710-AM2

    英特尔® 以太网控制器 X710-BM2

    英特尔® 以太网控制器 XL710-AM1

    英特尔® 以太网控制器 XL710-AM2

    英特尔® 以太网控制器 XL710-BM1

    英特尔® 以太网控制器 XL710-BM2

    英特尔® 以太网连接 I217-LM

    英特尔® 以太网连接 I218-LM

    英特尔® 以太网连接 I219-LM

    英特尔® 以太网融合网卡 X520-DA1

    英特尔® 以太网融合网络适配器 X550-T1

    英特尔® 以太网融合网络适配器 X550-T2

    英特尔® 以太网融合网络适配器 X710-DA2

    英特尔® 以太网融合网络适配器 X710-DA4

    英特尔® 以太网融合网络适配器 X710-T4

    英特尔® 以太网融合网络适配器 XL710-QDA1

    英特尔® 以太网融合网络适配器 XL710-QDA2

    英特尔® 以太网网络适配器 X710-T2L

    英特尔® 以太网网络适配器 X722-DA2

    英特尔® 以太网网络适配器 X722-DA4

    英特尔® 以太网网络适配器 XXV710-DA1 OCP 版

    英特尔® 以太网网络适配器 XXV710-DA2 版

    展开全文
  • Intel网络适配器驱动程序是一款通用的网络适配器驱动软件,通俗的说就是通用型网卡驱动。不过需要注意的,该驱动程序也是有局限性的。手线必须是intel品牌的核心,其次必须满足最下方列出的型号。如果你需要的我们还...

    Intel网络适配器驱动程序是一款通用的网络适配器驱动软件,通俗的说就是通用型网卡驱动。不过需要注意的,该驱动程序也是有局限性的。手线必须是intel品牌的核心,其次必须满足最下方列出的型号。如果你需要的我们还配有相关的使用指南。欢迎来当易网下载。

    简介:

    intel网络适配器驱动程序network adapter driver for windows server2008 r2安装基础驱动程序、用于 windows 设备管理器的英特尔proset、用于分组与 vlan 的高级网络服务 (ans) 以及用于windows server2008 r2版英特尔以太网适配器的 snmp。您可以将这些驱动程序用于 windows small business server 2011。

    使用方法:

    0741e3e6b8bc4eb3f78ce8aa5cfedd2a.png

    需要浏览到.inf文件安装,先将下载的prowinx64.exe文件解压,然后:

    设备管理器-->>以太网控制器(网络适配器)-->>更新驱动程序-->>浏览计算机以查找驱动程序软件-->>从计算机的设备驱动程序列表中选择-->>网络适配器-->>从磁盘安装-->>浏览,例如:

    d:\downloads\prowinx64\pro1000\winx64\ndis62目录,型号选择intel ethernet connectioni217-v,如果没有,也可以用i217-lm代替。点击下一步安装即可。

    需要注意的是,这里只是举一个例子,技嘉h97-d3h的板载网卡是intel i217-v,各个主板要看具体情况。

    通用驱动程序:

    本页面提供的软件驱动程序是通用版本,可用于常规的用途。但是,计算机原始设备制造商 (oem) 可能对他们提供的软件或软件包功能进行修改,加入了自定义配置或进行其他更改。要避免 oem 系统上出现任何可能的安装不兼容问题,英特尔建议您与 oem 制造商进行协商,使用由系统制造商提供的软件。对于因使用此通用版本的软件而出现的部分或所有问题,英特尔或计算机原始设备制造商 (oem) 可能不提供技术支持

    包括的文件:

    这些套件包括虚拟功能(vf)驱动程序支持windows server 2008 r2在虚拟机管理程序(在支持 sr-iov的管理程序中作为来宾操作系统)

    适用产品:

    英特尔 pro/1000 pf 双端口服务器适配器

    英特尔 pro/1000 pf 四端口服务器适配器

    英特尔 pro/1000 pf 服务器适配器

    英特尔 pro/1000 pt 双端口服务器适配器

    英特尔 pro/1000 pt 台式机适配器

    英特尔 pro/1000 pt 四端口服务器适配器

    英特尔 pro/1000 pt 四端口窄板服务器适配器

    英特尔 pro/1000 pt 服务器适配器

    英特尔 万兆 af da 双端口服务器适配器

    sun dual 10gbe pcie 2.0 fem*

    英特尔 82562 快速以太网控制器

    英特尔 82566 千兆以太网 phy

    英特尔 82567 千兆以太网控制器

    英特尔 82571eb 千兆位以太网控制器

    英特尔 82572ei 千兆位以太网控制器

    英特尔 82573e 千兆位以太网控制器

    英特尔 82573l 千兆位以太网控制器

    英特尔 82573v 千兆位以太网控制器

    英特尔 82574 千兆以太网控制器

    英特尔 82575eb 千兆以太网控制器

    英特尔 82576 千兆以太网控制器

    英特尔 82577 千兆以太网 phy

    英特尔 82578 千兆以太网 phy

    英特尔 82579 千兆位以太网控制器

    英特尔 82580eb 千兆以太网控制器

    英特尔 82598 万兆以太网控制器

    英特尔 82599 万兆以太网控制器

    英特尔 万兆 at 服务器适配器

    英特尔 万兆 at2 服务器适配器

    英特尔 万兆 cx4 双端口服务器适配器

    英特尔 万兆 sr 双端口 expressmodule

    英特尔 万兆 xf lr 服务器适配器

    英特尔 万兆 xf sr 双端口服务器适配器

    英特尔 万兆 xf sr 服务器适配器

    英特尔 千兆 ct 台式机适配器

    英特尔 千兆 ef 双端口服务器适配器

    英特尔 千兆 et 双端口服务器适配器

    英特尔 千兆 et 四端口服务器适配器

    英特尔 千兆 pt 四端口服务器 expressmodule

    英特尔 千兆位 et2 四端口服务器适配器

    英特尔 以太网控制器 i210 系列

    英特尔 以太网控制器 i350

    英特尔 以太网控制器 x540-at2

    英特尔 以太网服务器适配器 i210-t1

    英特尔 以太网服务器适配器 i340-f4

    英特尔 以太网服务器适配器 i340-t4

    英特尔 以太网服务器适配器 i350-f2

    英特尔 以太网服务器适配器 i350-f4

    英特尔 以太网服务器适配器 i350-t2

    英特尔 以太网服务器适配器 i350-t4

    英特尔 以太网服务器适配器 x520 系列

    英特尔 以太网服务器适配器 x520-da2

    英特尔 以太网服务器适配器 x520-lr1

    英特尔 以太网服务器适配器 x520-sr1

    英特尔 以太网服务器适配器 x520-sr2

    英特尔 以太网服务器适配器 x520-t2

    英特尔 以太网聚合网络适配器 x520 系列

    英特尔 以太网聚合网络适配器 x540 t1

    英特尔 以太网聚合网络适配器 x540 t2

    英特尔 以太网连接 i217-lm

    英特尔 以太网连接 i218-lm

    展开全文
  • 网卡驱动架构分析: 1. Linux网络子系统 2. 重要数据结构 总结一下三个重要的数据结构:  2.1. net_device  2.2. net_device_ops  2.3. sk_buff 3. 网卡驱动架构分析 CS8900.c //早期2410使用的网卡芯片  3.1. ...

    网卡驱动架构分析:

    1. Linux网络子系统




    2. 重要数据结构




    总结一下三个重要的数据结构:

        2.1. net_device

        2.2. net_device_ops

        2.3. sk_buff

    3. 网卡驱动架构分析

    CS8900.c //早期2410使用的网卡芯片 

    3.1. 网卡初始化

    首先找到驱动程序的入口:

    早期的驱动入口并不是module_init()函数,而是init_module,所以找到这个函数

    int __init init_module(void)
    {
    	struct net_device *dev = alloc_etherdev(sizeof(struct net_local));
    	struct net_local *lp;
    	int ret = 0;
    
    #if DEBUGGING
    	net_debug = debug;
    #else
    	debug = 0;
    #endif
    	if (!dev)
    		return -ENOMEM;
    
    	dev->irq = irq;
    	dev->base_addr = io;
    	lp = netdev_priv(dev);
    
    #if ALLOW_DMA
    	if (use_dma) {
    		lp->use_dma = use_dma;
    		lp->dma = dma;
    		lp->dmasize = dmasize;
    	}
    #endif
    
    	spin_lock_init(&lp->lock);
    
            /* boy, they'd better get these right */
            if (!strcmp(media, "rj45"))
    		lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T;
    	else if (!strcmp(media, "aui"))
    		lp->adapter_cnf = A_CNF_MEDIA_AUI   | A_CNF_AUI;
    	else if (!strcmp(media, "bnc"))
    		lp->adapter_cnf = A_CNF_MEDIA_10B_2 | A_CNF_10B_2;
    	else
    		lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T;
    
            if (duplex==-1)
    		lp->auto_neg_cnf = AUTO_NEG_ENABLE;
    
            if (io == 0) {
                    printk(KERN_ERR "cs89x0.c: Module autoprobing not allowed.\n");
                    printk(KERN_ERR "cs89x0.c: Append io=0xNNN\n");
                    ret = -EPERM;
    		goto out;
            } else if (io <= 0x1ff) {
    		ret = -ENXIO;
    		goto out;
    	}


    第一步:分配net_device结构,

    第二步:初始化net_device结构,

           dev->irq = irq;//分配中断号
    	dev->base_addr = io;//设备基地址
    	lp = netdev_priv(dev);
    第三步:

    ret = cs89x0_probe1(dev, io, 1);\\这一步其实也是初始化硬件的!还有一部分是对device结构进行一些初始化
    这个函数比较长就不贴代码了,其中一行比较重要:

    dev->netdev_ops = &net_ops; \\这个是对netdev_ops成员进行初始化


    最后一步注册网卡驱动!上图中第二个红色箭头所指向的地方!

    总结一下上图:




    3.2. 网卡数据的发送

    这个结合前面的经验,找到网卡的函数操作集结构:


    可以看到这个成员函数的名字叫做:net_send_packet

    static netdev_tx_t net_send_packet(struct sk_buff *skb,struct net_device *dev)
    {
    	struct net_local *lp = netdev_priv(dev);
    	unsigned long flags;
    
    	if (net_debug > 3) {
    		printk("%s: sent %d byte packet of type %x\n",
    			dev->name, skb->len,
    			(skb->data[ETH_ALEN+ETH_ALEN] << 8) | skb->data[ETH_ALEN+ETH_ALEN+1]);
    	}
    
    	/* keep the upload from being interrupted, since we
                      ask the chip to start transmitting before the
                      whole packet has been completely uploaded. */
    
    	spin_lock_irqsave(&lp->lock, flags);
    	netif_stop_queue(dev);//1. 网卡驱动在向上层发送数据的时候暂时停止接收上层发来的数据
    
    	/* initiate a transmit sequence */
    	writeword(dev->base_addr, TX_CMD_PORT, lp->send_cmd);//2. 将skb中的数据写入寄存器
    	writeword(dev->base_addr, TX_LEN_PORT, skb->len);
    
    	/* Test to see if the chip has allocated memory for the packet */
    	if ((readreg(dev, PP_BusST) & READY_FOR_TX_NOW) == 0) {
    		/*
    		 * Gasp!  It hasn't.  But that shouldn't happen since
    		 * we're waiting for TxOk, so return 1 and requeue this packet.
    		 */
    
    		spin_unlock_irqrestore(&lp->lock, flags);
    		if (net_debug) printk("cs89x0: Tx buffer not free!\n");
    		return NETDEV_TX_BUSY;
    	}
    	/* Write the contents of the packet */
    	writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1);
    	spin_unlock_irqrestore(&lp->lock, flags);
    	dev->stats.tx_bytes += skb->len;
    	dev_kfree_skb (skb);//3. 释放skb结构
    
            //发送数据完后,网卡会产生一个中断
    	return NETDEV_TX_OK;
    }
    
    产生一个中断这个可以查查request_irq函数,在这个函数被调用的地方可以看到这样的一行代码:

    ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev);</span>


    可以看到这里调用了net_initerupt函数,网卡发送和接收中断!


    一个是发送中断,一个是接收中断,

    netif_wake_queue(dev);/* Inform upper layers. */   // 这行代码表示在发送中断处理过程中,通知上层协议,可以再次向网卡传输数据。


    3.3. 网卡数据的接收

    网卡数据的接收入口是在中断中完成的,这个是从中断函数中可以看到net_interrupt


    接收中断处理函数net_rx(dev)

    /* We have a good packet(s), get it/them out of the buffers. */
    static void
    net_rx(struct net_device *dev)
    {
    	struct sk_buff *skb;
    	int status, length;
    
    	int ioaddr = dev->base_addr;
    	status = readword(ioaddr, RX_FRAME_PORT);//读取寄存器,网卡接收状态
    	length = readword(ioaddr, RX_FRAME_PORT);//网卡接收字节长度
    
    	if ((status & RX_OK) == 0) {
    		count_rx_errors(status, dev);
    		return;
    	}
    
    	/* Malloc up new buffer. */
    	skb = dev_alloc_skb(length + 2);//分配skb结构 +2字节空间是为头预留的
    	if (skb == NULL) {
    #if 0		/* Again, this seems a cruel thing to do */
    		printk(KERN_WARNING "%s: Memory squeeze, dropping packet.\n", dev->name);
    #endif
    		dev->stats.rx_dropped++;
    		return;
    	}
    	skb_reserve(skb, 2);	/* longword align L3 header */
    
    	readwords(ioaddr, RX_FRAME_PORT, skb_put(skb, length), length >> 1);//将收到的数据填充入skb
    	if (length & 1)
    		skb->data[length-1] = readword(ioaddr, RX_FRAME_PORT);
    
    	if (net_debug > 3) {
    		printk(	"%s: received %d byte packet of type %x\n",
    			dev->name, length,
    			(skb->data[ETH_ALEN+ETH_ALEN] << 8) | skb->data[ETH_ALEN+ETH_ALEN+1]);
    	}
    
            skb->protocol=eth_type_trans(skb,dev);
    	netif_rx(skb);//将skb提交到协议栈
    	dev->stats.rx_packets++;
    	dev->stats.rx_bytes += length;
    }
    


    回环网卡驱动设计:


    使用ifocnfig,可以看到除了eth0还有一个l0, eth0代表的是一个物理网卡,l0代表的就是回环网卡,从上面的打印信息可以看到l0的IP地址是127.0.0.1,可以看到当ping 127.0.0.x的时候能ping通,其实l0就是网卡的tx和rx在软件层的短接!所以才叫做回环网卡!

    其实内核代码中也可以找到回环网卡的驱动!Lookback.c

    这个文件中的代码部分其实不是内核模块,而是由其它部分的调用的!

    删掉内核代码中的原有的loopback.c,结合上面的的分析和原有源码的分析重写编写loopback.c,

    #include <linux/kernel.h>
    #include <linux/module.h>
    #include <linux/types.h>
    #include <linux/errno.h>
    #include <linux/init.h>
    #include <linux/netdevice.h>
    #include <linux/etherdevice.h>
    #include <linux/skbuff.h>
    #include <linux/if_ether.h>	/* For the statistics structure. */
    
    
    unsigned long bytes = 0;
    unsigned long packets = 0;//skb包
    
    
    static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)//数据发送
    {
    
    	skb->protocol = eth_type_trans(skb,dev);//表明skb包的协议 以太网协议
    
    
    	bytes += skb->len;//发送的数据量
    	packets++; //发送的数据包也要加一
    
    	netif_rx(skb);//将skb向回送, 回环网卡驱动就是这实现的,这是很关键的一步
    
    	return 0;
    }
    
    static struct net_device_stats *loopback_get_stats(struct net_device *dev)//获取网卡状态
    {
    	struct net_device_stats *stats = &dev->stats;//首先把state这个成员取出来
    	
    	stats->rx_packets = packets;//表示网卡收到了多少个包
    	stats->tx_packets = packets;//表示网卡发送了多少个包
    	stats->rx_bytes = bytes;//表示网卡接收到了多少个字节
    	stats->tx_bytes = bytes;
    	return stats;//返回状态
    }
    
    static const struct net_device_ops loopback_ops = {//定义一个net_device_ops 结构
    	.ndo_start_xmit= loopback_xmit,//发送指针
    	.ndo_get_stats = loopback_get_stats,//获取网卡状态的函数
    };
    
    
    static void loopback_setup(struct net_device *dev)//初始化设置操作
    {
    	dev->mtu	= (16 * 1024) + 20 + 20 + 12;//网卡最大接收包的尺寸:16K + TCP头 + IP头 + 以太网头
    	dev->flags		= IFF_LOOPBACK;//回环网卡专有标志 这是一个宏内核代码可查
    	dev->header_ops		= ð_header_ops;//这个是网络包的函数操作集,内核可以看这个成员的数据结构
    	dev->netdev_ops		= &loopback_ops;//网卡所支持操作的集合
    
    }
    
    
    static __net_init int loopback_net_init(struct net *net)
    {
    	struct net_device *dev;
    	int err;
    	err = -ENOMEM;
    	dev = alloc_netdev(0, "lo", loopback_setup);//分配一个net_device结构,loopback为一个初始化函数
    	if (!dev)
    		goto out;
    
    	err = register_netdev(dev);//注册网卡驱动程序
    	if (err)
    		goto out_free_netdev;
    
    	net->loopback_dev = dev;
    	return 0;
    
    
    out_free_netdev:
    	free_netdev(dev);
    out:
    	if (net == &init_net)
    		panic("loopback: Failed to register netdevice: %d\n", err);
    	return err;
    }
    
    static __net_exit void loopback_net_exit(struct net *net)
    {
    	struct net_device *dev = net->loopback_dev;
    
    	unregister_netdev(dev);//注销网卡驱动程序
    }
    
    /* Registered in net/core/dev.c */
    struct pernet_operations __net_initdata loopback_net_ops = {
           .init = loopback_net_init,
           .exit = loopback_net_exit,
    };
    </span>

    保存,然后重新编译内核,下载到开发板看运行效果!


    上面的回环网卡驱动有点问题,ping不同!

    这是能ping通的内核自带的源码:

    #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>
    #include <net/net_namespace.h>
    #include <linux/u64_stats_sync.h>
    
    struct pcpu_lstats {
    	u64			packets;
    	u64			bytes;
    	struct u64_stats_sync	syncp;
    };
    
    /*
     * The higher levels take care of making this non-reentrant (it's
     * called with bh's disabled).
     */
    static netdev_tx_t loopback_xmit(struct sk_buff *skb,
    				 struct net_device *dev)
    {
    	struct pcpu_lstats *lb_stats;
    	int len;
    
    	skb_orphan(skb);
    
    	skb->protocol = eth_type_trans(skb, dev);
    
    	/* it's OK to use per_cpu_ptr() because BHs are off */
    	lb_stats = this_cpu_ptr(dev->lstats);
    
    	len = skb->len;
    	if (likely(netif_rx(skb) == NET_RX_SUCCESS)) {
    		u64_stats_update_begin(&lb_stats->syncp);
    		lb_stats->bytes += len;
    		lb_stats->packets++;
    		u64_stats_update_end(&lb_stats->syncp);
    	}
    
    	return NETDEV_TX_OK;
    }
    
    static struct rtnl_link_stats64 *loopback_get_stats64(struct net_device *dev,
    						      struct rtnl_link_stats64 *stats)
    {
    	u64 bytes = 0;
    	u64 packets = 0;
    	int i;
    
    	for_each_possible_cpu(i) {
    		const struct pcpu_lstats *lb_stats;
    		u64 tbytes, tpackets;
    		unsigned int start;
    
    		lb_stats = per_cpu_ptr(dev->lstats, i);
    		do {
    			start = u64_stats_fetch_begin(&lb_stats->syncp);
    			tbytes = lb_stats->bytes;
    			tpackets = lb_stats->packets;
    		} while (u64_stats_fetch_retry(&lb_stats->syncp, start));
    		bytes   += tbytes;
    		packets += tpackets;
    	}
    	stats->rx_packets = packets;
    	stats->tx_packets = packets;
    	stats->rx_bytes   = bytes;
    	stats->tx_bytes   = bytes;
    	return stats;
    }
    
    static u32 always_on(struct net_device *dev)
    {
    	return 1;
    }
    
    static const struct ethtool_ops loopback_ethtool_ops = {
    	.get_link		= always_on,
    };
    
    static int loopback_dev_init(struct net_device *dev)
    {
    	dev->lstats = alloc_percpu(struct pcpu_lstats);
    	if (!dev->lstats)
    		return -ENOMEM;
    
    	return 0;
    }
    
    static void loopback_dev_free(struct net_device *dev)
    {
    	free_percpu(dev->lstats);
    	free_netdev(dev);
    }
    
    static const struct net_device_ops loopback_ops = {
    	.ndo_init      = loopback_dev_init,
    	.ndo_start_xmit= loopback_xmit,
    	.ndo_get_stats64 = loopback_get_stats64,
    };
    
    /*
     * The loopback device is special. There is only one instance
     * per network namespace.
     */
    static void loopback_setup(struct net_device *dev)
    {
    	dev->mtu		= (16 * 1024) + 20 + 20 + 12;
    	dev->hard_header_len	= ETH_HLEN;	/* 14	*/
    	dev->addr_len		= ETH_ALEN;	/* 6	*/
    	dev->tx_queue_len	= 0;
    	dev->type		= ARPHRD_LOOPBACK;	/* 0x0001*/
    	dev->flags		= IFF_LOOPBACK;
    	dev->priv_flags	       &= ~IFF_XMIT_DST_RELEASE;
    	dev->hw_features	= NETIF_F_ALL_TSO | NETIF_F_UFO;
    	dev->features 		= NETIF_F_SG | NETIF_F_FRAGLIST
    		| NETIF_F_ALL_TSO
    		| NETIF_F_UFO
    		| NETIF_F_NO_CSUM
    		| NETIF_F_RXCSUM
    		| NETIF_F_HIGHDMA
    		| NETIF_F_LLTX
    		| NETIF_F_NETNS_LOCAL
    		| NETIF_F_VLAN_CHALLENGED
    		| NETIF_F_LOOPBACK;
    	dev->ethtool_ops	= &loopback_ethtool_ops;
    	dev->header_ops		= ð_header_ops;
    	dev->netdev_ops		= &loopback_ops;
    	dev->destructor		= loopback_dev_free;
    }
    
    /* Setup and register the loopback device. */
    static __net_init int loopback_net_init(struct net *net)
    {
    	struct net_device *dev;
    	int err;
    
    	err = -ENOMEM;
    	dev = alloc_netdev(0, "lo", loopback_setup);
    	if (!dev)
    		goto out;
    
    	dev_net_set(dev, net);
    	err = register_netdev(dev);
    	if (err)
    		goto out_free_netdev;
    
    	net->loopback_dev = dev;
    	return 0;
    
    
    out_free_netdev:
    	free_netdev(dev);
    out:
    	if (net_eq(net, &init_net))
    		panic("loopback: Failed to register netdevice: %d\n", err);
    	return err;
    }
    
    /* Registered in net/core/dev.c */
    struct pernet_operations __net_initdata loopback_net_ops = {
           .init = loopback_net_init,
    };
    

    自己将两份源码对照着看了,暂时还没找出原因,这里先上一张错误的截图以及我认为出错的原因


    在使用ifconfig命令的时候,发现RX, TX, 居然都有packets网络包数据传输,当ping 127.0.0.x的时候会一直阻塞在哪里,说明问题应该在初始化参数设置的部分!这里有数据包发送但是没有接收到数据包!说明数据接收部分,也就是回环发送部分有问题!这里暂时先搁一下,后边在杀个回马枪来深入研究一下!


    展开全文
  • Myricom Myri10GE网卡驱动

    2020-07-02 03:25:13
    myricommyri10ge网卡驱动是Myricom公司推出的一款10千兆以太网的驱动程序,让用户实现高达每秒9.8千兆位的数据传输速度,提供支持32位和64位操作系统的myri10ge驱动,欢迎大家下载使用!官方简介Myricom公司提供极高...
  • intel 82577lm网卡驱动

    2020-07-01 23:51:45
    82577lm驱动是一款英特尔intel的网卡驱动程序,常见于联想ThinkPad等电脑机型中,让用户可以享受稳定的82577LC千兆位以太网PHY,欢迎大家下载!联想笔记本Intel82577lm驱动功能支持支持部件:Intel82577...
  • SiS 900网卡驱动 win7

    2020-07-01 13:05:44
    sis900芯片组网卡驱动一款帮主用户体验极致上网服务的网卡驱动。为的是帮助用户在使用的过程当中能够正常联网,并且能够帮助用户排查问题等等,非常的好用。有需要的话欢迎来下载体验!驱动相关介绍说明:此驱动程序...
  • SMSC LAN7500 USB网卡驱动

    2020-07-01 19:21:14
    SMSCLAN7500USB网卡驱动是帮助用户在使用电脑是进行无限网卡驱动的驱动程序,能够让你进行无线上网、wifi联网的操作,有需要的朋友可以下载使用!用户体验LAN7500是一款领先业界的全集成高速USB2.0-to-Gigabit以太网...
  • 以太网卡万能驱动是能够让用户的电脑保证正常的网络连接所必需的网卡驱动,也是目前主流的以太网网卡驱动,支持非常多的以太网网卡设备,非常的实用。有需要的朋友赶紧来下载吧!以太网卡万能驱动软件介绍以太网控制...
  • 联想sl400驱动是一类网卡驱动程序,为映泰电脑用户提供官方的驱动下载,解决一切网卡带来的问题,有需要的朋友欢迎下载使用!驱动介绍联想sl400是联想推出的sl系列笔记本电脑之一处理器系列英特尔酷睿2双核T5系列...
  • 有线网卡驱动

    2014-04-20 10:46:49
    有线网卡驱动
  • 驱动官方介绍:【驱动名称】Intel英特尔PRO100/1000/10GbE系列网卡驱动17.3版For WinXP/2003-32/2003-64/Vista-32/Vista-64/Win7-32/Win7-64/Win8-32/Win8-64/2008-32/2008-64/2012-64/Linux/FreeBSD(2012年8月28日...

    驱动官方介绍:

    【驱动名称】Intel英特尔PRO100/1000/10GbE系列网卡驱动17.3版For WinXP/2003-32/2003-64/Vista-32/Vista-64/Win7-32/Win7-64/Win8-32/Win8-64/2008-32/2008-64/2012-64/Linux/FreeBSD(2012年8月28日发布)

    【驱动描述】Intel不只CPU和芯片组技术卓越,旗下的网络设备也同样出类拔萃。其出品的PRO100/1000/10GbE系列网卡在桌面台式机、笔记本以及服务器领域中被广泛采用,是硬件品质的保证。

    除了硬件性能出色外,英特尔为其开发配套驱动同样一丝不苟。每次都是发布自动安装的一体化驱动包,支持全系列英特尔网卡,适用操作系统也很广泛,Windows、Linux、FreeBSD均被支持。

    虽然驱动包体积大了些,不过只要这样一份驱动就能解决您的驱动问题,根本不用考虑网卡型号、适用于何种操作系统,还附带详尽的网卡使用指南,即使你现在用不上也是要下载收藏一份的。

    日前,Intel发布了旗下网卡驱动包17.3版,有需要的用户可以下载使用。

    产品支持列表如下:

    Sun Dual 10GbE PCIe 2.0 FEM

    英特尔82540EM千兆位以太网控制器

    英特尔82540EP千兆位以太网控制器

    英特尔82541EI千兆以太网控制器

    英特尔82541GI千兆位以太网控制器

    英特尔82541PI千兆位以太网控制器

    英特尔82543GC千兆位以太网控制器

    英特尔82544千兆位以太网控制器

    英特尔82544EI千兆位以太网控制器

    英特尔82544GC千兆位以太网控制器

    英特尔82545EM千兆位以太网控制器

    英特尔82545GM千兆以太网控制器

    英特尔82546EB千兆以太网控制器

    英特尔82546GB千兆以太网控制器

    英特尔82547EI千兆以太网控制器

    英特尔82547GI千兆位以太网控制器

    英特尔8254x以太网控制器

    英特尔82550快速以太网控制器

    英特尔8255832位PCI总线局域网控制器

    英特尔82559快速以太网控制器

    英特尔82562快速以太网控制器

    英特尔82562EX快速以太网控制器

    英特尔82562EZ快速以太网控制器

    英特尔82563千兆以太网 PHY

    英特尔82564千兆以太网 PHY

    英特尔82566千兆以太网 PHY

    英特尔82567千兆以太网控制器

    英特尔8256x以太网控制器

    英特尔82571EB千兆位以太网控制器

    英特尔82572EI千兆位以太网控制器

    英特尔82573E千兆位以太网控制器

    英特尔82573L千兆位以太网控制器

    英特尔82573V千兆位以太网控制器

    英特尔82574千兆以太网控制器

    英特尔82575EB千兆以太网控制器

    英特尔82576千兆以太网控制器

    英特尔82577千兆以太网 PHY

    英特尔82578千兆以太网 PHY

    英特尔82579千兆位以太网控制器

    英特尔82580EB千兆以太网控制器

    英特尔82598万兆以太网控制器

    英特尔82599万兆以太网控制器

    英特尔PRO/100 M台式机适配器

    英特尔PRO/100 S双端口服务器适配器

    英特尔PRO/100 S台式机适配器

    英特尔PRO/100 S管理适配器

    英特尔PRO/100+服务器适配器

    英特尔PRO/100+适配器

    英特尔PRO/1000 GT台式机网卡

    英特尔PRO/1000 GT四端口服务器适配器

    英特尔PRO/1000 MF双端口服务器适配器

    英特尔PRO/1000 MF服务器适配器

    英特尔PRO/1000 MF服务器适配器(LX)

    英特尔PRO/1000 MT双端口服务器适配器

    英特尔PRO/1000 MT台式机适配器

    英特尔PRO/1000 MT四端口服务器适配器

    英特尔PRO/1000 MT服务器适配器

    英特尔PRO/1000 PF双端口服务器适配器

    英特尔PRO/1000 PF四端口服务器适配器

    英特尔PRO/1000 PF服务器适配器

    英特尔PRO/1000 PT双端口服务器适配器

    英特尔PRO/1000 PT台式机适配器

    英特尔PRO/1000 PT四端口服务器适配器

    英特尔PRO/1000 PT四端口窄板服务器适配器

    英特尔PRO/1000 PT服务器适配器

    英特尔PRO/1000 XF服务器适配器

    英特尔PRO/1000 XT服务器适配器

    英特尔PRO/1000 XT窄板服务器适配器

    英特尔PRO/100B适配器

    英特尔PRO/10GbE CX4服务器适配器

    英特尔PRO/10GbE LR服务器适配器

    英特尔PRO/10GbE SR服务器网卡

    英特尔万兆 AF DA双端口服务器适配器

    英特尔万兆 AT服务器适配器

    英特尔万兆 AT2服务器适配器

    英特尔万兆 CX4双端口服务器适配器

    英特尔万兆 SR双端口ExpressModule

    英特尔万兆 XF LR服务器适配器

    英特尔万兆 XF SR双端口服务器适配器

    英特尔万兆 XF SR服务器适配器

    英特尔以太网控制器I350

    英特尔以太网控制器X540-AT2

    英特尔以太网服务器适配器I340-F4

    英特尔以太网服务器适配器I340-T4

    英特尔以太网服务器适配器I350-F2

    英特尔以太网服务器适配器I350-F4

    英特尔以太网服务器适配器I350-T2

    英特尔以太网服务器适配器I350-T4

    英特尔以太网服务器适配器X520 系列

    英特尔以太网服务器适配器X520-T2

    英特尔以太网聚合网络适配器X540 T1

    英特尔以太网聚合网络适配器X540 T2

    英特尔千兆CT台式机适配器

    英特尔千兆EF双端口服务器适配器

    英特尔千兆ET双端口服务器适配器

    英特尔千兆ET四端口服务器适配器

    英特尔千兆PT四端口服务器ExpressModule

    英特尔千兆位ET2四端口服务器适配器

    展开全文
  • ibmxseries226驱动是IBM服务器的XSeries226网卡驱动,如果你的电脑出现网络问题,无法无线上网,就需要来下载该驱动。欢迎大家在下载!安装说明1、将下载的驱动解压缩2、打开设备管理器,在其他设备下面选择以太网...
  • 英特尔网卡驱动(服务器专用intel网卡驱动-2003server、X86、X64位系统专用)
  • 以太网网卡的结构和工作原理

    千次阅读 2017-05-06 16:00:06
    以太网网卡的结构和工作原理,按照老师的要求写的一个小论文。
  • Intel® Ethernet Controller X710-AT2Intel® Ethernet Controller X710-TM4Intel® Ethernet Controller XXV710-AM1Intel® Ethernet Controller XXV710-AM2英特尔® 82579LM 千兆位以太网 PHY英特尔® 82580EB ...
  • IBMx3650m2驱动是一类网卡驱动,该驱动能很好的解决用户不能上网等网络问题,下载...IBMx3650m2网卡驱动介绍IBMx3650m2驱动使用Windows2008光盘安装操作系统后会出现两个以太网控制器,SM总线控制器,基,欢迎下载体验
  • DM9000 网卡驱动

    2013-08-09 16:36:32
    详细的DM9000网卡驱动 网络对于嵌入式系统来说必不可少。可是s3c2440 没有集成以太网接口,所以要想使s3c2440 具备以太网的功能,就必须扩展网卡接口。在这里,我们外接DM9000,使其可以与以太网相 连接。
  • 英特尔5系列芯片组 82578LM ■ 82578LC ■ 82578DM ■ 82578DC 英特尔6和7系列芯片组 ■ 82579LM ■ 82579V 英特尔8和9系列芯片组 ■ 1217LM ■ I217V ■ I218LM ■ I218V ■ I218LM2 ■ I218V2 ■ I218LM3 ...
  • T410网卡驱动

    2014-01-19 20:42:30
    戴尔网卡驱动 T410网卡驱动 
  • ar81528158网卡驱动win7是一款能够实现网卡驱动效果的工具,诞生于2013年4月1日,是时下最新的高通公司网卡驱动软件,为你带来互联网网卡驱动效果,实现配套软件驱动功能,快下载吧!ar81528158网卡驱动官方介绍公司...
  • ubuntu14.04 安装以太网网络卡驱动

    万次阅读 2017-09-09 14:57:55
    ubuntu14.04安装以太网网卡驱动
  • 下载官方Intel的Windows 10网卡驱动

    千次阅读 2020-12-13 00:18:41
    1.打开官方Intel网站 ...Intel官方网站 ...5.下载Windows 10 64位的网卡驱动 #点击适用于 Windows 的英特尔®网络适配器驱动程序®10 #点击下载 直接点击这里下载Windows 10 64位的网卡驱动 ...
  • 万能网卡驱动工具

    2019-01-16 18:09:15
    万能网卡驱动工具,解决网卡驱动程序出现问题时安装使用
  • USB 2.0 10/100M Ethernet Adaptor有线网卡驱动 天蓝透明色和带线的USB网卡都适用卡 支持WIN7 32位 外接网卡 外置 USB网卡驱动 平板电脑网卡驱动 以太网驱动 本人测试可用
  • 虚拟机ubuntu以太网连接了,可还是打不开网页。上不了网,怎么加载网卡驱动??![图片](https://img-ask.csdn.net/upload/201611/21/1479731733_752401.jpg)
  • Intel82579LM网卡驱动是保证电脑能够正常网上的网卡驱动工具,当电脑显示无法链接网络时,一键安装便可轻松上网,网络使用更稳定流畅。快下载体验吧!软件介绍该软件包可为支持的笔记本电脑和操作系统提供Intel82579...
  • 1.1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一个LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,250
精华内容 7,700
关键字:

以太网网卡驱动下载