Разработка электроники,

Систем автоматики,

Программного обеспечения

ООО "Антех ПСБ",
Санкт-Петербург

+79811865082

anteh@bk.ru

ООО Антех ПСБ примеры

FreeBSD 9.x Установка драйверов на примере установки Intel PRO/1000 PT Dual Port Server Adapter EXPI9402PTBLK PCI-E x4 чип 82571GB. Ремонт, тестирование Intel сетевой карты

15.07.2015 https://anteh.ru

Скачиваем драйвера с сайта производителя Intel. Карта установлена в PCI-E слот x16. Проверяем, что при загрузке увидела система:

# pciconf -lv

re0@pci0:1:6:0: class=0x020000 card=0x43001186 chip=0x rev=0x10 hdr=0x00
vendor = 'D-Link System Inc'
device = 'DGE-528T Gigabit Ethernet Adapter'
class = network
subclass = ethernet
re1@pci0:1:7:0: class=0x020000 card=0x816910ec chip=0x rev=0x10 hdr=0x00
vendor = 'Realtek Semiconductor Co., Ltd.'
device = 'RTL-8169 Gigabit Ethernet'
class = network
subclass = ethernet
re2@pci0:2:0:0: class=0x020000 card=0x816810ec chip=0x rev=0x01 hdr=0x00
vendor = 'Realtek Semiconductor Co., Ltd.'
device = 'RTL8111/8168B PCI Express Gigabit Ethernet controller'
class = network
subclass = ethernet
re3@pci0:4:0:0: class=0x020000 card=0x816810ec chip=0x rev=0x01 hdr=0x00
vendor = 'Realtek Semiconductor Co., Ltd.'
device = 'RTL8111/8168B PCI Express Gigabit Ethernet controller'
class = network
subclass = ethernet
nfe0@pci0:0:10:0: class=0x068000 card=0x812a1043 chip=0x rev=0xf3 hdr=0x00
vendor = 'nVidia Corporation'
device = 'CK804 Ethernet Controller'
class = bridge

Интересует то, что с классом network. Сетевая на материнке называется nfe0. Всего 5 сетевых интерфейсов, но ещё 2х интерфейсов не видно -это установленная сдвоенная Intel карта.

Выше видим 2 каких-то none:

none0@pci0:0:0:0:       class=0x058000 card=0x815a1043 chip=0x rev=0xa3 hdr=0x00
vendor = 'nVidia Corporation'
device = 'CK804 Memory Controller'
class = memory
none1@pci0:0:1:1: class=0x0c0500 card=0x815a1043 chip=0x rev=0xa2 hdr=0x00
vendor = 'nVidia Corporation'
device = 'CK804 SMBus'
class = serial bus
subclass = SMBus

none это неправильно, нужно установить драйвера, которых у производителя материнки под FreeBSD не было. К текущему вопросу это не относится и три года с этим всё жило прекрасно.

Intel сетевой карты не видно, так быть не должно.

Скачанный архив с драйверами распаковываем в какую либо папку:

/drivers/eth82571GB/em-7.4.2.tar.gz

