| BXE(4) | FreeBSD Kernel Interfaces Manual | BXE(4) |
名称
bxe — Broadcom NetXtreme II Ethernet 10Gb PCIe アダプタドライバ書式
このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
もう一つの方法として、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます:
if_bxe_load="YES"
解説
bxe ドライバは、10Gb チップの Broadcom NetXtreme II ファミリに基づいた PCIe 10Gb イーサネットアダプタのサポートを行います。ドライバは、ジャンボフレーム、VLAN タグ付け、チェックサムオフロード (IPv4, TCP, UDP, IPv6-TCP, IPv6-UDP)、MSI-X 割り込み、 TCP Segmentation Offload (TSO)、Large Receive Offload (LRO) と Receive Side Steering (RSS) をサポートします。ハードウェア
bxe ドライバは、下記を含む 10Gb イーサネットコントローラチップの Broadcom NetXtreme II ファミリに基づいた様々な NIC のサポートを行います:
- Broadcom NetXtreme II BCM57710 10Gb
- Broadcom NetXtreme II BCM57711 10Gb
- Broadcom NetXtreme II BCM57711E 10Gb
- Broadcom NetXtreme II BCM57712 10Gb
- Broadcom NetXtreme II BCM57712-MF 10Gb
- Broadcom NetXtreme II BCM57800 10Gb
- Broadcom NetXtreme II BCM57800-MF 10Gb
- Broadcom NetXtreme II BCM57810 10Gb
- Broadcom NetXtreme II BCM57810-MF 10Gb
- Broadcom NetXtreme II BCM57840 10Gb / 20Gb
- Broadcom NetXtreme II BCM57840-MF 10Gb
設定
ドライバの振る舞いを調整するるために設定することができる多くの設定パラメータがあります。次のシステムブートの間に影響を受ける loader.conf(5) ファイルによってこれらのパラメータを設定することができます。次のパラメータは、ドライバの ALL インスタンスに影響します。- hw.bxe.debug
-
DEFAULT = 0
ドライバのデフォルトのロギングレベルを設定します。より詳細については、下記の「診断とデバック」セクションを参照してください。
- hw.bxe.interrupt_mode
-
DEFAULT = 2
デフォルトの割り込みモードを設定します: 0=IRQ, 1=MSI, 2=MSIX。 MSIX に設定され、割り付けが失敗するなら、ドライバは、ロールバックし、 MSI の割り付けを試みます。 MSI の割り付けが失敗するなら、ドライバは、ロールバックし、固定のレベル IRQ 割り付けを試みます。 IRQ 割り付けが失敗するなら、ドライバのロードは、失敗します。 MSI/MSIX で、ドライバは、さらにデフォルト処理ために、もう 1 つの各キューのためのベクトルを割り付けることを試みます。
- hw.bxe.queue_count
-
DEFAULT = 4
早いパスパケット処理のキューのデフォルト番号を設定します。 1 つの MSI/MSIX 割り込みベクトルは、キューごとに割り付けられることに注意してください。
- hw.bxe.max_rx_bufs
-
DEFAULT = 0
キューごとに割り付けられる受信バッファの最大数を設定します。ゼロ (0) は、すべてのバッファ記述子のための受信バッファを割り付けることを意味します。デフォルトで、これは、この設定パラメータのための最大値であるキューごとの 4080 のバッファと一致します。
- hw.bxe.hc_rx_ticks
-
DEFAULT = 25
受信パスで一体化するホスト割り込みのためにチックの数を設定します。
- hw.bxe.hc_tx_ticks
-
DEFAULT = 50
受信パスで一体化するホスト割り込みのためにチックの数を設定します。
- hw.bxe.rx_budget
-
DEFAULT = 0xffffffff
割り込みで処理する受信パケットの最大数を設定します。予算 (budget) が到達されるなら、残りの/保留中のパケットは、スケジュールされたタスクキューで処理されます。
- hw.bxe.max_aggregation_size
-
DEFAULT = 32768
最大の LRO 集合体のバイトサイズを設定します。ハードウェアが集めるより多くのパケットのより高い値。最大は、65K です。
- hw.bxe.mrrs
-
DEFAULT = -1
PCI MRRS を設定する: -1=Auto, 0=128B, 1=256B, 2=512B, 3=1KB
- hw.bxe.autogreeen
-
DEFAULT = 0
AutoGrEEEN を設定する: 0=HW_DEFAULT, 1=FORCE_ON, 2=FORCE_OFF
- hw.bxe.udp_rss
-
DEFAULT = 0
UDP のための 4 つのタプル (tuple) RSS を有効にする / 無効にする: 0=DISABLED, 1=ENABLED
キューの数と受信バッファを修正するとき、特に注意しなければなりません。 FreeBSD は、 mbuf(9) 割り付けの最大数に制限されています。バッファの割り付けが失敗するなら、インタフェースの初期化は、失敗し、インタフェースは、使用可能になりません。ドライバは、バッファの割り付けのために最善を尽くします。それは、すべてか、または努力なしです。
sysctl(8) を使用して、 mbuf(9) の割り付けの制限を調整することができ、次のように netstat(1) で現在の使用法を見ることができます:
# netstat -m # sysctl kern.ipc.nmbclusters # sysctl kern.ipc.nmbclusters=<#>
動的にデフォルトの設定を上書きするためにインスタンスごとに設定することができる追加の設定パラメータがあります。下記の '#' は、ドライバのインスタンス / インタフェースのユニット番号と置き換えなければなりません:
- dev.bxe.#.debug
-
DEFAULT = 0
ドライバのインスタンスのデフォルトのロギングレベルを設定します。詳細については、上記の hw.bxe.debug と下記の「診断とデバッグ」セクションを参照してください。
- dev.bxe.#.rx_budget
-
DEFAULT = 0xffffffff
ドライバのインスタンスのための割り込みで処理する受信パケットの最大数を設定します。より詳細については、上記の hw.bxe.rx_budget を参照してください。
追加の項目は、 ifconfig(8) を使用して設定することができます:
- MTU - Maximum Transmission Unit
-
DEFAULT = 1500
RANGE = 46-9184# ifconfig bxe# mtu <n>
- Promiscuous Mode
-
DEFAULT = OFF
# ifconfig bxe# [ promisc | -promisc ]
- Rx/Tx Checksum Offload
-
DEFAULT = RX/TX CSUM ON
Rx と Tx の設定は、依存していないことに注意してください。# ifconfig bxe# [ rxcsum | -rxcsum | txcsum | -txcsum ]
- TSO - TCP Segmentation Offload
-
DEFAULT = ON
# ifconfig bxe# [ tso | -tso | tso6 | -tso6 ]
- LRO - TCP Large Receive Offload
-
DEFAULT = ON
# ifconfig bxe# [ lro | -lro ]
診断とデバッグ
sysctl(8) を通して bxe によって公開された多くの統計値があります。デフォルトのドライバの設定をダンプするためには:
# sysctl -a | grep hw.bxe
すべてのインスタンスの設定と詳細な統計値をダンプするためには:
# sysctl -a | grep dev.bxe
(ドライバにインスタンス / インタフェースのユニット番号で '#' を置き換え) 単一のインスタンスのための情報をダンプするためには:
# sysctl -a | grep dev.bxe.#
単一のインスタンスのすべてのキューのための情報をダンプするためには:
# sysctl -a | grep dev.bxe.#.queue
(キュー番号で追加の '#' を置き換え) 単一のインスタンスの単一のキューに対する情報をダンプするためには:
# sysctl -a | grep dev.bxe.#.queue.#
bxe ドライバには、システムログに大量のデバッグメッセージをダンプする能力があります。 hw.bxe.debug sysctl(8) でロギングのデフォルトのレベルを設定することができます。ダンプされているあまりにも多くのログ記録の結果となるかもしれないので、この設定には注意してください。このパラメータがデフォルトのパラメータであるので、すべてのインスタンスに影響し、ドライバのタイミングを劇的に変更します。デバッグを援助するよりよい選択肢は、 dev.bxe.#.debug sysctl(8) で特定のインスタンスのデバッグレベルを動的に変更することです。これによって、利用者は、まとめてさまざまなデバッググループのログ記録のオン/オフを切り替えることができます。
切り替えることができるさまざまなデバッググループは、次の通りです:
DBG_LOAD 0x00000001 /* ロードしアンロードします */ DBG_INTR 0x00000002 /* 割り込み処理 */ DBG_SP 0x00000004 /* slowpath 処理 */ DBG_STATS 0x00000008 /* stat 更新 */ DBG_TX 0x00000010 /* パケット送信 */ DBG_RX 0x00000020 /* パケット受信 */ DBG_PHY 0x00000040 /* phy/link 処理 */ DBG_IOCTL 0x00000080 /* ioctl 処理 */ DBG_MBUF 0x00000100 /* mbuf 情報のダンプ */ DBG_REGS 0x00000200 /* レジスタのアクセス */ DBG_LRO 0x00000400 /* lro 処理 */ DBG_ASSERT 0x80000000 /* デバッグのアサート */ DBG_ALL 0xFFFFFFFF /* flying monkeys */
例えば、bxe0 で受信パスの問題をデバッグするためには:
# sysctl dev.bxe.0.debug=0x22
終了するとき、ログ記録の裏打ちをオフにします:
# sysctl dev.bxe.0.debug=0
歴史
bxe デバイスドライバは、 FreeBSD 9.0 ではじめて登場しました。作者
bxe ドライバは、 <edavis@broadcom.com>, <davidch@broadcom.com>と <zambrano@broadcom.com>によって書かれました。| April 29, 2012 | FreeBSD |