FreeBSD em0 fallback para 100Mbit Fast Ethernet no HP / Compaq DC7700

0

Eu tenho duas máquinas HP DC7700CMT, cada uma com sua própria porta LAN Intel 82566DM GbE integrada, mostrada no dmesg como Intel PRO / 1000 e usando o driver em . Recentemente, descobri que o FreeBSD não lida com essa porta LAN corretamente, pois não pode usá-la como 1000baseT. Durante a inicialização, quando o dispositivo em0 é detectado, ele é mostrado como 1000baseT, mas, quando eu efetuo login, o dispositivo volta para o 100baseTX. Se eu forçá-lo manualmente de volta ao gigabit, se a
configuração em0 media 1000baseT
a conexão cair imediatamente, o led na porta do switch se apagará e o dispositivo se comportará como se não tivesse um cabo conectado.
Sempre que redefinir a mídia para seleção automática,
ifconfig em0 media seleção automática
o dispositivo é configurado corretamente para 1000baseT primeiro - por tempo suficiente para consultar o status do adaptador e para ver se está configurado para gigabit - e, em um segundo, muda para 100baseTX Fast ethernet.
Eu testei em 3 dessas máquinas HP. O mesmo comportamento em cada computador.
Também testei com vários cabos UTP. Mesmo um curto, de alta qualidade STP. Mesmo comportamento.
Eu tentei 3 opções diferentes. Um comutador D-Link Desktop GbE de 8 portas, um roteador TP-Link GbE com comutador GbE integrado de 4 portas e um comutador HP ProCurve 2810 GbE com 24 portas. Mesmo comportamento com cada opção.
E, finalmente, tentei vários sistemas operacionais. FreeBSD 9.3R / amd64, 9.2R / amd64, 9.2R / i386, 8.4R / amd64, 7.4R / amd64, todos deixando meu dispositivo em0 de volta ao 100baseT. O OpenBSD 5.2 / i386 também reduz o dispositivo em0 para 100baseT, portanto ele deve ser um código de driver em compartilhado entre o FreeBSD e o OpenBSD. Tentei alguns Live CD do Linux e todos eles lidam adequadamente com essa porta LAN na velocidade de gigabit, sem nenhum sinal de problema. E, finalmente, o Win7 também usa o mesmo hardware na velocidade de gigabit sem problemas.
Então concluí que o problema está no código do driver FreeBSD em.
Gostaria de saber se outras pessoas têm experiência semelhante com o driver em no FreeBSD, ou se alguém possui um dispositivo em que funciona como 1000baseT.

Algum de vocês usa um hardware semelhante?
Você experimenta o seu dispositivo em de volta à Fast Ethernet?
Algum de vocês usa um dispositivo em que funciona corretamente como GbE?

Para referência, aqui está um exemplo do que acontece no FreeBSD 9.2R, independentemente da inicialização de amd64 e i386.
O tempo entre um comando e o próximo é sempre de apenas 2 a 5 segundos para que eu digite esse comando específico e pressione enter na minha velocidade de digitação habitual. Neste exemplo, não usei a seta para cima para recuperar um comando anterior do histórico. Cada comando foi digitado.

            Script started on Sun Aug 31 11:48:04 2014
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet autoselect (100baseTX <full-duplex>)
                status: active
            root@hp:~ # ifconfig em0 media autoselect
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet autoselect (1000baseT <full-duplex>)
                status: active
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet autoselect (100baseTX <full-duplex>)
                status: active
            root@hp:~ # ifconfig em0 media 1000baseT
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet 1000baseT (autoselect)
                status: no carrier
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet 1000baseT (autoselect)
                status: no carrier
            root@hp:~ # ifconfig em0 media autoselect
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet autoselect (1000baseT <full-duplex>)
                status: active
            root@hp:~ # ifconfig em0
            em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
                options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
                ether 00:0f:fe:82:30:37
                inet 10.25.74.105 netmask 0xffffff00 broadcast 10.25.74.255
                nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
                media: Ethernet autoselect (100baseTX <full-duplex>)
                status: active
            root@hp:~ # exit
            exit

            Script done on Sun Aug 31 11:49:58 2014

Qualquer comentário ou sugestão é apreciado.

Keve
fonte
Eu acho que a maioria das pessoas não teria nenhum problema. Incluindo eu, naturalmente. ;) Eu tenho um cartão 82574L dedicado, no entanto.
Daniel B
Excelente, Daniel. Eu esperava receber algum feedback com esse tipo de confirmação. A sua é uma placa PCI? Ou isso é um 1x PCIe, 4x PCIe?
Keve