Решил написать, может кому время сэкономит… Пришлось на днях повозиться с гигабитной сетевухой от D-Link (ну не было другой под рукой, а раньше такое чудо в подобных целях использовать не приходилось).
Проблема состояла в том, что при поднятии на ней VLAN-ов, по одному из них не уходили пакеты, большие чем 164 байта ( “ping -s” рулит 😉 ).
Карта детектилась системой следующим образом:
re0: <D-Link DGE-528(T) Rev.B1 Gigabit Ethernet Adapter> port 0xe400-0xe4ff mem 0xdffff800-0xdf fff8ff irq 17 at device 10.0 on pci1 miibus1: <MII bus> on re0 rgephy0: <RTL8169S/8110S/8211B media interface> on miibus1 rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
Как оказалось, пакеты таки уходили, просто почему-то не тегированные. Ессно, что дальше свича они не шли…
Всему виной был флаг VLAN_HWTAGGING, который устанавливался системой (FreeBSD 6.4) при инициализации сетевого интерфейса:
re0: flags=8802<broadcast,SIMPLEX,MULTICAST> mtu 1500 options=1b<rxcsum ,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
Таким образом, теоретически от карты ожидалась аппаратная поддержка VLAN. Но именно что теоретически… Каюсь, внимания на VLAN_HWTAGGING на интерфейсе сразу не обратил и убил кучу времени зря 🙁
Короче, если кто еще не понял, – добавление -vlanhwtag к параметрам инициализации интерфейса спасло отца русской демократии 😉
Как этот флаг установить
у меня DGE-530T сетевуха свитч des-3010G
Зачем его устанавливать ? Он и так по умолчанию установлен (во всяком случае во фре 6-ке). Его снимать надо… Снимается с помощью дополнительного параметра “-vlanhwtag” команды ifconfig, запуская ее из консоли вручную или прописав в rc.conf-е.
Поменял сетевуху на Реалтек все заработало сразу
Ну так само собой заработало… и на длинке заработает, если флаг VLAN_HWTAGGING сбросить.