driver de rede com erros rmmod

driver de rede com erros rmmod

Suspeito que tenho um driver de rede com bugs para um ath9kdispositivo Atheros, pois eventualmente receberei erros de SW IOMMU. Às vezes, quando isso acontece, posso simplesmente recuperá rmmod- modprobelo e ele começará a funcionar. Outras vezes, devo remover o dispositivo desconectando-o. E, se eu esperar muito, suponho, isso causará muitos problemas a ponto de não conseguir rmmodou desconectar o dispositivo. Se eu fizer isso, o sistema travará indefinidamente.

Como não pretendo consertar o driver (não sou um desenvolvedor de firmware), é uma correção boa e "suficiente" simplesmente rmmode modprobeo driver periodicamente ou isso também não funcionará?

Responder1

Sou desenvolvedor de kernel, então posso dizer que "depende". Não é impossível que uma remoção e reinserção proativa de um driver possa manter um bug afastado, como uma maçã por dia versus um médico. Depende do bug.

Um ótimo exemplo de problema para o qual o rmmod pode ser uma solução alternativa é uma alocação de memória descontrolada no driver (umde fatovazamento) para que o driver não perca o controle da memória e seja capaz de limpá-la no momento do rmmod.

Se o bug for uma instabilidade causada por corrupção, é improvável que seja uma solução alternativa, embora seja possível. Suponha que o problema se desenvolva em vários passos: primeiro o condutor tem de entrar num estado relativamente raro S (talvez um estado inválido) e depois algum evento relativamente raro E tem de ocorrer enquanto estiver nesse estado. (Se E ocorrer e o driver não estiver no estado S, o problema não será reproduzido.) Se o rmmod e a reinserção tirarem o driver do estado S e forem feitos periodicamente, o problema se tornará menos reproduzível.

A remoção e a reinserção podem ter seus próprios problemas, como a introdução de vazamentos (o driver não limpa tudo no rmmod) ou deixar para trás ponteiros pendentes (o driver desaloca algum objeto, mas não o cancela corretamente de todos os seus associações). Ao desenvolver drivers dinâmicos, um caso de teste deve ser um script de shell que executa um rmmod/insmod em um loop. (Isso não fornece cobertura completa, é claro: você também precisa insmod; various actual use cases of driver; rmmodde um loop).

Responder2

Você pode obter a versão mais recente do ath9kbackports para resolver alguns problemas como: "Wifi continua desconectando", "A Internet está lenta", "não pode rmmod/modprobe...

Baixe e instale os backports mais recentes:

wget https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/backports-4.4.2-1.tar.gz
make defconfig-ath9k
make -j 16
make install

Quando tudo for feito com sucesso, você obterá:

Your backported driver modules should be installed now.
Reboot.

Execute o seguinte comando para carregar o driver na inicialização e reinicializar:

echo "ath9k" | sudo tee -a /etc/modules
reboot

Recarregue o driver:

rmmod ath9k
modprobe ath9k

informação relacionada