Marius Strobl氏がmii(4)にNetBSD互換のmii_attach()機能を追加したことを報告しています。mii_attach()が追加されたことで関連するデバイスドライバからハック的なコードが排除されたほか、コードのクリンナップが実現されたと説明されています。
mii_attach()を追加することでコードの見通しがよくなったということですが、これは副次的な効果で、もともとはIEEE 802.3 annex 31B全二重フロー制御の汎用的な枠組みを実現する目的で導入された機能とのことです。
mii_attach()追加後にはbge(4)、bce(4)、msk(4)、nfe(4)、stge(4)、brgphy(4)、e1000phy(4)、ip1000phy(4)がこの汎用的な枠組みを使うようにコーディングが変更された他、最終的にalc(4)、fxp(4)、cas(4)、gem(4)、jme(4)、re(4)、xl(4)、atphy(4)、bmtphy(4)、gentbi(4)、inphy(4)、jmphy(4)、nsgphy(4)、nsphyter(4)、rgephy(4)もこの汎用的な枠組みを使うように変更が実施されたと紹介されています。
これまではドライバごとに全二重フロー制御の機能を実装していましたが、今後は汎用的な枠組みを通じて利用できるようになります。結果的に、ifconfig(8)から同一の操作で全二重フロー制御の有効/無効を設定できるようになります。たとえば、次のようなre0デバイスがあるとします。
次のようにifconfig(8)を使うことで全二重フロー制御の有効化および無効化の操作ができます。全二重フロー制御はデフォルトでは無効化されています。これは想定していない問題が発生することを防ぐためです。
全二重フロー制御が有効化されると、ifconfig(8)で表示されるデータに「<flowcontrol> (100baseTX <full-duplex,flowcontrol,rxpause,txpause>」といった項目が追加されていることを確認できます。
この他、mediaオプション経由で1000baseTマスターモードを設定する汎用的なサポートが追加されたことも紹介されています。