Ключевые слова:freebsd, hardware, driver, kernel, patch, (найти похожие документы)
From: tosha <tosha@nnz.ru.>
Newsgroups: http://www.iplab-nnz.ru
Date: Mon, 22 Apr 2005 14:31:37 +0000 (UTC)
Subject: Как заставить работать неподдерживаемую встроенную карту под FreeBSD
Оригинал: http://www.iplab-nnz.ru/blog/index.php?op=ViewArticle&articleId=5&blogId=1
Как заставить работать встроенную карту
В процессе установки FreeBSD 4.10-BETA обнаружилось, что драйвер
сетевой карты 3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller
отсутствует.
После некоторых раздумий было найдено решение этой проблемы: драйвер
от другой карты 3C920B-EMB Integrated Fast Ethernet Controller
[Tornado] (DviceID 9201) (но также на чипе 3C920B)
http://lists.freebsd.org/pipermail/freebsd-bugs/2004-March/005982.html
настраивается так, чтобы он поддерживал и необходимую карту 3Com
3C920B-EMB-WNM Integrated Fast Ethernet Controller (DviceID 9202)
При тестировании проблем не возникло, хотя в некоторых случаях может
наблюдаться потеря функциональности, если в карте есть особенности,
которые не заложены в драйвер другой карты, или просто баги, если в
карте, драйвер которой использовался, есть особенности не
поддерживаемые данной картой. Тем не менее, в среднестатистическом
варианте предложенное решение будет работать.
Возможно, с соответствующими изменениями будет работать и
3C920B-EMB-WNM Integrated Fast Ethernet Controller (DeviceID 9210).
В 3C920B-EMB Integrated Fast Ethernet Controller [Tornado] драйвер
вносятся следующие изменения:
su-2.05b# diff -Naur /usr/src/sys/pci/if_xlreg.h.orig
/usr/src/sys/pci/if_xlreg.h
--- /usr/src/sys/pci/if_xlreg.h.orig Mon Apr 19 10:20:36 2004
+++ /usr/src/sys/pci/if_xlreg.h Mon Apr 19 10:21:12 2004---
@@ -683,6 +683,7 @@
#define TC_DEVICEID_CYCLONE_10_100FX 0x905A
#define TC_DEVICEID_TORNADO_10_100BT 0x9200
#define TC_DEVICEID_TORNADO_10_100BT_920B 0x9201
+#define TC_DEVICEID_TORNADO_INTEGRATED_10_100BT_920B 0x9202
#define TC_DEVICEID_HURRICANE_10_100BT_SERV 0x9800
#define TC_DEVICEID_TORNADO_10_100BT_SERV 0x9805
#define TC_DEVICEID_HURRICANE_SOHO100TX 0x7646
su-2.05b#
su-2.05b# diff -Naur /usr/src/sys/pci/if_xl.c.orig
/usr/src/sys/pci/if_xl.c
--- /usr/src/sys/pci/if_xl.c.orig Mon Apr 19 10:21:03 2004
+++ /usr/src/sys/pci/if_xl.c Sat Apr 17 19:03:56 2004
@@ -188,6 +188,8 @@
"3Com 3c905C-TX Fast Etherlink XL" },
{ TC_VENDORID, TC_DEVICEID_TORNADO_10_100BT_920B,
"3Com 3c920B-EMB Integrated Fast Etherlink XL" },
+ { TC_VENDORID, TC_DEVICEID_TORNADO_INTEGRATED_10_100BT_920B,
+ "3Com 3c920B-EMB-WMN Integrated Fast Etherlink XL" },
{ TC_VENDORID, TC_DEVICEID_HURRICANE_10_100BT_SERV,
"3Com 3c980 Fast Etherlink XL" },
{ TC_VENDORID, TC_DEVICEID_TORNADO_10_100BT_SERV,
@@ -1268,6 +1270,7 @@
case TC_DEVICEID_HURRICANE_656B: /* 3c656B */
case TC_DEVICEID_TORNADO_656C: /* 3c656C */
case TC_DEVICEID_TORNADO_10_100BT_920B: /* 3c920B-EMB */
+ case TC_DEVICEID_TORNADO_INTEGRATED_10_100BT_920B: /*
+ 3c920B-EMB-WNM */
sc->xl_media = XL_MEDIAOPT_MII;
sc->xl_xcvr = XL_XCVR_MII;
if (verbose)
@@ -1366,6 +1369,7 @@
sc->xl_flags |= XL_FLAG_INVERT_MII_PWR |
XL_FLAG_INVERT_LED_PWR;
if (pci_get_device(dev) == TC_DEVICEID_TORNADO_10_100BT_920B
||
+ pci_get_device(dev) ==
+ TC_DEVICEID_TORNADO_INTEGRATED_10_100BT_920B)
sc->xl_flags |= XL_FLAG_PHYOK;
#ifndef BURN_BRIDGES
/*
Месяц назад пытался сделать то же самое для 3C910-A01. Драйвер вызывал GPF на уровне ядра. После часа исследований и рытья интернета решение оказалось ОЧЕНЬ простым: данная карта поддерживалась не 'xl', а 'dc' драйвером!
К сожалению, проверить ее так и не удалось: интерфейс не работает физически :( Дареному коню ведь в зубы не заглядывал...