* 動いてから気づいたのですが、一部の chip では MAC address がリバースしてしまう問題があるようです。snv_105 に含まれる nge の source code をみたところ workaround が入っていますが、リバースした Mac address の Verndor code を見て一致すれば元に戻すという修正みたいです。MacBook Late 2008 も該当するようで nfo でも見事にリバースしていました orz
driver を修正しない workaround は、plumb 後に手動で MAC address を再設定*
Nevada b105 の SXCE リリースは、来年とのアナウンスがありましたが、ON b105 だけ先にリリースされていました。
ON (OS/Net) Consolidation - b105で、こいつを使って b105 相当にし、MCP79 対応の nge driver に入れ替え reboot をかけたら panic 発生。どうも MCP79 対応 nge driver が attach するとこでこけてるみたい。
http://dlc.sun.com/osol/on/downloads/b105/
nge がダメなら nfo があるさということで、Murayama-san's driver の nfo を build しようとしましたが、またしても error が!
gcc -c -O3 -D__INLINE__=inline -DGEM_GCC_RUNTIME -ffreestanding -U_NO_LONGLONG -D_KERNEL -U_ASM_INLINES -D_SYSCALL32 -D_SYSCALL32_IMPL -Dsun -D__sun -D__SVR4 -DC2_AUDIT -Wall -Wno-unknown-pragmas -Wno-missing-braces -Wno-sign-compare -Wno-parentheses -Wno-uninitialized -Wno-implicit-function-declaration -Wno-unused -Wno-trigraphs -Wno-char-subscripts -Wno-switch -Wno-format -Werror -Di86pc -DDEBUG -DDEBUG_LEVEL=1 -DGEM_DEBUG_LEVEL=0 -UTEST_TXDESC_FULL -UTEST_RX_EMPTY -UDEBUG_HANG -UTEST_BIGENDIAN -UTEST_FOVW -UTEST_FMT1 -UTEST_FMT2 -UTEST_NF3 -UDEBUG_TCP_CKSUM -UDEBUG_UDP_CKSUM -UDEBUG_TX_SINGLE -I /export/home/kazus/opensolaris_build/ws/usr/src/uts/common -DGEM_CONFIG_POLLING -DGEM_CONFIG_GLDv3 -DGEM_CONFIG_VLAN_HW -DGEM_CONFIG_CKSUM_OFFLOAD -DSOLARIS10 -Unotdef -UNEVER -UGEM_GCC_RUNTIME -UGEM_COMPAT -USANITY -UGEM_CONFIG_FMA -UMODULE -UGEM_CONFIG_RX_DIRECT -DGEM_CONFIG_TX_DIRECT -UOS_PUTBACK -UCONFIG_PM -UCONFIG_CKSUM_OFFLOAD -UCONFIG_LSO -DCONFIG_POLLING -DWA_TX16 -UWA_SHORT_FRAG -DVERSION='"2.6.2"' gem.c -o i386/gem.oぐふっ(吐血
gem.c:5884: error: syntax error before "mac_capab_t"
gem.c:5888: error: syntax error before "gem_m_callbacks"
gem.c:5888: warning: type defaults to `int' in declaration of `gem_m_callbacks'
gem.c:5889: error: `MC_RESOURCES' undeclared here (not in a function)
gem.c:5889: error: `MC_IOCTL' undeclared here (not in a function)
gem.c:5889: error: `MC_GETCAPAB' undeclared here (not in a function)
gem.c:5889: error: initializer element is not constant
gem.c:5889: error: (near initialization for `gem_m_callbacks')
今日は、シャントット様に会うべく(ry
じゃなくって、なんでこんなことになってしまっているんだぁぁぁぁぁああああ!
と、調べてみると、アレです。
(;゜∀゜)=3ハァハァしているアレです。
そうです、b105 で実装された Project Crossbow です!(;´Д`)
これにより、network 系の driver ががっつり修正かかっていました。
OpenSolaris ON (OS/Net) Nevada Changelog b105
http://dlc.sun.com/osol/on/downloads/b105/on-changelog-b105.html
Issues Resolved:さぁ、大変だ。
PSARC case 2006/357 : Crossbow - Network Virtualization and Resource Management
あたり参照で。がっつりだ。
やばい。
どうしよう。
試しに、myk driver も build してみましたが、同様に撃沈!
諦めの境地!ってやつですか?
でも、あれやこれやと、いろいろ見てると、なんとなく見えてきた!
説明できないけど見えてきた!
compiler の message に従い、error をつぶしていったところ、無事に driver ができあがりました。
すでに、GLDv3 対応であったため変更箇所も少なく(追加するか消すかだけw)。
myk-2.6.5 の b105 対応 patch
nfo-2.6.2 の b105 対応 patch
nfo では、plumb させて通信できることと dladm create-vnic -l nfo0 vnic0 とかして vnic0 を作成し、plumb させて dhcp にて IP address をもらえるところまでは確認しました。
myk は、テスト環境がないので試していませんが binary ができるのは確認しています。
(とりあえず動いたということで、動作の保証はできませんです。)
機能検証などしている方は、b104 と b105 の両方の環境をそろえておくとよいかと思います。
ちなみに、original archive に含まれる compile 済みの binary をつっこむと panic しますので注意です。
#ああ、今日は、OpenSolaris 2008.11 リリース記念セミナーが開催されますね。
#・・・いけない(´・ω・`)