网卡驱动:传输超时watchdog_timeo/ndo_tx_timeout
2016-02-02 11:05
1411 查看
网络子系统提供了对传输超时的处理框架,在驱动程序中要支持传输超时处理,只需要实现net_device的watchtimeo和net_device_ops中的ndo_tx_timeout函数。
1】watchdog_timeo
【作用】用于实现传出超时的时间设定。
1】ndo_tx_timeout
【作用】在发送队列停止(netif_queue_stopped(dev)返回1),且watchdog_timeo到期的时候,内核网络子系统会调用ndo_tx_timeout来进行处理
========用法========
ndo_tx_timeout的实现多种多样,可以根据具体的情况来实现。
关于定时器的信息,参照内核定时器介绍。
在linux2.6内核的rtl8169网卡驱动的实现上,在rtl8169_tx_timeout上就调用了两个函数:
rtl8169_hw_reset()
rtl8169_shedule_work()
其中前一个参数实现了硬件reset。
后一个函数完成了设备缓冲区等初始化任务。
---------------源码---------------
static void rtl8169_tx_timeout(struct net_device *dev)
{
struct rtl8169_private *tp = netdev_priv(dev);
rtl8169_hw_reset(tp->mmio_addr);
rtl8169_schedule_work(dev, rtl8169_reset_task);
}
1】watchdog_timeo
【作用】用于实现传出超时的时间设定。
1】ndo_tx_timeout
【作用】在发送队列停止(netif_queue_stopped(dev)返回1),且watchdog_timeo到期的时候,内核网络子系统会调用ndo_tx_timeout来进行处理
========用法========
ndo_tx_timeout的实现多种多样,可以根据具体的情况来实现。
关于定时器的信息,参照内核定时器介绍。
在linux2.6内核的rtl8169网卡驱动的实现上,在rtl8169_tx_timeout上就调用了两个函数:
rtl8169_hw_reset()
rtl8169_shedule_work()
其中前一个参数实现了硬件reset。
后一个函数完成了设备缓冲区等初始化任务。
---------------源码---------------
static void rtl8169_tx_timeout(struct net_device *dev)
{
struct rtl8169_private *tp = netdev_priv(dev);
rtl8169_hw_reset(tp->mmio_addr);
rtl8169_schedule_work(dev, rtl8169_reset_task);
}
相关文章推荐
- Js中如何获取div盒子之下的元素(简单的例子)
- Spring入门详解
- centos 开启httpd service 出现ServerName error
- canvas特效:下雨效果
- 单个回调函数中返回多个Request以及Item
- 3259843759438
- 前端程序员必知的30个Chrome扩展
- 534208954309fbakjsdg
- 论软件研发过程 目标+方法=结果
- 9034865032
- CT 来值班,让您安心过新年!
- Linux编程中的出错处理
- 4231421
- hihocoder-1015 KMP算法(KMP)
- consul简介
- Android API Guides翻译与学习——Application Fundamentals
- go 简单爬虫
- 记录访客的(ip,浏览器,ip归属地,操作系统代码)并记录在文件中
- 使用wireshark对TLS加密的数据进行实时的解密
- Win10开发篇(序言)