Сетевые карты INTEL на чипсетах 82574L, 82578DM и FreeBSD 7.2

Попала к нам материнская плата INTEL: Intel® Server Board S3420GP

На «мамке» две встроенные сетевые карты:

Установили FreeBSD 7.2 (в нашем случае это RELEASE), но из сетевых карт FreeBSD сервер видит только одну и это 82574L, а вот 82578DM не видит…

Смотрим вывод команды и ищем класс «network»:

pciconf -lv

none@pci0:0:25:0:        class=0x020000 card=0x34ec8086 chip=0x10ef8086 rev=0x05 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = network
    subclass   = ethernet

em0@pci0:2:0:0: class=0x020000 card=0x34ec8086 chip=0x10d38086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = network
    subclass   = ethernet

Как говорится что и требовалось доказать…. Она есть, но стандартные драйвера от em не подошли, вот она и «висит» как none

Что с этим делать ? Ответ один: искать дрова.
«Гугл в руки» и вперед ! Дрова найдены. Вот они: em-6.9.20.tar.gz.

Теперь можно приступать к установке драйверов на FreeBSD сервер.

Распаковываем архив:

tar -xzf em-6.9.20.tar.gz

Переходим в папку с исходками:

cd em-6.9.20/src

Собираем это дело:
make

После окончания сборки в папке появится файл if_em.ko, вот он то нам и нужен.

Переносим его в /boot/modules:
mv if_em.ko /boot/modules

Далее ставим его на загрузку при буте сервера, добавляем строчку в /boot/loader.conf:

echo ‘if_em_load=»YES»‘ >> /boot/loader.conf

Затем, чтобы при пересборке ядра родной драйвер em не собирался добавим в /etc/make.conf:

echo ‘WITHOUT_MODULES=em’ >> /etc/make.conf

Теперь нужно пересобрать ядро без поддержки em, т.е. убрать или закоментарить в ядре строчку:

device         em              # Intel PRO/1000 Gigabit Ethernet Family

После пересборки ядра делаем серверу перезагрузку:

reboot

Сервер поднялся, посмотрим же снова:

pciconf -lv

em0@pci0:0:25:0:        class=0x020000 card=0x34ec8086 chip=0x10ef8086 rev=0x05 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = network
    subclass   = ethernet

em1@pci0:2:0:0: class=0x020000 card=0x34ec8086 chip=0x10d38086 rev=0x00 hdr=0x00
    vendor     = 'Intel Corporation'
    class      = network
    subclass   = ethernet

А вот и наша вторая сетевая карта !

Теперь 82578DM это em0, а 82574L это em1.

Посмотрим вывод ifconfig:

ifconfig -a

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>metric 0 mtu 1500
        options=399b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:15:17:ae:0c:d9
        media: Ethernet autoselect (1000baseTX )
        status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=399b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:15:17:ae:0c:d8
        media: Ethernet autoselect (1000baseTX )
        status: active

Ссылки:

Драйвер для em от Yandex: http://people.yandex-team.ru/~wawa/

Источник статьи