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