Делаем всё, как написано в README файле
/drivers/eth82571GB/em-7.4.2/*README

# cd /drivers/eth82571GB/em-7.4.2/src
# make
# make install

В /boot/kernel появится *if_em.ko. Но от туда, по некоторой рекомендации if_em.ko переместил в директорию /boot/modules

В файл /boot/loader.conf прописываем строку:
if_em_load="YES"

Перезагрузился, но Вы не спешите, ибо воз и ныне там, система не видит вновь установленную карту.

Заходим в /etc/make.conf прописываем строку:
WITHOUT_MODULES=em -компилировать ядро без стандартного модуля "em" штатного сетевого драйвера intel

Идём в конфигурацию ядра:
/usr/src/sys/платформа/conf/myKERNEL и для надёжности комментируем строку "device em":

# PCI Ethernet NICs.
device bxe # Broadcom BCM57710/BCM57711/BCM57711E 10Gb Ethernet
device de # DEC/Intel DC21x4x (``Tulip'')
#device em # Intel PRO/1000 Gigabit Ethernet Family
device igb # Intel PRO/1000 PCIE Server Gigabit Family

Компилируем ядро:
# cd /usr/src
# make buildkernel KERNCONF=myKERNEL

Ждём минут 40-60

Устанавливаем ядро:
# make installkernel KERNCONF=myKERNEL

Перезагружаемся:
# shutdown -r now

Смотрим дату и время установленного ядра и убеждаемся, что дата и время текущее:
# uname -a

Ну теперь точно всё получится… перезагружаемся и… не получилось, установленную сетевую сдвоенную карту система не видит.

На пробы поиски раздумья ушли сутки, заглянул в BIOS
Отключил всё, что не использовалось, в том числе и встроенную сетевую карту, поменял некоторые параметры, и…
Чудо свершилось:

# pciconf -lv

em0@pci0:4:0:0: class=0x020000 card=0x115e8086 chip=0x rev=0x06 hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB Gigabit Ethernet Controller'
class = network
subclass = ethernet
em1@pci0:4:0:1: class=0x020000 card=0x115e8086 chip=0x rev=0x06 hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB Gigabit Ethernet Controller'
class = network
subclass = ethernet


# ifconfig

em0: flags=8c02<-BROADCAST,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4019b<-RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
ether aa:bb:cc:dd:ee:ff
media: Ethernet autoselect
status: no carrier
em1: flags=8c02<-BROADCAST,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4019b<-RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
ether aa:bb:cc:dd:ee:f1
media: Ethernet autoselect
status: no carrier

Всё отлично, Intel PRO/1000 PT Dual Port Server Adapter EXPI9402PTBLK установлена.

Пробовал вернуть настройки BIOS обратно как было, чтобы сетевая снова не заработала и точно определить, в чём же было дело. Номер не прошёл. Из настроек менял, в том числе, настройки SLI, приоритетность запуска видеокарты. На материнке два PCI-E x16. В одном временно установлена видеокарта, в другом EXPI9402PTBLK сетевая карта.

Делаю вывод, настройки BIOS были не причём, но их переброс помог FreeBSD 9.2 увидеть сетевую карту. Какие именно настройки, выяснить не удалось. Возможно перезагрузка через полное отключение питания помогла.

Переходим к настройке и тестированию.
Карта была куплена с рук, продавец заверял что новая. Оказалась неновая и с отломанным C243 чип 0402 конденсатором в цепи развязывающего трансформатора одного из портов. В сумраке коридора х… что разглядишь. Продавец перец тёртый). Утверждал, что уже несколько таких же карт до этого продал. Хорошо, обнаружил дефект при более тщательном осмотре. Надеюсь именно проблемы с одним из двух сетевых каналов и были причиной продажи. Внешне сетевая карта выглядит не поддельной, надпись Intel, Yottamark в наличии, внешний вид совпадает с оригинальным.intel_expi9402ptblk intel_expi9402ptblk_top

Вместе с C243 меняем, обязательно, сразу все 4ре конденсатора: C234, C240, C241, C243. Пайка без свинцовая, плата многослойная, температуру жала паяльника нужно выставлять 380. При проверке отпаянного конденсатора ёмкость оказалась 10n -десять нано фарад. Под рукой оказалась катушка с таким номиналом, но в 0805 корпусе, разницу в размерах видим на фотографии. Получилось так, что рядом с контактной площадкой конденсаторов были переходные отверстия и после лужения они стали отличной контактной площадкой. Поэтому с 0805 размером вместо 0402 проблем не возникло.

expi9402ptblk_10n_capacitor

Заодно проверяем защитные диоды/супрессоры/стабилитроны на пробой, это DP200, DP201, DP202, DP203 -3304N. Замер сопротивления между общей шиной -куда припаяны R203, R207, R212, R213 и выводами 1,3,7,9 DP200, DP201 сборок защитных диодов должен показать 75Ом. И соответственно замер сопротивления между общей шиной -куда припаяны R217, R218, R220, R228 и выводами 1,3,7,9 DP202, DP203 сборок защитных диодов должен показать 75Ом. Всё оказалось в порядке.

Тестирование попробовал произвести с помощью iperf.
На машине с тестируемой сетевой картой и удалённой на 0.5 метра, устанавливаем iperf:

# cd /usr/ports/benchmarks/iperf
# make config
# make
# make install
# rehash

На удалённой машине настраиваем ipwf и запускаем сервер:
Настройка в меру подробных, для проверки работоспособности, правил ipfw:

${fwadd} 00040 allow ip from any to ${ip_ext} via ${ext}
${fwadd} 00041 allow ip from ${ip_ext} to any via ${ext}

# /etc/rc.d/ipfw restart
Запуск сервера:
# iperf -s
bind failed: Address already in use
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 286 MByte (default)
------------------------------------------------------------

Настраиваем правила ipfw на машине с тестируемой картой:

${fwadd} 00040 allow ip from aa.bb.cc.dd to me via ${srv}
${fwadd} 00041 allow ip from me to aa.bb.cc.dd via ${srv}

Соединяем пачкордом удалённую машину с запущенным сервером с первым испытываемым сетевым интерфейсом и запускаем клиента:

# iperf -c 172.17.0.2 -i 1
------------------------------------------------------------
Client connecting to 172.17.0.2, TCP port 5001
TCP window size: 65.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.17.0.1 port 37779 connected with 172.17.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 9.12 MBytes 76.5 Mbits/sec
[ 3] 1.0- 2.0 sec 7.62 MBytes 64.0 Mbits/sec
[ 3] 2.0- 3.0 sec 5.38 MBytes 45.1 Mbits/sec
[ 3] 3.0- 4.0 sec 9.50 MBytes 79.7 Mbits/sec
[ 3] 4.0- 5.0 sec 7.38 MBytes 61.9 Mbits/sec
[ 3] 5.0- 6.0 sec 9.62 MBytes 80.7 Mbits/sec
[ 3] 6.0- 7.0 sec 7.25 MBytes 60.8 Mbits/sec
[ 3] 7.0- 8.0 sec 7.75 MBytes 65.0 Mbits/sec
[ 3] 8.0- 9.0 sec 10.0 MBytes 83.9 Mbits/sec
[ 3] 9.0-10.0 sec 9.75 MBytes 81.8 Mbits/sec
[ 3] 0.0-10.2 sec 83.5 MBytes 68.6 Mbits/sec

Выше тест Realtec сетевых карт.

Iperf на 15.07.2015 оказалась недоработанной. По разному ведёт себя сервер, по началу была демонстрация активности, затем пропала. Ему пришлось открывать все порты иначе соединение не устанавливалось. Не работала опция -t, когда заработала, то пропала реальная передача данных и демонстрация активности стала такой:

# iperf -c 172.17.0.2 -i 1
------------------------------------------------------------
Client connecting to 172.17.0.2, TCP port 5001
TCP window size: 65.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.17.0.1 port 25327 connected with 172.17.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 18446744073709492224 bits 158456325028528165013692612608 s/sec
[ 3] 1.0- 2.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 2.0- 3.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 3.0- 4.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 4.0- 5.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 5.0- 6.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 6.0- 7.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 7.0- 8.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 8.0- 9.0 sec 18446744073709486080 bits 158456325028528112237134479360 s/sec
[ 3] 0.0-10.0 sec 18446744073708906496 bits 15844803819612549566242488320 s/sec

Перезапуска машин сервера и клиента не помог, iperf больше не работал, вывод был вышеприведённый, обмена не было.
В общем iperf 2.0.5 то-ли сырой порт, то-ли не отлаженный под FreeBSD, ну очень подозрительный. Удаляем.

Воспользовался sftp клиентом для заливки и скачивания массива данных 8G через испытуемые интерфейсы. Конечно это не полноценная проверка, но проблем не наблюдалось.

Copyright ©Новиков Алексей Александрович,

2023 Санкт-Петербург, 197372, ООО "Антех ПСБ",

anteh собака bk.ru