WEB开发网
开发学院软件开发Shell Linux编程:网络设备驱动详解 阅读

Linux编程:网络设备驱动详解

 2009-06-30 04:36:00 来源:WEB开发网   
核心提示: 10, 读取包的网卡收发包的状态,统计数据static struct net_device_stats *tg3_get_stats(struct net_device *dev){//从硬件相关的寄存器读取数据,Linux编程:网络设备驱动详解(7),累加//stats->rx_packets, stats-

10, 读取包的网卡收发包的状态,统计数据

static struct net_device_stats *tg3_get_stats(struct net_device *dev)

{

//从硬件相关的寄存器读取数据,累加

//stats->rx_packets, stats->tx_packets, stats->rx_bytes, stats->tx_bytes等

}

11, 用户的ioctl命令系统调用

static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)

{

struct mii_ioctl_data *data = (struct mii_ioctl_data *)&ifr->ifr_data;

switch(cmd) {

//ethtool程序命令的调用

case SIOCETHTOOL:

return tg3_ethtool_ioctl(dev, (void *) ifr->ifr_data);

//mii程序命令的调用

case SIOCGMIIREG: {

err = tg3_readphy(tp, data->reg_num & 0x1f, &mii_regval)

data->val_out = mii_regval;

return err;

}

……

}

}

12, PCI设备的挂起和恢复函数

static int tg3_suspend(struct pci_dev *pdev, u32 state)

{

//停用网卡的中断寄存器

tg3_disable_ints(tp);

//停止网卡收发包

netif_device_detach(dev);

//停止网卡某些硬件,fireware的一些功能

tg3_halt(tp);

//设置网卡的电源状态

tg3_set_power_state(tp, state);

}

static int tg3_resume(struct pci_dev *pdev)

{

//恢复网卡电源

tg3_set_power_state(tp, 0);

//允许网卡收发包

netif_device_attach(dev);

//初始化收发包的缓冲区

tg3_init_rings(tp);

//初始化网卡硬件

tg3_init_hw(tp);

//打开网卡中断寄存器

tg3_enable_ints(tp);

}

上一页  2 3 4 5 6 7 8  下一页

Tags:Linux 编程 网络设备

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接