EN JA
TI(4)
TI(4) FreeBSD Kernel Interfaces Manual TI(4)

名称

tiAlteon Networks Tigon I と Tigon II ギガビットイーサネットアダプタドライバ

書式

このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:

device ti
options TI_SF_BUF_JUMBO
options TI_JUMBO_HDRSPLIT

もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:

if_ti_load="YES"

解説

ti ドライバは、Alteon Networks Tigon ギガビットイーサネットコントローラチップに基づく PCI ギガビットイーサネットアダプタのサポートを行ないます。 Tigon は、組み込まれた R4000 CPU、ギガビット MAC、デュアル DMA チャネル、 PCI インタフェースユニットを含んでいます。 Tigon II は、2 つの R4000 CPU と他の改良を含んでいます。どちらのチップも 32 ビットまたは 64 ビット PCI スロットのいずれかを使用することができます。チップとの通信は、PCI 共有メモリとバスマスタ DMA によって得られます。 Tigon I と II は、ハードウェアマルチキャストアドレスフィルタリング、 VLAN タグ抽出と挿入、および最大 9000 バイトのジャンボイーサネットフレームサイズをサポートします。 Tigon I チップセットは、もはや生産していないことに注意してください: すべての新しいアダプタは、Tigon II チップセットが標準装備になっているはずです。

Tigon チップセットは、10Mbps、100Mbps、1000Mbps の速度をサポートしますが、 10Mbps と 100Mbps の速度のサポートは、適切なトランシーバがあるボードでのみ利用可能です。ほとんどのアダプタは、1000Mbps でのみ動作するように設計されています、しかしながら、ドライバは、同様に下位の速度で動作するそれらの NIC をサポートするべきです。

ジャンボフレームは、インタフェース MTU 設定によってサポートを行ないます。ジャンボフレームを受信し送信するためのアダプタを設定する ifconfig(8) ユーティリティで 1500 バイトより大きい MTU を選択します。ジャンボフレームの使用によって、ファイル転送やデータストリーミングなどの特定のタスクのための性能を大いに向上させることができます。

Tigon 2 ボードのヘッダ分割サポートは、 TI_JUMBO_HDRSPLIT オプション (このオプションは、Tigon1 には、効果がない) をつけでオンにすることができます。 0 コピーの受信とヘッダの分割についてのより多くの議論に関しては、 zero_copy(9) を参照してください。

ti ドライバは、ジャンボ受信バッファに裏打ちされた UMA を使用しますが、 sendfile(2) バッファアロケータを使用するように設定することができます。 sendfile(2) バッファアロケータをオンにするには、 TI_SF_BUF_JUMBO オプションを使用します。

vlans のサポートも、 vlan(4) メカニズムを使用することで利用可能です。詳細に関しては、 vlan(4) マニュアルページを参照してください。

ti ドライバは、次のメディアタイプをサポートします:

autoselect
メディアタイプとオプションの自動選択を有効にします。ユーザは、 /etc/rc.conf ファイルにメディアオプションを加えることによって、手動で自動選択モードを無効にできます。
10baseT/UTP
10Mbps オペレーションを設定します。 mediaopt オプションも 全二重 または 半二重 モードのいずれかを選択するために使用できます。
100baseTX
100Mbps (ファーストイーサネット) オペレーションを設定します。 mediaopt オプションも 全二重 または 半二重 モードのいずれかを選択するために使用できます。
1000baseSX
1000Mbps (ギガビットイーサネット) オペレーションを設定します。 全二重モード だけがこの速度でサポートされます。

ti ドライバは、次のメディアオプションをサポートします:

full-duplex
全二重オペレーションを強制的に設定します。
half-duplex
半二重オペレーションを強制的に設定します。

このデバイスの設定についてのより詳しい情報については、 ifconfig(8) を参照してください。

ハードウェア

ti ドライバは、Alteon Tigon I と II に基づくギガビットイーサネットアダプタをサポートします。 ti ドライバは、次のアダプタでテストされています:

  • 3Com 3c985-SX ギガビットイーサネットアダプタ (Tigon 1)
  • 3Com 3c985B-SX ギガビットイーサネットアダプタ (Tigon 2)
  • Alteon AceNIC V ギガビットイーサネットアダプタ (1000baseSX)
  • Alteon AceNIC V ギガビットイーサネットアダプタ (1000baseT)
  • Digital EtherWORKS 1000SX PCI ギガビットアダプタ
  • Netgear GA620 ギガビットイーサネットアダプタ (1000baseSX)
  • Netgear GA620T ギガビットイーサネットアダプタ (1000baseT)

また次のアダプタは、サポートされるべきですが、まだテストされていません:

  • Asante GigaNIX1000T ギガビットイーサネットアダプタ
  • Asante PCI 1000BASE-SX ギガビットイーサネットアダプタ
  • Farallon PN9000SX ギガビットイーサネットアダプタ
  • NEC ギガビットイーサネット
  • Silicon Graphics PCI ギガビットイーサネットアダプタ

ローダ調整変数

カーネルをブートする前に loader(8) プロンプトで、または loader.conf(5) に格納して調整変数を設定することができます。
hw.ti.%d.dac
この調整変数が、0 に設定されるなら、DAC (Dual Address Cycle) を無効とします。デフォルト値は、ドライバが完全な 64 ビットの DMA アドレシングを使用することを意味する、1 です。

SYSCTL 変数

次の変数は、 sysctl(8) 変数と loader(8) 調整変数の両方で利用可能です: インタフェースは、次の調整変数のいずれかが変更されるとき、変更の効果がある前に、落されて再び上げられていなければなりません。下記に参照される 1 マイクロ秒の時間単位 (clock tick) は、名目上の時間で、実際のハードウェアは、このレベルの精度を供給しないかもしれません。例えば、リリース 12.0 の Tigon 2 (revision 6) カードで、クロックの精度は、5 マイクロ秒です。
dev.ti.%d.rx_coal_ticks
この値、受信合体チック (tick) は、ホストへの NIC DMA 受信返り生産者のポインタの前に経過しなければならない、 (それぞれ 1 マイクロの) 時間単位 (clock tick) を制御し、割り込みを生成します。このパラメータは、rx_max_coal_bds、受信最大合体 BD、調整変数パラメータと連動して動作します。 NIC は、閾値のいずれかを越えるとき、ホストへの受信返り生産者ポインタを返します。 0 の値は、このパラメータが無視され、受信 BD は、受信最大合体 BD 値が到達されるときのみ、返されることを意味します。デフォルト値は、170 です。
dev.ti.%d.rx_max_coal_bds
この値、受信最大合体 BD は、NIC が、受信返りリング生産者インデックスを更新する前に、合体される、受信バッファ記述子の数を制御します。この値が 0 に設定されるなら、合体している受信バッファ記述子を無効にします。デフォルト値は、64 です。
dev.ti.%d.ti_tx_coal_ticks
この値、送信合体チックは、ホストへの NIC DMA 送信消費者ポインタの前に経過しなければならない、 (それぞれ 1 マイクロの) 時間単位 (clock tick) の数を制御し、割り込みを生成します。このパラメータは、tx_max_coal_bds、送信最大合体 BD、調整変数パラメータと連動して動作します。 NIC は、閾値のいずれかを越えるとき、ホストへの送信消費者ポインタを返します。 0 の値は、このパラメータが無視され、送信 BD は、送信最大合体 BD 値が到達されるときのみ、返されることを意味します。デフォルト値は、2000 です。
dev.ti.%d.tx_max_coal_bds
この値、送信最大合体 BD は、NIC が、送信消費者インデックスを更新する前に、合体される、送信バッファ記述子の数を制御します。この値が 0 に設定されるなら、送信バッファ記述子を無効にします。デフォルト値は、32 です。
dev.ti.%d.tx_buf_ratio
この値は、送信バッファ対受信バッファに専念するべき NIC の残りのメモリの比率を制御します。下位 7 ビットは、1/64th 増分の比率を示すために使用されます。例えば、この値を 16 に設定することは、送信バッファを残りのバッファ空間の 1/4 に設定します。どんな場合にも、送信または受信バッファは、68 KB 以下に縮小されません。 1 MB の NIC について、データバッファのためのおおよその合計の空間は、 800 KB です。 512 KB の NIC について、その数は、300 KB です。デフォルト値は、21 です。
dev.ti.%d.stat_ticks
値、stat チックは、ホストへの NIC DMA 統計ブロックの前に経過しなければならない、 (それぞれ 1 マイクロの) 時間単位 (clock tick) の数を制御し、 STATS_UPDATED イベントを生成します。 0 に設定されるなら、統計は、決してホストに DMA (転送) されません。この値は、統計リフレッシュを読み込む誰かを誤解させない十分に高い周波数に設定されることが推奨されます。 1 秒に数回で十分です。デフォルト値は、2000000 (2 秒) です。

IOCTL

