A leitura do sysfs retorna EINVAL

1
box101:~ # cat /sys/class/net/eno1/carrier
cat: /sys/class/net/eno1/carrier: Invalid argument

O que o ...? OK, então o que diz strace ?

...
open("/sys/class/net/eno1/carrier", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
read(3, 0x19c8000, 65536) = -1 EINVAL (Invalid argument)
...

Então, deixe-me ver se entendi ... O arquivo abre perfeitamente, mas ler de alguma forma é um erro?

O que é mais irritante é que no box103, o mesmo comando funciona perfeitamente ! Na box101, posso ler todos os arquivos desse diretório exceto carrier .

Alguém pode explicar o que o inferno está acontecendo aqui?

    
por MathematicalOrchid 18.03.2015 / 14:16

1 resposta

2

Existem alguns problemas com hardware / driver, conforme explicado no tópico este LKML . Citando apenas uma pequena parte do e-mail de resposta:

The reason is that most drivers don't even probe the link or negotiate link speed and flow control until the device is brought up. Many don't even power up the PHY when the device is down, in order to save power.

So the behavior you observe is completely expected.

Mesmo quando você tiver um link (conectado por cabo), ele solicitará o erro -EINVAL . As configurações de gerenciamento de energia também podem emitir esse erro em uma interface que já está conectada e ativa.

mii-tool e ethtool devem ser mais confiáveis ao fornecer informações sobre o estado do link da interface ethernet (talvez ip l l ).

    
por 18.03.2015 / 16:42

Tags