特記事項: hme FastEthernet デバイスドライバ

第 3 章 パラメタの設定

この章では、ndd ユーティリティーを使用して、/etc/system ファイルまたは hme.conf ファイル内で、hme デバイスドライバのパラメタを設定する方法について説明します。ndd ユーティリティーを使用して構成したパラメタは、システムを再起動すると無効になります。

再起動した後でもパラメタ値を常に有効にし、システム内のすべてのデバイスに hmeドライバのパラメタを構成するには、/etc/system ファイルにパラメタ値を入力します。これにより再起動時に /etc/system ファイルが読み込まれ、ファイル内のパラメタ値が設定されます。

システム内の特定のデバイスに合わせてパラメタを設定するには、/kernel/drv ディレクトリの hme.conf ファイルにパラメタを設定します。hme.conf ファイルで設定したパラメタは、/etc/system ファイルで設定したパラメタよりも優先され、/etc/system ファイルで設定したパラメタを無効にします。hme.conf ファイルで設定したパラメタ値は、再起動しても常に有効となります。

パラメタのオプション

qfe デバイスドライバのパラメタを設定する方法は 3 通りあり (ndd/etc/systemqfe.conf)、必要に応じて使い分けることができます。システムを再起動するまで有効となるパラメタ値を設定するには、ndd ユーティリティーを使用します。この方法は、パラメタの設定を試してみる際に有用です。

システムを再起動した後でも有効となるパラメタ値を設定する方法を以下に示します。

パラメタの設定を確認するには、ndd ユーティリティーを使用します (第 2 章「パラメタの定義」を参照)。ndd ユーティリティーを使用して設定したパラメタは、システムを再起動すると無効になります。パラメタ値を、再起動をした後でも有効にするには、/etc/system ファイルまたは hme.conf ファイルに値を設定します。設定方法については、この章の後で説明します。

ndd を使用したパラメタの設定

システムを再起動するまで有効となるパラメタを設定するには、ndd ユーティリティーを使用します。ndd ユーティリティーは、DLPI (Data Link Provider Interface) が実装されているすべてのネットワークドライバに対応しています。

以下の節では、hme ドライバと ndd ユーティリティーを使用して、それぞれの SUNW,hme デバイスのパラメタを変更 (-set オプションを使用) または表示 (-set オプションを使用しない) する方法を説明します。

デバイスインスタンスの特定

SUNW,hme デバイスが複数ある場合は、ndd ユーティリティーを使用して hme デバイスのパラメタの表示または設定するには、ndd ユーティリティーのデバイスインスタンスを指定する必要があります。


注 -

hme デバイスが 1 つのみの場合は、ndd ユーティリティーによって自動的にこのデバイスが選択されます。


ndd ユーティリティーにデバイスインスタンスを指定する
  1. /etc/path_to_inst ファイルを調べて、目的のデバイスのインスタンスを特定します。

  2. インスタンス番号を使用して、目的のデバイスを選択します。


    % ndd -set /dev/hme instance インスタンス番号
    

    選択したデバイスは、別のデバイスを選択するまで有効となります。

非対話モードと対話モード

ndd ユーティリティーは、以下の 2 種類のモードで使用することができます。

非対話モードでは、ndd ユーティリティーを使用して特定のコマンドを実行します。コマンドが実行されると、ユーティリティーは終了します。対話モードでは、ndd ユーティリティーを使用して複数のパラメタ値を表示または設定することができます。詳細は、ndd(1M) のマニュアルページを参照してください。

非対話モードで ndd ユーティリティーを使用する

ここでは、パラメタ値を変更または表示する方法を説明します。

  1. パラメタ値を変更するには、-set オプションを使用します。

    -set オプションを指定して ndd ユーティリティーを呼び出すと、ユーティリティーは指定された値をドライバに引き渡し、パラメタに割り当てます。値には /dev/hme ドライバインスタンスを、名称まで含めて指定します。


    % ndd -set /dev/hme パラメタ名 
    

  1. パラメタ値を表示するには、パラメタ名だけを指定し、を省略します。

    -set オプションを省略すると、照会とみなされます。ndd ユーティリティーは指定されたドライバインスタンスを照会し、指定されたパラメタの値を取り出し、表示します。


    % ndd /dev/hme パラメタ名
    

