Hoje pela manhã (ou quase isso), fui surpreendido pelo mau funcionamento da minha placa de rede cabeada, uma placa gigabit.  Não é uma placa que eu tenha escolhido, pois faz parte do notebook, um Sony Vaio VPC-S110GB.

Como a placa não tem led de indicação de funcionamento, eu só consegui identificar que não estava operando pela mensagem abaixo:


root@shibboleet:~# dmesg | grep -i eth
[45263.845838] ADDRCONF(NETDEV_UP): eth0: link is not ready

Após algumas tentativas infrutíferas de colocar e tirar o cabo (acabei até quebro o clipezinho que segura o cabo), dei uma olhada como estava a camada de enlace ethernet.


root@shibboleet:~# mii-tool eth0
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
SIOCGMIIREG on eth0 failed: Input/output error
eth0: negotiated 1000baseT-HD flow-control, link ok

Esse "Input/output error" já me deu uma dica que algo tinha acontecido com o driver da placa.  Como estou usando um kernel-pf, e compilado por mim, esse tipo de erro pode mesmo surgir.  Claro que existe a possibilidade de ser um defeito da placa, mas prefiro acreditar que o erro é meu, pois esse eu consigo consertar.

Então dei uma olhada na placa de rede.


root@shibboleet:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:24:be:65:5a:ab  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:4294957164 errors:4294906502 dropped:4294947030 overruns:4294957163 frame:4294967295
          TX packets:4294957163 errors:4294926764 dropped:0 overruns:4294957163 carrier:4294967295
          collisions:4294916631 txqueuelen:1000 
          RX bytes:4294957164 (4.2 GB)  TX bytes:4294957163 (4.2 GB)
          Interrupt:43 

É notável a quantidade de colisões na placa, além de erros, que mostram que realmente alguma coisa não estava certa.

Em outros sistemas (nem preciso mencionar), a única solução seria a de... rebootar.  Mas como é um Linux, com kernel modular, bastou fazer o seguinte:


root@shibboleet:~# ifconfig eth0 down
root@shibboleet:~# rmmod atl1c
root@shibboleet:~# modprobe atl1c
root@shibboleet:~# ifconfig eth0 up

Em seguinda, testando o meio físico...


root@shibboleet:~# mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok

E nada de reboot.  Nada como usar unix.  Pode não ser perfeito, mas também não é windows.

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.