我正在linux下调试一些网络驱动程序。在这个驱动程序的某个地方有 netif_stop_queue() 函数。它停止通过内核向我的驱动程序发送数据包,这没关系。
我想知道内核可以将这些数据包排队多长时间,直到它开始丢弃它们?是 ifconfig 中的 txqueuelen 参数告诉给定接口可以排队的数据包数量还是内核中还有另一个队列?
我正在linux下调试一些网络驱动程序。在这个驱动程序的某个地方有 netif_stop_queue() 函数。它停止通过内核向我的驱动程序发送数据包,这没关系。
我想知道内核可以将这些数据包排队多长时间,直到它开始丢弃它们?是 ifconfig 中的 txqueuelen 参数告诉给定接口可以排队的数据包数量还是内核中还有另一个队列?
net_device 结构 netdevice.h 上的“unsigned long tx_queue_len”字段,第 1143 行控制设备传输队列中可以排队的最大帧数
是的,它与 ifconfig 中的参数相同。您可以使用以下方法设置队列长度:
ifconfig <interface> txqueuelen <size>
Ex:
ifconfig eth0 txqueuelen 10000