対話モードで ndd ユーティリティーを使用する
  1. 対話モードでパラメタ値を変更するには、以下のように ndd hme を指定します。

    ndd ユーティリティーは、パラメタ名の入力を促すプロンプトを表示します。


    % ndd /dev/hme
    name to get/set? (パラメタ名を入力します。
                      ? を入力するとパラメタの一覧が表示されます)

    次にパラメタ値を入力します。詳細は、表 2-1表 2-8 を参照してください。

  1. hme ドライバで使用することができるすべてのパラメタを表示するには、 ndd /dev/hme ¥? と入力します。


    例 3-1 hme ドライバが対応しているすべてのパラメタの一覧表示

    example# ndd /dev/hme ¥?
    ?                             (read only)
    transceiver_inuse             (read only)
    link_status                   (read only)
    link_speed                    (read only)
    link_mode                     (read only)
    ipg1                          (read and write)
    ipg2                          (read and write)
    use_int_xcvr                  (read and write)
    pace_size                     (read and write)
    adv_autoneg_cap               (read and write)
    adv_100T4_cap                 (read and write)
    adv_100fdx_cap                (read and write)
    adv_100hdx_cap                (read and write)
    adv_10fdx_cap                 (read and write)
    adv_10hdx_cap                 (read and write)
    autoneg_cap                   (read only)
    100T4_cap                     (read only)
    100fdx_cap                    (read only)
    100hdx_cap                    (read only)
    10fdx_cap                     (read only)
    10hdx_cap                     (read only)
    lp_autoneg_cap                (read only)
    lp_100T4_cap                  (read only)
    lp_100fdx_cap                 (read only)
    lp_100hdx_cap                 (read only)
    lp_10fdx_cap                  (read only)
    lp_10hdx_cap                  (read only)
    instance                      (read and write)
    lance_mode                    (read and write)
    ipg0                          (read and write)
    example# 

強制モードの設定

強制モード (自動ネゴシエーション不可) を設定する方法を説明します。

ローカルトランシーバの機能から 1 つを選択して、強制モードに設定する
  1. 5 つある機能 (adv_100T4_capadv_100fdx_capadv_100hdx_capadv_10fdx_capadv_10hdx_cap) から 1 つを選択し、その値を 1 に設定します。

    ローカルトランシーバの機能を複数選択した場合は、優先順位の高い機能が選択されます。

  2. ハードウェアが通知するローカルトランシーバの機能として、自動ネゴシエーション不可を説明する強制モード を設定します (adv_autoneg_cap 0)。

    「対話モードで ndd ユーティリティーを使用する」の説明に従って、ndd ユーティリティーを使用してください。

自動ネゴシエーションモード

ここでは、5 つあるローカルトランシーバ機能から 1 つ以上を選択して、自動ネゴシエーションモードに設定する方法を説明します。

自動ネゴシエーションモードに設定する
  1. 遠隔システムに通知する機能として、5 つある機能 (adv_100T4_capadv_100fdx_capadv_100hdx_capadv_10fdx_capadv_10hdx_cap) から 1 つ以上を選択し、その値を 1 に設定します。

  2. ハードウェアが通知するローカルトランシーバの機能として、自動ネゴシエーションを設定します (adv_autoneg_cap 1)。

    「対話モードで ndd ユーティリティーを使用する」の説明に従って、ndd ユーティリティーを使用してください。

TCP/IP を設定することによる性能の最大化

以下に、性能を最大にするのための TCP/IP スループットのベンチマークの方法と、TCP/IP のハイウォーターマークの設定方法について説明します。

