1

我需要在结构中获取字段last_rx的值...但由于某种原因始终为 0(具有有效值)...这是为什么呢?是否有另一个字段给出这个值?trans_startnet_devicedev->last_rxtrans_start

这是一个片段

struct net_device *dev;
dev = first_net_device(&init_net);

while (dev)
{

        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);
}

我正在使用 linux kernel 2.6.35 编写内核模块

4

3 回答 3

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);
}
于 2012-06-22T17:54:42.073 回答
0

对您的问题的简短回答是更新驱动程序。驱动程序负责更新值。在 for 提到的文档中,它声明该值未使用并且内核未使用它,但还有其他东西会使用它。如果您想将 arp 轮询与绑定驱动程序一起使用,则它是必需的。

来自http://www.makelinux.net/ldd3/chp-17-sect-3

无符号长 trans_start;

无符号 long last_rx;

包含 jiffies 值的字段。驱动程序负责分别在传输开始和接收到数据包时更新这些值。网络子系统使用 trans_start 值来检测发射机锁定。last_rx 当前未使用,但驱动程序无论如何都应维护此字段以备将来使用。


在此处查看绑定驱动程序中对 last_rx 的引用:http: //www.kernel.org/doc/Documentation/networking/bonding.txt

于 2013-01-15T15:10:11.163 回答
0

根据这些文档last_rx当前未使用,因此驱动程序可能没有更新该值。

于 2012-06-22T16:42:35.330 回答