Сетевой драйвер ядра Linux. Как мне справиться с ошибками передачи после того, как hard_start_xmit () вернул успех? - PullRequest
2 голосов
/ 03 мая 2011

В сетевом драйвере Linux я должен предоставить функцию hard_start_xmit (), которая фактически отправляет пакеты по проводам. Я понимаю, что если он не может отправить пакет, hard_start_xmit () должен вернуть ошибку, которая приведет к повторной попытке пакета позже. Однако, поскольку hard_start_xmit () может вызываться при отключенных IRQ, он не может долго ждать, чтобы определить, может ли пакет быть отправлен.

Как мне справиться с ошибкой передачи, которая происходит после того, как hard_start_xmit () уже вернул успех? Правильно ли просто отбросить пакет, освободить skb и посчитать ошибку передачи?

1 Ответ

1 голос
/ 04 мая 2011

Да. Многие ошибки передачи обнаруживаются только после того, как NIC фактически попытался передать кадр. Обратите внимание, что есть несколько различных счетчиков ошибок, которые вы можете увеличить, если ваше устройство возвращает достаточно информации об ошибке - см. struct net_device_stats.

...