我需要在last_rx
结构中获取字段trans_start
和net_device
的值...但由于某种原因,dev->last_rx
始终为0({{1}有一个有效的值)...这是为什么?是否有其他字段可以提供此值?
这是一个片段
trans_start
我正在使用linux内核2.6.35编写内核模块
答案 0 :(得分:1)
我简单地说
dev->last_rx = jiffies;
它工作了! :d
struct net_device *dev;
dev = first_net_device(&init_net);
while (dev)
{
dev->last_rx = jiffies;
printk(KERN_ALERT "last received time is %li\n", dev->last_rx );
printk(KERN_ALERT "last transmit time is %li\n", dev->trans_start );
dev = next_net_device(dev);
}
答案 1 :(得分:0)
每these docs,last_rx
当前未使用,因此驱动程序可能无法更新该值。
答案 2 :(得分:0)
简短回答您的问题是更新驱动程序。驱动程序负责更新值。在上面提到的文档中,它声明值是未使用的并且内核未使用它,但还有其他东西会使用它。如果要将arp轮询与绑定驱动程序一起使用,则需要它。
来自http://www.makelinux.net/ldd3/chp-17-sect-3
unsigned long trans_start;
unsigned long last_rx;
包含jiffies值的字段。驱动程序负责分别在传输开始和接收数据包时更新这些值。联网子系统使用trans_start值来检测发送器锁定。 last_rx目前尚未使用,但驱动程序仍应保留此字段以备将来使用。
在此处查看绑定驱动程序中对last_rx的引用: http://www.kernel.org/doc/Documentation/networking/bonding.txt