免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3559 | 回复: 2
打印 上一主题 下一主题

[网络子系统] 传输超时会触发dev_watchdog看门狗,但在该发送队列stop才可能触发,在哪里stop的呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-18 23:33 |只看该作者 |倒序浏览
本帖最后由 lofeng410 于 2012-10-18 23:37 编辑

                        for (i = 0; i < dev->num_tx_queues; i++) {
                                struct netdev_queue *txq;

                                txq = netdev_get_tx_queue(dev, i);
                                /*
                                 * old device drivers set dev->trans_start
                                 */
                                trans_start = txq->trans_start ? : dev->trans_start;
                                if (netif_tx_queue_stopped(txq) &&
                                    time_after(jiffies, (trans_start +
                                                         dev->watchdog_timeo))) {
                                        some_queue_timedout = 1;
                                        break;
                                }
                        }
这里检查发送队列的状态,如果队列处于__QUEUE_STATE_XOFF才会继续往下走。
但是我在netif_tx_stop_queue()设置函数中添加了打印信息,但是一直没有打印我添加的调试信息。
而发送传输超时已经触发了多次(大于20+)。
究竟在哪个地方动了这个标志呢?求大牛指点,多谢
static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
{
        set_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
}


论坛徽章:
0
2 [报告]
发表于 2013-07-04 17:53 |只看该作者
回复 1# lofeng410


   楼主这个问题解决了么。同问··

论坛徽章:
0
3 [报告]
发表于 2013-07-20 19:55 |只看该作者
回复 1# lofeng410

您能先告诉我是哪个版本么,代码位置在哪(qdisc调度?)。

因为在2.4.2,sch_generic.c,dev_watchdog 函数中:
        if (netif_queue_stopped(dev) &&
            (jiffies - dev->trans_start) > dev->watchdog_timeo) {
                printk(KERN_INFO "NETDEV WATCHDOG: %s: transmit timed out\n", dev->name);
                dev->tx_timeout(dev);
        }

这里的 netif_queue_stopped 应该相当于你所述的 netif_tx_queue_stopped:
static inline int netif_queue_stopped(struct net_device *dev)
{
        return test_bit(__LINK_STATE_XOFF, &dev->state);
}

但它参考的是设备状态,不是设备队列状态,所以设备驱动也可以设置它为XOFF。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP