|
Linux ドライバ ソフトウェア: Broadcom NetXtreme II ネットワーク アダプタ ユーザーガイド
目次のページに戻る
Linux ドライバ ソフトウェア: Broadcom NetXtreme II ネットワーク アダプタ ユーザーガイド
はじめに
各種制限
パッケージング
Linux ドライバ ソフトウェアをインストールする
Linux ドライバをアンロード・削除する
PCI ファイルをパッチする (オプション)
ネットワーク インストール
オプション プロパティの値を設定する
ドライバのデフォルト
ドライバ メッセージ
チャネル結合によるチーム化
Remote PHY (リモート PHY) サポート
通信情報
Linux iSCSI オフロード
はじめに
このセクションでは、Broadcom NetXtreme II ネットワーク アダプタ用 Linux ドライバについて説明します。
表 1:Broadcom NetXtreme II Linux ドライバ
|
Linux ドライバ
|
詳細
|
|
bnx2
cnic
|
BCM5708/BCM5709 10/100/1000/2500 Mbps ネットワーク アダプタ用 Linux ドライバ。bnx2 ドライバはネットワーク ドライバで、cnic ドライバは bnx2i iSCSI オフロード ドライバに必要な追加機能をサポートします。bnx2i iSCSI ドライバは別のパッケージに含まれています。
|
|
bnx2x
|
BCM57710 10 Gbps ネットワーク アダプタ用 Linux ドライバ
|
|
bnx2i
|
BCM5708/BCM5709 10/100/1000/2500 Mbps ネットワーク アダプタの iSCSI オフロードをイネーブルする Linux ドライバ
|
各種制限
bnx2 ドライバ
ドライバの現行バージョンは、すべての 2.6.x カーネルでテストを実施しました。テストは、i386 と x86_64 アーキテクチャで集中的に実施しました。その他のアーキテクチャでは、限定的なテストのみを実施しました。カーネルによっては、一部のソース ファイルや Makefile を多少変更する必要があります。また、Makefile は、2.6.16 よりも前のカーネルでは cnic ドライバをコンパイルしません。iSCSI オフロードは、2.6.16 以降のカーネルでのみサポートされています。
メモ: シリコン バージョンが B2 より前の Broadcom NetXtreme II BCM5708 デバイスの場合、オープン ソースの bnx2 ドライバでは、ethtool を使用しての NetXtreme II WOL のレポートと設定はサポートしていません。シリコン バージョンが B2 以降である場合、bnx2 ドライバは ethtool を使用して Magic Packet WOL のサポートをレポートします。システムを正常に起動させるには、ethtool を使用してサポートをイネーブルする必要があります。Broadcom NetXtreme II デバイスのシリコン バージョンを確認するには、lspci コマンドを使用します。この場合、「10」はバージョン B0、「11」はバージョン B1、「12」はバージョン B2 を表します。
bnx2x ドライバ
ドライバの現行バージョンは、2.6.9 以降の 2.6.x カーネルでテストを実施しました。ドライバは、2.6.9 よりも前のカーネルではコンパイルできません。テストは、i386 と x86_64 アーキテクチャで集中的に実施しました。その他一部のアーキテクチャでは、限定的なテストのみを実施しました。カーネルによっては、一部のソース ファイルや Makefile を多少変更する必要があります。
bnx2i ドライバ
ドライバの現行バージョンは、2.6.18 カーネル以降の 2.6.x カーネルでテストを実施しました。ドライバは、これよりも前のカーネルではコンパイルできませんが、2.6.16.46 カーネルを実行する SLES 10 SP1 は例外です。SUSE は、SLES 10 SP1 で iscsi_transport カーネル モジュールをアップグレードしており、Broadcom iSCSI オフロード イニシエータが SLES 10 SP1 でサポートされています。テストは、i386 と x86_64 アーキテクチャ、Red Hat EL5、および SUSE 10 SP1 ディストリビューションで集中的に実施しました。
パッケージング
Linux ドライバは、表 2 に示されているパッケージで配布されています。
表 2:Linux ドライバ形式
|
形式
|
bnx2 ドライバ
|
bnx2i ドライバ
|
bnx2x ドライバ
|
|
ソース DKMS RPM
|
bnx2-version.3dkms.src.rpm
|
bnx2i-version.3dkms.src.rpm
|
bnx2x-version.3dkms.src.rpm
|
|
バイナリ DKMS RPM
|
bnx2-version.3dkms.noarch.rpm
|
bnx2i-version.3dkms.noarch.rpm
|
bnx2x-version.3dkms.noarch.rpm
|
|
ソース RPM
|
bnx2-version.src.rpm
|
bnx2i-version.src.rpm
|
bnx2x-version.src.rpm
|
|
圧縮 tar
|
bnx2-version.tar.gz
|
bnx2i-version.tar.gz
|
bnx2x-version.tar.gz
|
|
補足的な tar
|
bnx2_sup-version.tar.gz
|
bnx2i_sup-version.tar.gz
|
bnx2x_sup-version.tar.gz
|
ドライバを構築するための同一ソース ファイルもこの RPM と TAR ソース パッケージに含まれています。補足的な tar ファイルには、ネットワーク インストール用のパッチ、ドライバ ディスケット画像といった付加的なユーティリティが含まれています。
更新された open-iSCSI コンポーネントは、ソース RPM 形式で配布されています。
- iscsi-initiator-utils-6.2.0.868-0.7c.src.rpm:Red Hat EL 5.0 および 5.1 ディストリビューション用の更新された open-iscsi
- open-iscsi-2.0.707-0.25b.src.rpm:SLES 10 SP1 ディストリビューション用の更新された open-iscsi コンポーネント
- open-iscsi-2.0.707-0.44b.src.rpm:SLES 10 SP2 ディストリビューション用の更新された open-iscsi コンポーネント
Linux ドライバ ソフトウェアをインストールする
ソース RPM パッケージをインストールする
ソース TAR ファイルからドライバを構築する
バイナリ DKMS RPM ドライバ パッケージをインストールする
メモ: bnx2/bnx2x/bnx2i ドライバがロードされ、Linux カーネルが更新された場合、ソース RPM または TAR パッケージを使用してインストールしたドライバ モジュールをリコンパイルする必要があります。これは、ソース DKMS RPM には適用されません。
ソース RPM パッケージをインストールする
メモ: この手順の例は bnx2 ドライバを扱っていますが、bnx2x および bnx2i ドライバにも適用されます。
- ソース RPM パッケージをインストールするには、以下を実行します。
rpm -ivh bnx2-version.src.rpm
- ディレクトリを RPM のパスに変更し、カーネル のバイナリ ドライバを作成します (RPM のパスは Linux のディストリビューション版とは異なります)。
cd /usr/src/redhat,OpenLinux,turbo,packages,rpm ...
または
rpmbuild -bb SPECS/bnx2.spec (RPM バージョン 4.x.x の場合)
メモ: ソース RPM パッケージのインストールを試行すると、次のようなメッセージが表示されることがあります。
error:cannot create %sourcedir /usr/src/redhat/SOURCES
エラーの原因としては、rpm-build パッケージがインストールされていないことが考えられます。Linux インストール メディア上の rpm-build パッケージの保存場所を確認し、次のコマンドを使用してインストールします。
rpm -ivh rpm-build-version.arch.rpm
ソース RPM のインストールを完了します。
- 新しいビルトのパッケージをインストールします (ドライバおよび man ページ)。
rpm -ivh RPMS/i386/bnx2-version.arch.rpm
すでに旧バージョンのドライバが含まれている既存のディストリビューション版にインストールする場合は、--force オプションが必要になります。
ドライバは次のパスにインストールされます。
2.6.x カーネル
/lib/modules/kernel_version/kernel/drivers/net/bnx2.ko
bnx2i ドライバ用:
2.6.16 以降のカーネル (bnx2 ドライバ)
/lib/modules/kernel_version/kernel/drivers/net/bnx2.ko
/lib/modules/kernel_version/kernel/drivers/net/cnic.ko
2.6.16 以降のカーネル (bnx2i ドライバ)
/lib/modules/kernel_version/kernel/drivers/iscsi/bnx2i.ko
- ドライバをロードします。
insmod bnx2.ko (2.6.x カーネル)
または
modprobe bnx2
- cnic ドライバをロードします (該当する場合)。
insmod cnic.ko
または
modprobe cnic
ネットワーク プロトコルとアドレスを設定するときは、オペレーション システムの付属文書類を参照してください。
ソース TAR ファイルからドライバを構築する
bnx2 および bnx2x ドライバ
メモ: この手順で使用される例は bnx2 ドライバを扱っていますが、bnx2x ドライバにも適用されます。
- ディレクトリを作成し、そのディレクトリに TAR ファイルを抽出します。
tar xvzf bnx2-version.tar.gz
- カーネル実行用に、ロード可能なモジュールとして bnx2.ko ドライバを作成します。
cd bnx2-version/src
make
- ドライバをロードしてテストします (必要に応じて、最初に既存のドライバをアンロードします)。
rmmod bnx2
insmod bnx2.ko
このコマンドが正しく実行された場合には、メッセージは返されません
- cnic ドライバをロードします (該当する場合)。
insmod cnic.ko
- ドライバおよび man ページをインストールします。
make install
メモ: インストールされているドライバの保存場所は、上の RPM の説明を参照してください。
ドライバを構築した後に、ネットワーク プロトコルとアドレスを設定するときは、オペレーティング システムに付属されているマニュアルを参照してください。
bnx2i ドライバ
- ディレクトリを作成し、そのディレクトリに TAR ファイルを抽出します。
tar xvzf bnx2-version.tar.gz
- カーネル実行用に、ロード可能なモジュールとして bnx2.ko ドライバを作成します。
cd bnx2i-version/driver
make
- ドライバをロードしてテストします (必要に応じて、最初に既存のドライバをアンロードします)。
rmmod bnx2i
insmod bnx2i.ko
- ドライバおよび man ページをインストールします。
make install
メモ: インストールされているドライバの保存場所は、上の RPM の説明を参照してください。
- ユーザー デーモンをインストールします (bnx2id)
cd ${DRV_BASE}/driver
make install_usr
このコマンドで、/sbin の下に bnx2id バイナリがインストールされます。
バイナリ DKMS RPM ドライバ パッケージをインストールする
メモ: この手順で使用される例は bnx2 ドライバを扱っていますが、bnx2x ドライバにも適用されます。
DKMS (Dynamic Kernel Module Support) は、カーネルのアップグレード時にモジュールを簡単に再構築するために設計されています。そのために、カーネルに依存するモジュール ソースが常駐できるフレームワークを作成します。
バイナリ DKMS RPM ドライバ パッケージをインストールするには:
- バイナリ DKMS RPM パッケージをインストールするには、以下を実行します。
rpm -ivh dkms-version.noarch.rpm
- DKMS RPM ドライバ パッケージをインストールします。
rpm -ivh bnx2-version dkms.noarch.rpm
- デーモンをロードします (bnx2id)
詳しくは、http://linux.dell.com/projects.shtml をご覧ください。
必要な iSCSI ソフトウェア コンポーネントをロードして実行する
Broadcom iSCSI オフロード ソフトウェア スイートは、3 つのカーネル モジュールと 1 つのユーザー デーモンで構成されています。必要なソフトウェア コンポーネントは、手動またはシステムによりロードできます。
- 必要に応じて、既存のドライバをアンロードし、ユーザー デーモンを停止します。
手動:
rmmod bnx2i
pkill -9 bnx2id
サービスを使用する:
service bnx2id stop
- iSCSI ドライバとユーザー デーモンをロードします。
手動:
bnx2id
insmod bnx2i.ko
または
modprobe bnx2i
サービスを使用する:
service bnx2id start
Linux ドライバをアンロード・削除する
RPM インスタレーションからドライバをアンロード・削除する
TAR インスタレーションからドライバを削除する
RPM インスタレーションからドライバをアンロード・削除する
メモ:
- この手順で使用される例は bnx2 ドライバを扱っていますが、bnx2x および bnx2i ドライバにも適用されます。
- 2.6 カーネルでは、ドライバ モジュールをアンロードする前に eth# インターフェイスを閉じる必要はありません。
- cnic ドライバがロードされている場合は、cnic ドライバをアンロードしてから bnx2 ドライバをアンロードします。
- bnx2i ドライバをアンロードする前に、ターゲットに接続しているすべてのアクティブな iSCSI セッションを停止します。
ドライバをアンロードするときは、ifconfig を使って、ドライバが開いたすべての eth# インターフェイスを閉じてから以下のように入力します。
rmmod bnx2
rpm を使用してドライバをインストールした場合は、以下のコマンドを実行して削除します。
rpm -e bnx2
TAR インスタレーションからドライバを削除する
メモ: この手順で使用される例は bnx2 ドライバを扱っていますが、bnx2x および bnx2i ドライバにも適用されます。
TAR ファイルから make install を使ってドライバをインストールした場合、bnx2.ko ドライバ ファイルは手動でオペレーティング システムから削除してください。インストールされているドライバの保存場所は、ソース RPM パッケージをインストールするを参照してください。
PCI ファイルをパッチする (オプション)
メモ: この手順で使用される例は bnx2 ドライバを扱っていますが、bnx2x および bnx2i ドライバにも適用されます。
Red Hat kudzu などのハードウェア検出ユーティリティを使用して、bnx2 のサポート デバイスを適切に識別するには、PCI ベンダーとデバイス情報が含まれている多数のファイルを更新する必要があります。
補足的な tar ファイルで提供されたスクリプトを実行して、更新を適用します。たとえば、Red Hat Enterprise Linux の場合は、以下を実行して更新を適用します。
./patch_pcitbl.sh /usr/share/hwdata/pcitable pci.updates
/usr/share/hwdata/pcitable.new bnx2
./patch_pciids.sh /usr/share/hwdata/pci.ids pci.updates
/usr/share/hwdata/pci.ids.new
次に、古いファイルをバックアップして、新しいファイルの名前を変更して、これらを使用することができます。
cp /usr/share/hwdata/pci.ids /usr/share/hwdata/old.pci.ids
cp /usr/share/hwdata/pci.ids.new /usr/share/hwdata/pci.ids
cp /usr/share/hwdata/pcitable /usr/share/hwdata/old.pcitable
cp /usr/share/hwdata/pcitable.new /usr/share/hwdata/pcitable
ネットワーク インストール
NFS、FTP、HTTP による (ネットワーク ブート ディスクまたは PXE を使用する) ネットワークのインストールでは、bnx2/bnx2x ドライバが保存されているドライバ ディスクが必要になることがあります。最新の Red Hat および SuSE バージョン用のドライバ ディスク イメージがこれに保存されます。その他の Linux バージョン用のブート ドライバは、Makefile とメイク環境を修正してコンパイルすることが可能です。詳しくは Red Hat のウェブサイト (http://www.redhat.com) をご覧ください。
オプション プロパティの値を設定する
さまざまなドライバに対応するオプションのプロパティがあります。
bnx2 ドライバ
disable_msi
disable_msi オプション プロパティは、insmod または modprobe コマンドのコマンド ライン引数として指定できます。またプロパティは、modprobe.conf で設定できます。詳細は、man ページを参照してください。ethtool ユーティリティでは、その他のすべてのドライバ設定を確認したり、変更したりできます。詳細は、ethtool man ページを参照してください。ethtool 設定は、再起動やモジュールのリロードで失われます。再起動の後でも設定を維持できるように、ethtool コマンドは、/etc/rc.local などのスタートアップ スクリプトに指定できます。
メモ: プロパティ値の組み合わせによってはコンフリクトを起こすものもあり、不具合の原因ともなりかねませんが、 このような競合をすべてドライバで検知することは不可能です。
このプロパティは、MSI (Message Signal Interrupt、メッセージ信号割り込み) をディスエーブルするために使用します。このプロパティが有効なのは、MSI をサポートする 2.6 カーネルの場合だけです。カーネルでサポートされている場合、MSI はドライバによってデフォルトでイネーブルされます。MSI の動作状況を確認するため、初期化中に割り込みテストが実行されます。テストで合格すると、ドライバによって MSI がイネーブルされます。それ以外の場合は、従来の INTx モードが使用されます。
insmod bnx2.ko disable_msi=1
または
modprobe bnx2 disable_msi=1
bnx2x ドライバ
use_inta
use_inta パラメタは、insmod または modprobe コマンドのコマンド ライン引数として指定できます。このパラメタは、MSI-X が正常に動作しないシステムでの使用に適しています (通常、ドライバが検出して自動的にフォールバックします)。カーネルでサポートされている場合、MSI-X はドライバによってデフォルトでイネーブルされます。MSI-X の動作状況を確認するため、初期化中に割り込みテストが実行されます。テストで合格すると、ドライバによって MSI-X がイネーブルされます。それ以外の場合は、従来の INTx モードが使用されます。
以下に示すように、use_inta パラメタを 1 に設定して、システムにあるすべての NetXtreme II ネットワーク アダプタで、常に MSI-X をディスエーブルします。
insmod bnx2x.ko use_inta = 1
または
modprobe bnx2x use_inta = 1
disable_tpa
disable_tpa パラメタは、TPA (Transparent Packet Aggregation、透明なパケット集約) 機能をディスエーブルするコマンド ライン引数として指定できます。TCP パケットはドライバによってデフォルトで集約されます。高度な TPA 機能をディスエーブルするには、disable_tpa を使用します。
以下に示すように、disable_tpa パラメタを 1 に設定して、システムにあるすべての NetXtreme II ネットワーク アダプタで、TPA 機能をディスエーブルします。またこのパラメタは、modprobe.conf で設定できます。詳細は、man ページを参照してください。
insmod bnx2x.ko disable_tpa=1
または
modprobe bnx2x disable_tpa=1
bnx2i ドライバ
オプション パラメタ en_tcp_dack、error_mask1、および error_mask2 は、bnx2i の insmod または modprobe コマンドのコマンド ライン引数として指定できます。
error_mask1 および error_mask2
「Config FW iSCSI Error Mask #」は、警告または致命的エラーとして処理される iSCSI プロトコル違反を設定するのに使用されます。すべての致命的な iSCSI プロトコル違反は、セッション リカバリ (ERL 0) の原因になります。これらはビット マスクです。
デフォルト: すべての違反はエラーとして処理されます。
注意事項: 結果について不明な場合は、error_mask を使用しないでください。これらの値は、Broadcom 開発チームとケースバイケースで検討されます。これは、ターゲット側で iSCSI の実装の問題を回避するためのメカニズムであり、iSCSI プロトコルの詳細に関する正しい知識がない場合、これらのパラメタを試さないことをお勧めします。
en_tcp_dack
「Enable TCP Delayed ACK」は、オフロード iSCSI 接続で TCP 遅延 ACK 機能をイネーブル/ディスエーブルします。
デフォルト: TCP 遅延 ACK がイネーブルされます。例:
insmod bnx2i.ko en_tcp_dack=0
または
modprobe bnx2i en_tcp_dack=0
sq_size
「Configure SQ size」は、オフロード接続の送信キュー サイズの選択に使用され、SQ サイズはキューが可能な最大の SCSI コマンドを決定します。SQ サイズは、オフロードできる接続数にも関係しています。QP サイズが増加すると、サポートされる接続数は減少します。デフォルト値では、BCM5708 アダプタは 28 の接続をオフロードできます。
デフォルト: 128
範囲: 32 ~ 128
Broadcom の検証は、32、64、128 など、2 の累乗に限定されます。
rq_size
「Configure RQ size」は、オフロードされた接続ごとの非同期バッファ キューのサイズの選択に使用されます。RQ サイズは、iSCSI ASYNC/NOP/REJECT メッセージおよび SCSI センス データの配置に使用されるため、16 より大きくする必要はありません。
デフォルト: 16
範囲: 16 ~ 32
Broadcom の検証は、16、32 など、2 の累乗に限定されます。
event_coal_div
「Event Coalescing Divide Factor」は、iscsi ファームウェアにより発生する割り込み率の管理に使用されるパフォーマンス調整パラメタです。
デフォルト: 1
有効値: 1、2、4、8
bnx2i_nopout_when_commands_active
「iSCSI NOOP even when connection is not idle」というパラメタは、オフロード イニシエータをイネーブルして、リンクが完全にアイドルでない場合でもワイヤ上で iSCSI NOP-OUT を送信します。このパラメタは、iSCSI NOP-OUT と iSCSI CMD pdus が混用されたときに一部の古いターゲットにより不要なセッション リカバリが誘発されるのを回避するために導入されました。新しい iSCSI ターゲット システムは、この状態の影響を受けず、このパラメタがオンにされてかなり長期間が経過しています。
デフォルト: 1
値: バイナリ パラメタ、0/1
これらのパラメタは、modprobe.conf でも設定できます。詳細は、man ページを参照してください。
ドライバのデフォルト
bnx2 ドライバ
速度: 通知されているすべての速度で自動ネゴシエーション
Flow Control (フロー コントロール): 通知されている RX と TX で自動ネゴシエーション
MTU: 1500 (範囲 46-9000)
RX Ring Size (RX リング サイズ): 255 (範囲 0-4080)
RX Jumbo Ring Size (RX ジャンボ リング サイズ): 0 (範囲 0-16320) MTU および RX Ring Size (RX リング サイズ) に基づいてドライバが調整
TX Ring Size (TX リング サイズ): 255 (範囲 (MAX_SKB_FRAGS+1)-255)。MAX_SKB_FRAGS は、カーネルやアーキテクチャによって異なります。x86 の 2.6 カーネルでは、MAX_SKB_FRAGS は 18 です。
Coalesce RX Microseconds (連結 RX マイクロ秒): 18 (範囲 0-1023)
Coalesce RX Microseconds IRQ (連結 RX マイクロ秒 IRQ): 18 (範囲 0-1023)
Coalesce RX Frames (連結 RX フレーム): 6 (範囲 0-255)
Coalesce RX Frames IRQ (連結 RX フレーム IRQ): 6 (範囲 0-255)
Coalesce TX Microseconds (連結 TX マイクロ秒): 80 (範囲 0-1023)
Coalesce TX Microseconds IRQ (連結 TX マイクロ秒 IRQ): 80 (範囲 0-1023)
Coalesce TX Frames (連結 TX フレーム): 20 (範囲 0-255)
Coalesce TX Frames IRQ (連結 TX フレーム IRQ): 20 (範囲 0-255)
Coalesce Statistics Microseconds (連結統計マイクロ秒): 999936 (約 1 秒) (範囲 0-16776960、増加単位 256)
MSI: イネーブル (2.6 カーネルでサポートされており、割り込みテストに合格した場合)
TSO: イネーブル (2.6 カーネル)
WoL: NVRAM の設定に基づく初期設定
bnx2x ドライバ
速度: 通知されているすべての速度で自動ネゴシエーション
Flow Control (フロー コントロール): 通知されている RX と TX で自動ネゴシエーション
MTU: 1500 (範囲 46-9000)
RX Ring Size (RX リング サイズ): 4078 (範囲 0-4078)
TX Ring Size (TX リング サイズ): 4078 (範囲 (MAX_SKB_FRAGS+4)-4078)。MAX_SKB_FRAGS は、カーネルやアーキテクチャによって異なります。x86 の 2.6 カーネルでは、MAX_SKB_FRAGS は 18 です。
Coalesce RX Microseconds (連結 RX マイクロ秒): 25 (範囲 0-3000)
Coalesce TX Microseconds (連結 TX マイクロ秒): 50 (範囲 0-12288)
Coalesce Statistics Microseconds (連結統計マイクロ秒): 999936 (約 1 秒) (範囲 0-16776960、増加単位 256)
MSI-X: イネーブル (2.6 カーネルでサポートされており、割り込みテストに合格した場合)
TSO: Enabled
WoL: Disabled
ドライバ メッセージ
/var/log/messages ファイルにログされるメッセージのうち、一般的なものを以下に示します。dmesg -n <level> を使用すると、コンソールに表示されるメッセージのレベルを指定できます。ほとんどの場合、レベル 6 がデフォルトとされています。すべてのメッセージを表示するには、レベルを上げます。
bnx2 および bnx2x ドライバ
メモ: この手順で使用される例は bnx2 ドライバを扱っていますが、bnx2x ドライバにも適用されます。
ドライバのサインオン
Broadcom NetXtreme II Gigabit Ethernet Driver
bnx2 v1.6.3c (July 23, 2007)
CNIC ドライバのサインオン (bnx2 のみ)
Broadcom NetXtreme II cnic v1.1.19 (Sep 25, 2007)
NIC の検出
eth#:Broadcom NetXtreme II BCM5708 1000Base-T (B0)
PCI-X 64-bit 133MHz found at mem f6000000, IRQ 16, node addr 0010180476ae
cnic: 追加 CNIC デバイス: eth0
リンクアップと速度の指定
bnx2:eth# NIC Link is Up, 1000 Mbps full duplex
リンクダウンの指定
bnx2:eth# NIC Link is Down
MSI が正常にイネーブルされました (bnx2 のみ)
bnx2:eth0: MSI を使用する
MSI-X が正常にイネーブルされました (bnx2x のみ)
bnx2x: eth0: MSI-X を使用する
bnx2i ドライバ
BNX2I ドライバのサインオン
Broadcom NetXtreme II iSCSI Driver bnx2i v1.0.30 (Sep 29, 2007)
iSCSI トランスポート名前結合へのネットワーク ポート
bnx2i: netif=eth2, iscsi=bcm570x-050000
bnx2i: netif=eth1, iscsi=bcm570x-030c00
ドライバは、iSCSI オフロードをイネーブルした CNIC デバイスとのハンドシェイクを完了します
bnx2i [05:00.00]: ISCSI_INIT passed
メモ: このメッセージは、ユーザーが iSCSI 接続の確立を試行するときのみ表示されます。
ドライバは、iSCSI オフロードが CNIC デバイスでイネーブルされていないことを検出します
bnx2i: iSCSI はサポートされていません。dev=eth3
bnx2i: bnx2i: LOM は iSCSI 接続をオフロードするためにイネーブルされていません。dev=eth0
ドライバは、TCP ポートを iSCSI 接続に割り当てられません
bnx2i: 「bnx2id」デーモンを実行して TCP ポートを割り当てます
許可されている最大 iSCSI 接続オフロード制限を超えています
bnx2i: iSCSI コンテキスト リソースを割り当てられません
ターゲット ノードとトランスポート名前結合へのネットワーク ルートは、2 つの異なるデバイスです
bnx2i: conn bind, ep=0x...($ROUTE_HBA) は hba $USER_CHOSEN_HBA に属していません
ここで、ROUTE_HBA は、ルート情報に基づいて接続がオフロードされたネット デバイスであり、USER_CHOSEN_HBA は、ターゲット ノードがバインドされた (iscsi トランスポート名を使用) HBA です
どの CNIC デバイスでもターゲットに到達できません
bnx2i: ルートを確認してください。cnic を使用して接続できません
ネットワーク ルートはダウンしているネットワーク インターフェイスに割り当てられています
bnx2i: ルートを確認してください。hba が見つかりません
iSCSI 接続をジャンボ フレームがイネーブルされたデバイスにオフロードしようとしています
bnx2i: eth# network i/f mtu は #mtu に設定されています
bnx2i: iSCSI HBA は、1500 mtu をサポートできます
メモ: ifconfig を使用して、mtu を 1500 に変更し、インターフェイスを再起動して、iSCSI 接続をオフロードします。
SCSI-ML が開始したホストのリセット (セッション リカバリ)
bnx2i: ホスト #3 のリセットを試行中です
CNIC が iSCSI プロトコル違反を検出しました - 致命的エラー
bnx2i: iscsi_error - wrong StatSN rcvd
bnx2i: iscsi_error - hdr digest err
bnx2i: iscsi_error - data digest err
bnx2i: iscsi_error - wrong opcode rcvd
bnx2i: iscsi_error - AHS len > 0 rcvd
bnx2i: iscsi_error - invalid ITT rcvd
bnx2i: iscsi_error - wrong StatSN rcvd
bnx2i: iscsi_error - wrong DataSN rcvd
bnx2i: iscsi_error - pend R2T violation
bnx2i: iscsi_error - ERL0, UO
bnx2i: iscsi_error - ERL0, U1
bnx2i: iscsi_error - ERL0, U2
bnx2i: iscsi_error - ERL0, U3
bnx2i: iscsi_error - ERL0, U4
bnx2i: iscsi_error - ERL0, U5
bnx2i: iscsi_error - ERL0, U
bnx2i: iscsi_error - invalid resi len
bnx2i: iscsi_error - MRDSL violation
bnx2i: iscsi_error - F-bit not set
bnx2i: iscsi_error - invalid TTT
bnx2i: iscsi_error - invalid DataSN
bnx2i: iscsi_error - burst len violation
bnx2i: iscsi_error - buf offset violation
bnx2i: iscsi_error - invalid LUN field
bnx2i: iscsi_error - invalid R2TSN field
bnx2i: iscsi_error - invalid cmd len1
bnx2i: iscsi_error - invalid cmd len2
bnx2i: iscsi_error - pend r2t exceeds MaxOutstandingR2T value
bnx2i: iscsi_error - TTT is rsvd
bnx2i: iscsi_error - MBL violation
bnx2i: iscsi_error - data seg len != 0
bnx2i: iscsi_error - reject pdu len error
bnx2i: iscsi_error - async pdu len error
bnx2i: iscsi_error - nopin pdu len error
bnx2i: iscsi_error - pend r2t in cleanup
bnx2i: iscsi_error - IP fragments rcvd
bnx2i: iscsi_error - IP options error
bnx2i: iscsi_error - urgent flag error
CNIC が iSCSI プロトコル違反を検出しました - 致命的ではなく、警告です
bnx2i: iscsi_warning - invalid TTT
bnx2i: iscsi_warning - invalid DataSN
bnx2i: iscsi_warning - invalid LUN field
メモ: ドライバは、特定の違反を重大なエラーではなく警告として処理するように設定する必要があります。
ドライバは、セッションをリカバリさせます
conn_err - hostno 3 conn 03fbcd00, iscsi_cid 2 cid a1800
ターゲットから受信した iSCSI PDU を拒否します
bnx2i - printing rejected PDU contents
[0]: 1 ffffffa1 0 0 0 0 20 0
[8]: 0 7 0 0 0 0 0 0
[10]: 0 0 40 24 0 0 ffffff80 0
[18]: 0 0 3 ffffff88 0 0 3 4b
[20]:2a 0 0 2 ffffffc8 14 0 0
[28]: 40 0 0 0 0 0 0 0
Open-iSCSI デーモンがドライバにセッションを渡します
bnx2i: conn update - MBL 0x800 FBL 0x800MRDSL_I 0x800 MRDSL_T 0x2000
チャネル結合によるチーム化
Linux ドライバでは、結合カーネル モジュールおよびチャネル結合インターフェイスを使用して、アダプタをチーム化できます。詳細は、オペレーティング システムの文書類のチャネル結合に関する情報を参照してください。
Remote PHY (リモート PHY) サポート
bnx2 ドライバは、NetXtreme II BCM5708S または BCM5709s デバイスを使用し、Remote PHY (リモート PHY) をサポートし、Remote PHY (リモート PHY) がイネーブルされているブレード サーバー上の Remote PHY (リモート PHY) をサポートします。
Remote PHY (リモート PHY) 対応システムでは、bnx2 ドライバによって NetXtreme II BCM5708S または BCM5709S デバイスがイネーブルされ、ブレード シャーシの銅のより線対 PHY で使用可能な機能を利用できるようになります。bnx2 ドライバは、ethtool 出力で Remote PHY (リモート PHY) より線対モードを使用していることを示します。
メモ: 1.63d よりも前の bnx2 ドライバ バージョンは、Remote PHY (リモート PHY) とこれらの古いドライバを使用しているオペレーティング システムをサポートせず、Remote PHY (リモート PHY) ドライバをサポートするオペレーティング システムとは異なる動作をする可能性があります。Remote PHY (リモート PHY) のサポート状況については、システムとオペレーティング システムの文書類を参照してください。
標準の ethtool コマンドでアダプタを設定してください。
通信情報
詳細な統計と設定情報は、ethtool ユーティリティで表示できます。詳細は、ethtool man ページを参照してください。
Linux iSCSI オフロード
ユーザー アプリケーション - bnx2id
bnx2i RPM パッケージがインストールされている場合、bnx2id アプリケーションは /sbin の下にインストールする必要があります。詳しくは、セクション ソース RPM パッケージをインストールする を参照してください。iSCSI 接続を試行する前に、bnx2id デーモンを実行します。デーモンの支援がなければ、ドライバは iSCSI ターゲットへの接続を確立できません。
bnx2id
bnx2id デーモンには、通常のサーバーで標準の mknod および sh シェルが必要です。NetXtreme II オフロード サポートを使用する iSCSI ブートでは、mknod および sh のバイナリは initrd イメージにバンドルする必要があります。
Open iSCSI ユーザー アプリケーション
open-iscsi プログラム、iscsid および iscsiadm は、Broadcom が配布する open-iscsi パッケージからインストールして実行します。詳しくは、パッケージング を参照してください。事前にインストールされたすべての open-iscsi パッケージを削除しておかなければ、Broadcom iSCSI がサポートするパッケージをインストールできません。
- 既存の open-iscsi パッケージをすべて削除します。
RHEL5
rpm -e iscsi-initiator-utils
SLES10 SP1
rpm -e open-iscsi
- ソース RPM パッケージをインストールします。
rpm -ivh <open-iscsi-package-name>.src.rpm
- ディレクトリを RPM のパスに変更し、カーネルのバイナリ ドライバを作成します。
cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..}
または
rpmbuild -bb SPECS/<open-iscsi-package-name>.spec (RPM バージョン 4.x.x の場合)
RPM パスは、Linux ディストリビューションにより異なります。
- 新しいビルトのパッケージをインストールします。
rpm -ivh RPMS/<arch>/<open-iscsi-package-name>.<arch>.rpm
ここで、<arch> は i386 などのマシン アーキテクチャです。
rpm -ivh RPMS/i386/<open-iscsi-package-name>.i386.rpm
- デーモンを開始します。
iscsid
iSCSI ターゲットを Broadcom NX2 iSCSI トランスポート名にバインドする
デフォルトでは、open-iscsi デーモンは、ソフトウェア イニシエータ (トランスポート名 =「tcp」) を使用して、検出されたターゲットに接続します。iSCSI 接続を CNIC デバイスにオフロードするには、iSCSI ノードのトランスポート結合を明示的に変更する必要があります。これは、次のように iscsiadm cli ユーティリティを使用して実行できます。
iscsiadm --mode node --targetname iqn.2004-06.com.broadcom:tg1 \
--portal 192.168.1.100 --op=update \
--name=node.transport_name --value=${XPORT_NAME}
ここで、XPORT_NAME=bcm570x-xxyyzz
xx - NX2 デバイスの pci バス番号
yy - NX2 デバイスの pci デバイス番号
zz - NX2 デバイスの pci 機能番号
iscsi トランスポート名前結合へのネットワーク インターフェイスは、次を実行することで取得できます。
dmesg | grep "bnx2i:netif"
NetXtreme II デバイスが 2 台あるシステムでの出力例:
bnx2i: netif=eth1, iscsi=bcm570x-050000
bnx2i: netif=eth0, iscsi=bcm570x-030000
ソフトウェア イニシエータに戻るには、次を使用します。
iscsiadm --mode node --targetname iqn.2004-06.com.broadcom:tg1 \
--portal 192.168.1.100 --op=update \
--name=node.transport_name --value=tcp
iSCSI ターゲットへの接続を作成する
iscsiadm コマンドの総合リストは、open-iscsi の文書類を参照してください。これは、ターゲットを検出して、ターゲットへの iscsi 接続を作成するサンプル リストです。
静的エントリを追加する
iscsiadm -m node -p <ipaddr[:port]> -T iqn.2007-05.com.broadcom:target1 -o new
「SendTargets」を使用して、iSCSI ターゲットを検出する
iscsiadm -m discovery --type sendtargets -p <ipaddr[:port]>
「iscsiadm」コマンドを使用して、ターゲットにログインする
iscsiadm --mode node --targetname <iqn.targetname> --portal <ipaddr[:port]> --login
システムでアクティブなすべてのドライバをリストする
「fdisk -l」
オフロード iSCSI 接続を最大化する
128 の未処理コマンドを含むデフォルトのドライバ パラメタを設定した状態で、bnx2i は最大 28 の iSCSI 接続をオフロードできます。これは絶対的な制限ではなく、チップ上でリソースの割り当てを計算したものです。bnx2i は、共有キュー サイズを減らすことで 28 を超える接続をオフロードできますが、これにより、1 接続あたりの最大未処理タスク数が制限されます。sq_size および rq_size については、オプション プロパティの値を設定する を参照してください。許可された最大の接続オフロード制限に達すると、ドライバは次のメッセージを syslog に記録します。「bnx2i: iSCSI コンテキスト リソースを割り当てられません」
Linux iSCSI オフロードの FAQ
- すべての Broadcom NetXtreme II アダプタが iSCSI オフロードをサポートするわけではありません。
- iSCSI セッションは、動的削除とホット プラグの後でリカバリしません。
- iSCSI ドライバ/ファームウェアは、iSCSI 接続をジャンボ フレームがイネーブルされた CNIC デバイスにオフロードしません。
- MPIO が正常に動作するには、iSCSI nopout を各 iSCSI セッションでイネーブルする必要があります。noop_out_interval および noop_out_timeout 値を設定する手順については、open-iscsi の文書類を参照してください。
- システムに複数の CNIC デバイスがあり、システムが Broadcom の iSCSI ブート ソリューションによりブートされる場合、ブート ターゲットの /etc/iscsi/nodes の下にある iscsi ノードがブートに使用される NIC にバインドされていることを確認してください。
各種制限および免責条項の項目にはすべて目を通してください。
目次のページに戻る
|