
У меня есть пара машин HP DC7700CMT, каждая из которых имеет собственный встроенный порт Intel 82566DM GbE LAN, отображаемый в dmesg как Intel PRO/1000 и использующийЭмдрайвер. Недавно я обнаружил, что FreeBSD некорректно обрабатывает этот порт LAN, так как не может использовать его как 1000baseT. Во время загрузки, когдаэм0устройство обнаружено, оно отображается как 1000baseT, но к тому времени, как я вхожу в систему, устройство возвращается к 100baseTX. Если я вручную принудительно возвращаю его к гигабиту,
ifconfig em0 носитель 1000baseT
соединение немедленно обрывается, светодиод на порту коммутатора гаснет, и устройство ведет себя так, как будто к нему не подключен кабель.
Каждый раз, когда я сбрасываю носитель на автовыбор,
ifconfig em0 автоматический выбор носителя
устройство сначала правильно настраивается на 1000baseT — ровно на время, достаточное для запроса состояния адаптера и проверки того, что он настроен на гигабит, — затем в течение секунды оно переключается на 100baseTX Fast Ethernet.
Я протестировал его на 3 таких машинах HP. То же самое поведение на каждом компьютере.
Я также протестировал его с несколькими кабелями UTP. Даже с коротким высококачественным STP. То же самое поведение.
Я пробовал 3 разных коммутатора. Один 8-портовый коммутатор D-Link Desktop GbE, один маршрутизатор TP-Link GbE со встроенным 4-портовым коммутатором GbE и один коммутатор HP ProCurve 2810 GbE с 24 портами. То же самое поведение с каждым коммутатором.
И, наконец, я пробовал несколько операционных систем. FreeBSD 9.3R/amd64, 9.2R/amd64, 9.2R/i386, 8.4R/amd64, 7.4R/amd64, все они сбрасывают мое устройство em0 обратно на 100baseT. OpenBSD 5.2/i386 также сбрасывает устройство em0 на 100baseT, так что это должен быть код драйвера em, общий для FreeBSD и OpenBSD. Попробовал пару Linux Live CD, и все они правильно обрабатывают этот порт LAN на гигабитной скорости без каких-либо признаков проблем. И, наконец, Win7 также использует то же оборудование на гигабитной скорости без каких-либо проблем.
Поэтому я пришел к выводу, что проблема в коде драйвера em FreeBSD.
Я хотел бы узнать, есть ли у других подобный опыт сЭмдрайвер под FreeBSD, или если у кого естьЭмустройство, которое работает как 1000baseT.
Кто-нибудь из вас использует подобное оборудование?
Испытываете ли вы свойЭмустройство, возвращающееся к Fast Ethernet?
Кто-нибудь из вас используетЭмустройство, которое работает правильно как GbE?
Для справки, вот пример того, что происходит на FreeBSD 9.2R, независимо от загрузки amd64 и i386.
Время между одной командой и следующей всегда составляет всего 2–5 секунд, которые мне требуются, чтобы ввести эту конкретную команду и нажать Enter с моей обычной скоростью печати. В этом примере я не использовал стрелку вверх, чтобы получить более раннюю команду из истории. Каждая команда была введена.
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
Мы будем признательны за любые комментарии и предложения.