Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何通知netdev队列可以再次接收数据包_C_Linux_Networking_Kernel - Fatal编程技术网

C 如何通知netdev队列可以再次接收数据包

C 如何通知netdev队列可以再次接收数据包,c,linux,networking,kernel,C,Linux,Networking,Kernel,我想将数据包放入netdev队列中 err = dev_queue_xmit(skb); if (err) { ... stop processing ... sleep ... } 有没有办法注册通知程序,通知我队列现在可以再次接收数据包?如果不是,我必须轮询,但我不喜欢:-为数据包积压维护的队列位于/proc/sys/net/core/netdev_max_backlog。 要获取内核值,可以使用sysctl系统调用从/proc/sys/接收的数据包。请小心使用,

我想将数据包放入netdev队列中

err = dev_queue_xmit(skb);
if (err) 
    {
    ... stop processing ... sleep ...
    }

有没有办法注册通知程序,通知我队列现在可以再次接收数据包?如果不是,我必须轮询,但我不喜欢:-

为数据包积压维护的队列位于/proc/sys/net/core/netdev_max_backlog。
要获取内核值,可以使用sysctl系统调用从/proc/sys/接收的数据包。请小心使用,不要修改值。如果达到阈值,您可以通过通知程序使用软件中断触发消息。

我看不出有什么办法。当队列释放时,会调用net_tx_操作,但我看不到您在那里设置了回调。在netdevice上没有处理完整tx队列的标准方法吗?如果没有,我必须创建一个tasklet、计时器或其他东西,它们会在一段时间后再次尝试写入?看起来不太令人满意。