FreeBSD(98) では、確実に fe ドライバの対応ボードが増えていますが、 AT 版の fe は、2.1.5 RELEASE で若干の追加が行われた以降、 新しい対応ボードは増えていませんでした。 また、機能的にも、 if_media インターフェースや MIB など、新しい機能が FreeBSD に追加されているにもかかわらず、 fe ドライバでは対応がされないままになっていました。
しかし、公式な CVS リポジトリとは別に、密かに、 筆者はいくつかのドライバのパッチを作成していました。 現時点 (1998年9月) での、これらのパッチの集大成として、 個人的に作成したのがP9808版です。 これらのパッチの大部分は、 筆者に個人的にコンタクトいただいた方の相談にのる形で作成したものです。 必ずしも全体として一貫しているわけではありません。
P9808 版は、FreeBSD 2.2.6 RELEASE をターゲットとして作成されました。 そのままで 2.2.7 RELEASE や 2.2.8 RELEASE でも利用できます。 2.2.6 PAO との組みあわせもできますが、 2.2.7 PAO と組みあわせるためには、一行だけ修正が必要です。 FreeBSD(98) との組みあわせは現在テスト中です。
P9808 版 (if_fe.c.gz
)
はこちらにあります。
このファイルを適当な方法でダウンロードしてください。
ファイル名を見ていただけばわかる通り、
このファイルは、いわゆる patch ではなく、
fe ドライバの主ソースファイルをそのまま gzip 形式で圧縮したものです。
gunzip コマンドで伸長したあと、カーネルソース中の
/usr/src/sys/i386/isa/if_fe.c
と置き換えてください。
一部のブラウザでは、 ダウンロードした時点で自動的にファイルの伸長 (gunzip) が行われ、 非圧縮のソースファイルとして保存されることがあります。 その場合には (当然ながら) ダウンロード後に gunzip コマンドを使用する必要はありません。
カーネルソースとの置きかえの後で、 カーネルの再構築を行なってください。 カーネル構成ファイルでの、fe デバイスのための device 行の書き方については、 fe ドライバの使い方を見てください。
P9808 版は、筆者が個人的に作成し、配布しているもので、
FreeBSD の公式な配布や CVS リポジトリの一部ではありません。
P9808 版を利用したことによる問題点の報告は、send-pr
ではなく、
筆者まで直接ご連絡ください。
P9808 版を重要な業務に利用することは推奨できません。
P9808 版での主要な強化点は以下の 3 つです。
P9808 版では、従来から対応したいたものに加えて、 以下のようなボードに新しく対応しました。 (これらは全て ISA ボードです。) 各ボードの詳細はこちらにあります。
FreeBSD 2.2 には if_media インターフェースが導入され、 従来の「リンクレイヤフラグ」に代わって、 より直接的な統一された方法で、 メディアの選択を行なえるようになりました。 P9808 版の fe ドライバは、このインターフェースに対応します。 (ただし、必ずしも全てのボードで機能するわけではありません。)
ボードが、ソフトウェア的にメディアを選択する機能を持っている場合、
if_media インターフェースを利用すれば、
ifcofig コマンドの media オプションを使ってメディアを選択することができます。
多くのボードには、
ハードウェア的なメディアの自動選択機能があります。
fe では、その種のボードの場合、
ifconfig fe0 media auto
と指定することで、
メディアの自動選択を要求することもできます。
FreeBSD 2.2 では、if_mib モジュールが導入され、 SNMP のリンクレイヤの MIB を、 ドライバからアプリケーションに提供できるようになりました。 fe ドライバの P9808 版では、 この機能を利用して、dot3 MIB をサポートしています。
なお、fe ドライバは、 性能向上のために、 MB86960 互換チップのハードウェア的な特徴の一つである、 複数フレームの一括送信機能を利用しています。 この副作用として、 衝突回数ヒストグラムを含むいくつかの MIB が、 少々不正確になっています。 将来は、性能を優先するか、統計情報の正確さを優先するか、 選択できるようにしたいと思っています。