2014-11-18 6 views
2

У меня возникли некоторые сомнения относительно того, как я могу протестировать операцию tx_timeout сетевого модуля ядра. Например, возьмем пример snull из главы 14 книги драйвера устройства Linux.Как проверить работу tx_timeout сетевого модуля ядра?

void snull_tx_timeout (struct net_device *dev) 
{ 
    struct snull_priv *priv = (struct snull_priv *) dev->priv; 

    PDEBUG("Transmit timeout at %ld, latency %ld\n", jiffies, 
        jiffies - dev->trans_start); 
    priv->status = SNULL_TX_INTR; 
    snull_interrupt(0, dev, NULL); 
    priv->stats.tx_errors++; 
    netif_wake_queue(dev); 
    return; 
} 

И его инициализация:

#ifdef HAVE_TX_TIMEOUT 
dev->tx_timeout  = snull_tx_timeout; 
dev->watchdog_timeo = timeout; 
#endif 

Как я могу заставить тайм-аут, чтобы проверить выполнение snull_tx_timeout()?

Я был бы рад за любое предложение.

Спасибо!

ответ

0

This email от David Miller ответ на этот вопрос. Я тестировал другой драйвер сетевого устройства, и он работал очень хорошо.

Способ испытания tx_timeout настолько прост. Если вы не отправляете пакеты, которые хранятся в буфере (или очереди), самим аппаратным обеспечением. Таким образом, эти пакеты будут накапливаться до заполнения буфера или очереди. Следующий пакет не может быть сохранен (и отправлен), выбрасывая исключение таймаута в соответствии с watchdog_timeo времени.