ほとんどのネットワークドライバによって実装された標準の socket(2) ioctl(2) 呼び出しに加えて、 ti ドライバは、追加診断、設定とデバッグに使用することができるキャラクタデバイスインタフェースも含んでいます。このキャラクタデバイスインタフェースと gdb(1), の特別パッチバージョンで、ユーザは、Tigon ボードでのファームウェアの実行をデバッグすることができます。

これらの ioctl とそれらの引数は、 < sys/tiio.h> ヘッダファイルで定義されています。

TIIOCGETSTATS
カードから DMA されるカード統計値をほぼ 2 秒毎にカーネルメモリに返します。 (その時間の間隔は、 TIIOCSETPARAMS ioctl を通して変更することができます。) 引数は、 struct ti_stats です。
TIIOCGETPARAMS
割り込みがどのように一体化するかに大きく影響する様々な性能関連のファームウェアパラメータを取得します。引数は、 struct ti_params です。
TIIOCSETPARAMS
割り込みがどのように一体化するかに大きく影響する様々な性能関連のファームウェアパラメータを設定します。引数は、 struct ti_params です。
TIIOCSETTRACE
要求されたタイプに関する情報をトレースするように NIC に伝えます。引数は、 ti_trace_type です。
TIIOCGETTRACE
カードからトレースバッファをダンプします。引数は、 struct ti_trace_buf です。
ALT_ATTACH
この ioctl は、Alteon の Solaris ドライバとの互換性のために使用されます。デバッグのためのキャラクタインタフェースがおそらく 1 つしかないので、デバッグしたい Tigon インスタンスを伝えなければなりません。この ioctl は、 FreeBSD のためには、ノーオペレーションです。
ALT_READ_TG_MEM
Tigon ボードから要求されたメモリ領域を読み込みます。引数は、 struct tg_mem です。
ALT_WRITE_TG_MEM
Tigon ボードの要求されたメモリ領域に書き込みます。引数は、 struct tg_mem です。
ALT_READ_TG_REG
Tigon ボードから要求されたレジスタを読み込みます。引数は、 struct tg_reg です。
ALT_WRITE_TG_REG
Tigon ボードの要求されたレジスタに書き込みます。引数は、 struct tg_reg です。

関連ファイル

/dev/ti[0-255]
Tigon ドライバキャラクタインタフェース。

診断

ti%d: couldn't map memory
致命的な初期化エラーが発生しました。
ti%d: couldn't map interrupt
致命的な初期化エラーが発生しました。
ti%d: no memory for softc struct!
ドライバは、初期化の間、デバイス毎のインスタンス情報のためのメモリの割り付けに失敗しました。
ti%d: failed to enable memory mapping!
ドライバは、PCI 共有メモリマッピングの初期化に失敗しました。カードがバスマスタスロットにないなら、これは、起こるかもしれません。
ti%d: no memory for jumbo buffers!
ドライバは、初期化の間、ジャンボフレームのためのメモリの割り付けに失敗しました。
ti%d: bios thinks we're in a 64 bit slot, but we aren't
BIOS は、まるでそれが 64 ビット PCI スロットにインストールされたかのように NIC をプログラムしましたが、実際には、NIC は、32 ビットのスロットにあります。これは、いくつかの BIOS のバグの結果として起こります。これは、Tigon II では、対処できますが、Tigon I では、初期化のときに失敗します。
ti%d: board self-diagnostics failed!
CPU 状態レジスタの ROMFAIL ビットは、システム起動の後に設定され、搭載 NIC 診断が失敗したことを示しています。
ti%d: unknown hwrev
ドライバは、サポートされないハードウェアリビジョンがあるボードを検出しました。 ti ドライバは、リビジョン 4 (Tigon 1) とリビジョン 6 (Tigon 2) チップをサポートし、それらのデバイスのためだけのファームウェアを持っています。
ti%d: watchdog timeout
デバイスは、ネットワークに応答することを停止しているか、またはネットワーク接続 (ケーブル) に問題があります。

歴史

ti デバイスドライバは、 FreeBSD 3.0 ではじめて登場しました。

作者

ti ドライバは、 Bill Paul <wpaul@bsdi.com>によって書かれました。ヘッダ分割ファームウェアの変更、キャラクタ ioctl(2) インタフェースとデバッグサポートは、 Kenneth Merry <ken@FreeBSD.org>によって書かれました。初期の 0 コピーサポートは、 Andrew Gallatin <gallatin@FreeBSD.org>によって書かれました。
November 14, 2011 FreeBSD