понедельник, 20 декабря 2010 г.

Intel PRO/1000 PT Quad Port Bypass Adapter

Появилась сетевая Intel® PRO/1000 PT Quad разъем PCI-E 4x, вставил в PCI-E 16x. Сетевая не завелась :( . Как показало дальнейшее разбирательство она не совсем стандартная...


none1@pci0:4:0:0: class=0x020000 card=0x10a08086 chip=0x10a08086 rev=0x06 hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB PRO/1000 AT Quad Port Bypass Adapter'
class = network
subclass = ethernet
none2@pci0:4:0:1: class=0x020000 card=0x10a08086 chip=0x10a08086 rev=0x06 hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB PRO/1000 AT Quad Port Bypass Adapter'
class = network
subclass = ethernet
none3@pci0:5:0:0: class=0x020000 card=0x10a08086 chip=0x10a08086 rev=0x06 hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB PRO/1000 AT Quad Port Bypass Adapter'
class = network
subclass = ethernet
none4@pci0:5:0:1: class=0x020000 card=0x10a08086 chip=0x10a08086 rev=0x06 hdr=0x00
vendor = 'Intel Corporation'
device = '82571EB PRO/1000 AT Quad Port Bypass Adapter'
class = network
subclass = ethernet
Выяснилось, что карты с chip=0x10a08086 являются инженерными образцами.
Т.е. эта модель карточки является тестовой и разработчики Intel не включили её поддержку в свой драйвер.

Разработчик драйвера ответил, что карты с device id A0 являются инженерными образцами и по идее не должны продаваться, так как могут быть альфа/бета версиями железа.
Ещё сказал, что у могут появиться проблемы с этими картами...

Если же вам всё таки хочется её запустить, можете взять патч Здесь или Здесь
Патч не будет включен в официальный драйвер!
FreeBSD_7.0 родные дрова (/usr/src/sys/dev/em)
FreeBSD_8.x родные дрова (/usr/src/sys/dev/e1000)

#cd /usr/src/sys/dev/e1000
#wget http://butcher.heavennet.ru/patches/kernel/net/intel_em_quad_port_devid_10a0.diff
# patch -i intel_em_quad_port_devid_10a0.diff
Учитывая, что поддержка драйвера прописана в ядре, нужно пере компилировать ядро.

# cd /usr/src/sys/
#make buildkernel KERNCONF=MYKERNEL
#make installkernel KERNCONF=MYKERNEL
#reboot
Привожу содержимое патча

Index: src/sys/dev/em/e1000_api.c
===================================================================
RCS file: /ncvs/src/sys/dev/em/e1000_api.c,v
retrieving revision 1.7
diff -u -b -p -r1.7 e1000_api.c
--- src/sys/dev/em/e1000_api.c 25 Apr 2008 21:19:39 -0000 1.7
+++ src/sys/dev/em/e1000_api.c 2 Jul 2008 09:31:06 -0000
@@ -200,6 +200,7 @@ s32 e1000_set_mac_type(struct e1000_hw *
  case E1000_DEV_ID_82571EB_SERDES_DUAL:
  case E1000_DEV_ID_82571EB_SERDES_QUAD:
  case E1000_DEV_ID_82571EB_QUAD_COPPER:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER_A0:
  case E1000_DEV_ID_82571PT_QUAD_COPPER:
  case E1000_DEV_ID_82571EB_QUAD_FIBER:
  case E1000_DEV_ID_82571EB_QUAD_COPPER_LP:
Index: src/sys/dev/em/e1000_hw.h
===================================================================
RCS file: /ncvs/src/sys/dev/em/e1000_hw.h,v
retrieving revision 1.7
diff -u -b -p -r1.7 e1000_hw.h
--- src/sys/dev/em/e1000_hw.h 25 Apr 2008 21:19:40 -0000 1.7
+++ src/sys/dev/em/e1000_hw.h 2 Jul 2008 09:31:06 -0000
@@ -85,6 +85,7 @@ struct e1000_hw;
 #define E1000_DEV_ID_82571EB_SERDES_DUAL      0x10D9
 #define E1000_DEV_ID_82571EB_SERDES_QUAD      0x10DA
 #define E1000_DEV_ID_82571EB_QUAD_COPPER      0x10A4
+#define E1000_DEV_ID_82571EB_QUAD_COPPER_A0   0x10A0
 #define E1000_DEV_ID_82571PT_QUAD_COPPER      0x10D5
 #define E1000_DEV_ID_82571EB_QUAD_FIBER       0x10A5
 #define E1000_DEV_ID_82571EB_QUAD_COPPER_LP   0x10BC
Index: src/sys/dev/em/if_em.c
===================================================================
RCS file: /ncvs/src/sys/dev/em/if_em.c,v
retrieving revision 1.194
diff -u -b -p -r1.194 if_em.c
--- src/sys/dev/em/if_em.c 21 May 2008 21:06:17 -0000 1.194
+++ src/sys/dev/em/if_em.c 2 Jul 2008 09:31:06 -0000
@@ -161,6 +161,8 @@ static em_vendor_info_t em_vendor_info_a
       PCI_ANY_ID, PCI_ANY_ID, 0},
  { 0x8086, E1000_DEV_ID_82571EB_QUAD_COPPER,
       PCI_ANY_ID, PCI_ANY_ID, 0},
+ { 0x8086, E1000_DEV_ID_82571EB_QUAD_COPPER_A0,
+      PCI_ANY_ID, PCI_ANY_ID, 0},
  { 0x8086, E1000_DEV_ID_82571EB_QUAD_COPPER_LP,
       PCI_ANY_ID, PCI_ANY_ID, 0},
  { 0x8086, E1000_DEV_ID_82571EB_QUAD_FIBER,
@@ -765,6 +767,7 @@ em_attach(device_t dev)
   break;
  case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
  case E1000_DEV_ID_82571EB_QUAD_COPPER:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER_A0:
  case E1000_DEV_ID_82571EB_QUAD_FIBER:
  case E1000_DEV_ID_82571EB_QUAD_COPPER_LP:
                 /* if quad port adapter, disable WoL on all but port A */


Огромное спасибо butcher, который уже прошел по этим граблям и подсказал, что с эти делать!!!


Ссылки
Скачать патч Здесь или Здесь
Обсуждение на FreeBSD.org
Обсуждение на Opennet.org
Обсуждение у Lissyara
Использование комманд diff и patchИспользование комманд diff и patch

Комментариев нет:

Отправить комментарий