TCP/IP を設定して性能を最大にする
  1. TCP/IP スループットのベンチマークを実行するときには、ndd コマンドを使用して TCP パラメタのいくつかに値を入力し、性能を最大にします。

  1. TCP のハイウォーターマークを設定するときには、以下の ndd コマンドを入力して、性能を最大にします。


    # ndd -set /dev/tcp tcp_xmit_hiwat 65535
    # ndd -set /dev/tcp tcp_recv_hiwat 65535
    # ndd -set /dev/tcp tcp_cwnd_max 65534

/etc/system ファイル内のパラメタの設定

システムのすべての SUNW,hme デバイスに対して hme ドライバパラメタを設定し、かつシステムの再起動後もパラメタ変数が有効になるようにするには、/etc/system ファイルにパラメタ変数を入力します。システムを再起動すると、/etc/system ファイルが読み取られ、オペレーティングシステムのカーネルの hme モジュールにパラメタ変数が設定されます。

/etc/system ファイルに設定する変数を以下に示します。

表 3-1 /etc/system ファイルに設定する変数

パラメタ 

変数 

ipg1

hme_ipg1

ipg2

hme_ipg2

use_int_xcvr

hme_use_int_xcvr

pace_size

hme_pace_size

adv_autoneg_cap

hme_adv_autoneg_cap

adv_100T4_cap

hme_adv_100T4_cap

adv_100fdx_cap

hme_adv_100fdx_cap

adv_100hdx_cap

hme_adv_100hdx_cap

adv_10fdx_cap

hme_adv_10fdx_cap

adv_10hdx_cap

hme_adv_10hdx_cap

lance_mode

hme_lance_mode

ipg0

hme_ipg0

第 2 章「パラメタの定義」で説明したこれらのパラメタ値は、システム上のすべての SUNW,hme デバイスに適用することができます。パラメタの説明については、表 2-2表 2-8 を参照してください。以下に /etc/system ファイルに設定する例を示します。

再起動時に ipg1 を 10 に、ipg2 を 5 に設定する
  1. スーパーユーザーになります。

  2. テキストエディタを使用し、/etc/system ファイルに以下の行を追加します。


    set hme:hme_ipg1 = 10
    set hme:hme_ipg2 = 5
    

  3. /etc/system ファイルを保存します。

  4. すべてのファイルを保存してすべてのプログラムを終了し、ウィンドウシステムを終了します。

  5. # プロンプトに対して init 6 と入力し、システムを再起動します。

    システムが停止して再起動されます。

hme.conf ファイルを使用したパラメタの設定

/etc/system ファイル内のパラメタの設定」で説明されているパラメタは、デバイスごとに設定することもできます。それらのパラメタをデバイスごとに設定するには、/kernel/drv ディレクトリに hme.conf ファイルを作成します。hme.conf ファイルのパラメタ設定は、/etc/system ファイルの設定に優先します。システムの特定のデバイスに対して特定のパラメタを設定する必要がある場合は、hme.conf ファイルを使用してください。hme.conf ファイルには、第 2 章「パラメタの定義」で示されている読み取り・書き込み可能なパラメタを設定することができます。

詳細は、prtconf(1M)、system(4)、driver.conf(4) のマニュアルページを参照してください。以下に hme.conf ファイルに設定する例を示します。

