rmmod driver de rede com bugs

0

Eu suspeito que tenho um driver de rede com bugs para um dispositivo Atheros ath9k , pois acabarei tendo erros do SW IOMMU. Às vezes, quando isso acontece, posso simplesmente rmmod e modprobe voltar e ele começará a funcionar. Outras vezes, devo remover o dispositivo desconectando-o. E, se eu esperar muito tempo, suponho, isso causa muitos problemas a ponto de eu não conseguir rmmod ou desconectar o dispositivo. Se eu fizer isso, o sistema será interrompido indefinidamente.

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

    
por Walter 26.09.2016 / 15:25

2 respostas

1

Eu sou um 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 afastar um bug, como uma maçã por dia versus um médico. Depende do bug.

Um ótimo exemplo de um problema para o qual o rmmod pode ser uma solução alternativa é uma alocação de memória descontrolada no driver (um vazamento de fato ) de tal forma que o driver não perdeu a memória e é capaz de limpá-lo em tempo de rmmod.

Se o bug é instabilidade causada por corrupção, é improvável que seja uma solução alternativa, embora possível. Suponha que o problema seja executado em várias etapas: primeiro, o driver precisa entrar em algum estado S relativamente raro (talvez um estado inválido) e, em seguida, algum evento E relativamente raro deve ocorrer enquanto está nesse estado. (Se E ocorrer e o driver não estiver no estado S, o problema não será reproduzido.) Se rmmod e reinserção tirarem o driver do estado S e forem feitos periodicamente, o problema se tornará menos reprodutível.

Remoção e reinserção podem ter problemas próprios, 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 apropriadamente) de todas as suas associações). Ao desenvolver drivers dinâmicos, um caso de teste deve ser um script de shell que faça um rmmod / insmod em um loop. (Isso não oferece cobertura total, é claro: você também precisa de insmod; various actual use cases of driver; rmmod em um loop).

    
por 28.09.2016 / 17:10
0

Você pode obter a versão mais recente de ath9k dos backports para resolver alguns problemas como: "Wifi keep disconnecting", "A Internet está lenta", "não é possível rmmod/modprobe ...

Faça o download 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 é feito com sucesso, você terá:

Your backported driver modules should be installed now.
Reboot.

Execute o seguinte comando para carregar o driver na inicialização e, em seguida, reinicialize:

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

Recarregue o driver:

rmmod ath9k
modprobe ath9k
    
por 28.09.2016 / 12:19