Programming ASUS NX1001 in FreeBSD
Постараюсь описать проблему как можно понятнее. Недавно пришло время мне увеличить число подключений на сервере (FreeBSD 6.2 конешно же), приобрел сетевушку ASUS NX1001, инсталировал. К моему великому сожалению ifconfig не обнаружил новую карточку :( На диске с дровами шли не только драйвера под виндузятину, но и для Linux, Solaris и некоторых других систем (кроме фряхи). Покопавшись в /sys/conf/NOTES и исходниках дров для Linux я определил, что ASUS NX1001 работает модулем поверх Sundance ST201 и D-Link DL10050. Так же просканировав шину pci --> pciconf -lv нашел среди результатов :
vendor = 'Sundance Technology Inc'
class = network
subclass = ethernet
Строки device почему-то не обнаружилось.... Исходники этих модулей находятся в /sys/pci/if_ste.c , /sys/pci/if_stereg.h. Пришлось их немного поправить, чтобы карточка определялась. В if_ste.c добавил строчку AS_VENDORID в массив структур ste_devs[]:
{ST_VENDORID, ST_DEVICEID_ST201,"Sundance ST201 10/100BaseTX"},
{AS_VENDORID, AS_DEVICEID_NX1001,"ASUS NX1001 10/100BaseTX"},
{DL_VENDORID, DL_DEVICEID_DL100050,"D-Link DL10050 10/100BaseTX"},
{0,0,NULL}
};
В if_stereg.h :
#define AS_DEVICEID_NX1001 0x0200
После всего пересобрал новое ядро, перезагрузился и вывод ifconfig после настройки показал:
options=8<VLAN_MTU>
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
ether xx:xx:xx:xx:xx:xx
media: Ethernet autoselect (none)
status: no carrier
Вот тут и начинается интересное...не пашет "Ethernet autoselect". Устанавливаю ifconfig ste0 media 100baseTX mediaopt full-duplex --> карта no carrier. Устанавливаю ifconfig ste0 media 10baseT/UTP mediaopt full-duplex --> карточка подымается и прекрасно работает. В режиме передачи 100baseTX карта не работает ни в полудуплексе, ни в фул-дуплексе, хотя на коробке написано - 10/100Mbps.
Порылся на сайте freebsd.org и на некоторых форумах, люди вобще не могут её запустить на Linux, а во фряхе похожие проблемы в работе этой карты!
Никак не могу понять в чем корень проблемы. Буду рад любой толковой идее! Неужели заявленные статы не соответствуют действительности, или я что-то не уловил в исходниках. Прошу людей не понимающих в этом - ничего не писать; также не нужно советов типа погуглить.
Прилагаю измененные исходники -->
Если разберетесь - пишите во фряшную рассылку, может успеют в седьмую фрю включить :)
А как разрешу проблему отпишусь сюда ну и в рассылку FreeBSD обязательно опубликую (если кто-то раньше не найдёт проблему, или уже может нашел :-) Хотелось бы по дефолту карточку увидеть в 7-м релизе.
Минимальное ядро пробовалось 2.6.18.x.
Гляну список проблем, если проблема не решена, напишу в рассылку FreeBSD.