SBus スロット 0xe の ipg1 を 20 に設定し、ipg2 を設定する
  1. prtconf -v コマンドを実行し、出力を more コマンドにパイプで渡すか (prtconf -v | more)、出力先をファイルに変更して (prtconf -v > ファイル名)、保存されたファイルの内容を表示します。

  2. prtconf -v の出力から、SUNW,hme,instance #0SUNW,hme,instance #1 などのセクションを探します。

    Sun Ultra 1 Creator シリーズのシステムでは、SUNW,hme,instance #0 に対応する出力は以下のようになります。


    SUNW,hme, instance #0
                Driver software properties:
                    name <pm_norm_pwr> length <4>
                        value <0x00000001>.
                    name <pm_timestamp> length <4>
                        value <0x30743b26>.
                Register Specifications:
                    Bus Type=0xe, Address=0x8c00000, Size=108
                    Bus Type=0xe, Address=0x8c02000, Size=2000
                    Bus Type=0xe, Address=0x8c04000, Size=2000
                    Bus Type=0xe, Address=0x8c06000, Size=2000
                    Bus Type=0xe, Address=0x8c07000, Size=20

  3. スーパーユーザーになります。

  4. テキストエディタを使用して /kernel/drv ディレクトリに hme.conf ファイルを作成し、そのファイルに以下のような行を追加します。

    1. name="hme" および class="sbus" と指定します。

    2. reg 属性を使用して、目的のデバイス (この例では 0xe) を指定します。 prtconf -v の出力の Bus Type の後に続く値を使用します。

    3. アドレスを入力し、その後に指定サイズを入力します。以下の例のように、それぞれのサイズの先頭に 0x0 の列を付けてください。

    4. ipg1ipg2 を設定します。最後の値の後にセミコロン (;) を付けます。

      この例では、ipg1ipg2 をそれぞれ 20 と 10 に設定しています。ipg パラメタの定義については、第 2 章「パラメタの定義」を参照してください。


      name="hme" class="sbus"
      reg=0xe,0x8c00000,0x00000108,
      0xe,0x8c02000,0x00002000,
      0xe,0x8c04000,0x00002000,
      0xe,0x8c06000,0x00002000,
      0xe,0x8c07000,0x00000020
      ipg1=20 ipg2=10;

  5. hme.conf ファイルを保存します。

  6. すべてのファイルを保存してすべてのプログラムを終了し、ウィンドウシステムを終了します。

  7. # プロンプトに対して init 6 と入力し、システムを再起動します。

hme.conf ファイルを使用して PCI-Bus hme インタフェースにドライバのパラメタを設定する

PCI-Bus ベースのシステムにドライバのパラメタを設定する
  1. 目的のデバイスのハードウェアパス名をデバイスツリーから取得します。

    通常、デバイスのパス名と関連するインスタンス番号は、/etc/path_to_inst ファイルに含まれています。たとえば、SunSwift-PCI カード 1 枚が取り付けられている Sun Ultra 30 UPA/PCI システムでは、/etc/path_to_inst ファイル内に (他のデバイス用のエントリに加えて) 以下の 2 つのエントリが存在します。


    "/pci@1f,4000/network@1,1" 0 "hme" 
    "/pci@1f,4000/pci@4/SUNW,hme@0,1" 1 "hme"

    • 最初のエントリは、マザーボード上の hme デバイスに対応しています。2 番目のエントリは、SunSwift-PCI カード上の hme デバイスに対応しています。

    • 上記の 2 行についての詳細は以下のとおりです。

      • 最初の二重引用符内は、デバイスツリー内のハードウェアノード名を表します。

      • 次の列の数字は、インスタンス番号です。

      • 最後の二重引用符内はドライバ名です。

    • デバイスパス名の最後の / 文字と@ 文字の間の要素は、デバイス名を表します。

    • 最後の要素の前のパス名は、親の名前を表します。

    • 最後の@ 文字の後のコンマで区切られた数字は、デバイス番号と機能番号を表し、この 2 つで装置アドレスと呼ばれます。

hme.conf ファイルで PCI デバイスを明確に指定するには、名前と親、装置アドレスを使用します。PCI デバイス指定の詳細については、pci(4) のマニュアルページを参照してください。

上記の例の 1 行目では、以下のようになります。

2 行目では、以下のようになります。

  1. /kernel/drv/hme.conf ファイル内の以上の 2 つのデバイスに、ipg1 および ipg2 のパラメタを設定します。


    name = "SUNW,hme" parent = "/pci@1f,4000" unit-address = "1,1" ipg1=10 ipg2=5; 
    name = "SUNW,hme" parent = "/pci@1f,4000/pci@4" unit-address = "0,1" ipg1=20 ipg2=10;

    パス名でデバイス名が network となっている場合でも、マザーボードデバイスには デバイス名として SUNW,hme が使用されます。デバイス名 SUNW,hme は、マザーボードデバイスと互換性のある属性の値です。