Driver sky2 no Ubuntu Hardy

1

Eu tenho uma placa de rede:

02: 00.0 Controlador Ethernet: Marvell Technology Group Ltd. Controlador Ethernet Gigabit ASF 88E8050 PCI-E (rev 18)

E parece que o cartão é redefinido aleatoriamente. Aqui está um dmesg:

  
[751806.503694] sky2 eth1: hung mac 124:54 fifo 195 (128:123)
[751806.503702] sky2 eth1: receiver hang detected
[751806.504154] sky2 eth1: disabling interface
[751806.504440] sky2 eth1: enabling interface
[751809.712495] sky2 eth1: Link is up at 1000 Mbps, full duplex, flow control rx
[970196.706605] sky2 eth1: hung mac 0:2 fifo 195 (194:189)
[970196.706611] sky2 eth1: receiver hang detected
[970196.706913] sky2 eth1: disabling interface
[970196.707227] sky2 eth1: enabling interface
[970199.917018] sky2 eth1: Link is up at 1000 Mbps, full duplex, flow control rx

Parece que há um problema com o driver de rede sky2; mas ainda não encontrei nenhuma resposta em outros fóruns. Você tem alguma sugestão? Posso usar outro driver para o cartão? É um bug conhecido?

Obrigado!

    
por Matias 15.09.2009 / 14:50

2 respostas

1

O driver sky2 ficou inutilmente ruim por muitos anos.

Acredito que, na maioria das vezes, está bem, a versão 9.10 deve funcionar bem.

    
por 01.01.2010 / 09:06
0

Existe uma solução que funciona de forma confiável para mim em aproximadamente 10 caixas que possuem driver sky2. Todas as minhas caixas são Centos5 baseadas no kernel 2.6.18 (sim antigo para 2017). Eu descobri que depois dessas mensagens de log ...

sky2 eth1: receiver hang detected
sky2 eth1: disabling interface
sky2 eth1: enabling interface

... o driver parece interromper o descarregamento da soma de verificação para o hardware. Em alguns experimentos, eu consegui fazer com que ele falhasse parcialmente apenas pela sequência ifdown; ifup , que parecia fazer com que o descarregamento da soma de verificação interrompesse apenas o tráfego UDP.

Então, desative o descarregamento da soma de verificação para o hardware:

ethtool --offload eth1 tx off

AVISO : para mim, ethtool --show-offload eth1 está e sempre afirma que está desativado. Vejo que configurar isso para on ou off muda claramente o comportamento, mas consultar seu estado é sempre mostrado como off .

Agora, para que isso seja aplicado automaticamente, coloco isso em /sbin/ifup-local :

#!/bin/bash
DEVICE=$1
if [[ "$DEVICE" == "eth0" || "$DEVICE" == "eth1" ]] ; then
 ethtool --offload "$DEVICE" tx off
fi

mas algo semelhante provavelmente pode ser colocado em outros lugares também, por exemplo em algo como /etc/network/if-up.d/eth no debian.

    
por 28.09.2017 / 16:45