From: Naoaki Sumida <naoaki@phantom.ne.jp>
Subject: [FreeBSD-users-jp 14746] 100BASE-TX  21140 based NIC
Date: Wed, 25 Jun 1997 10:16:42 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org



すみだ です。
最近ＭＬに復帰しました。


DEC 21140 を使った 100Mbps の動作報告＆その他


今回テストしたボードは４個
１．ＤＯＳ／Ｖパラダイスで購入した、赤いストライプの箱のメーカー不明の
    ボード。
２．Allied Telesis  LA100-PCI
３．PLANET  ENW9501-F
４．ELECOM  LD-10/100PCI


１と２のボードは外観は同じ物。
３は１と同じチップを使っています。接続が多少ちがいます。

＃ １に添付の DIAGツールは ID Check で FAILになる。
＃   W95 ドライバも動作しない。
＃ ２は安く売っていた。修理品みたい。
＃   でも永久保証＋日本語詳細マニュアル付き
＃ ３はブートＲＯＭが付けれる。
＃   中身は箱に印刷のボードと違う。
＃   添付の W95 ドライバで FreeBSD + DHCP のマシンと相性わるい。
＃   DHCP 使わなければＯＫ。
＃ ４は値段が一番高い。日本語マニュアル付き


ＭＬにでてきたことのあるボードばかりですが、かなり詳しく調べたので
参考にしてください。
＃適当に買ってきてＭＬを検索した
＃地元の店ではこのぐらいしか見当たりません。

○ 自動認識
△ コマンドで設定が必要
× 使えない。パッチ必要。

2.2-beta
          10Mbps  10M-FD  100Mbps   100M-FD
１         ×       ×       ×       ×     ※１
２         ×       ×       ×       ×     ※１
３         ×       ×       ×       ×     ※１
４         ○       ×       ○       ×     ※２

de-970513.tar.gz
          10Mbps  10M-FD  100Mbps   100M-FD
１         △       △       ○       △     ※３
２         △       △       ○       △     ※３
３         ○       ○       ○       ○     ※４
４         ○       ×       ○       △     ※５

※１   DE500-AA として認識させれば動く
       参考１のパッチで
           ○       ×       ○       △
       のようになります。
       10/100 自動認識。
       100M-FD は ifconfig de? link2 が必要。
※２   10/100 は起動時自動認識
       10M-FD はボード未対応
       10/100 両方可の相手だと 10 になる。
       ifconfig de? link2 で 100 に切り替え。
       100M-FD にはできなかった。（パッチすればできるはず）
※３   10Mbps は ifconfig de? link0 しないとエラーが表示され続ける。
           de0: enabling 100baseTX port
           de0: link down: cable problem?
           de0: enabling 100baseTX port
           de0: link down: cable problem?
       しなくてもデータは通る。
       10M-FD  ifconfig de? link1  必要
       100M-FD  ifconfig de? link2  必要
       起動後も 10M <-> 100M のモード移行は自動。Duplex モードは変わらない。
       パッチを当てれば３のボードと同じ動作にできる。−＞ 参考２
※４   すべて自動認識ＯＫ
       起動後も自動でモード移行（ダイナミックオートネゴシエーション）
※５   10/100 は起動時自動認識
       10M-FD はボード未対応
       10/100 両方可の相手だと 10 になる。
       ifconfig de? link0 link1 で 100 に切り替え。
       ifconfig de? link2 で 100-FD に切り替え。


de-970513.tar.gz を使えばカーネルのパッチなしで４個とも使える。


上記テストは、de ドライバにパッチをあてて、特定のモードにしか
ネゴシエーションしないようにした NIC にクロスケーブルで接続して
調べた結果です。 多分自動ネゴのＨＵＢに接続したのと同じはず？
100M-FD 対応のＨＵＢは高くて買えない。


間違っているとこがあれば御指摘ください。
なんかごちゃごちゃになってきた。
最近 2.2.1R の CD-ROM が手に入ったのでこれでてすとします。

------------------
参考１
１のボードは "EN1207TX" のぱっち
 [FreeBSD-users-jp 5792] 参照

２と３は特定できそうな情報が ＳＲＯＭ上にないので次のように
ユニット番号で指定とか。（変？）
====================================
--- if_de.c.orig        Tue Dec  3 19:52:49 1996
+++ if_de.c     Mon Jun 23 15:15:46 1997
@@ -3129,6 +3129,10 @@
            } else if (bcmp(sc->tulip_rombuf + 29, "DE450", 5) == 0) {
                copy_name = 1;
            }
+           if (sc->tulip_unit == 0) {
+               sc->tulip_boardsw = &tulip_21140_de500aa_boardsw;
+               bcopy("LA100-PCI ", sc->tulip_boardidbuf, 10);
+           }
            if (copy_name) {
                bcopy(sc->tulip_rombuf + 29, sc->tulip_boardidbuf, 8);
                sc->tulip_boardidbuf[8] = ' ';
====================================         

ifconfig の link0, link1 は無効のようです。

このドライバはもうなくなるのであまり追求しません。
de-970513.tar.gz はボードの認識方法がかなり変わってます。


------------------
参考２
このボードを自動認識でちゃんと動くようにするには、２通りの方法が
あります。

その１
if_de.c のはじめに
#define TULIP_DO_GPR_SENSE
を指定すると(options でも可）GP ポートと SROM 上の GPRブロックの情報を
使って自動認識します。
          10Mbps  10M-FD  100Mbps   100M-FD
１、２     ○       △       ○       △
    FullDUplex は自動認識しない。

その２
３のボードと同じモードで動かす。 MII-PHY (DP83840) と SROM 上の MIIブロック
の情報で動作します。

=================================
--- if_de.c.new Wed May 14 00:03:34 1997
+++ if_de.c     Mon Jun 23 15:43:00 1997
@@ -2586,6 +2586,11 @@
     { tulip_identify_asante_nic,       { 0x00, 0x00, 0x94 } },
     { NULL }
 };
+static const u_char de_patch_rombuf[] = {
+ 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08, 0x01, 0x01,
+ 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0xe0,
+ 0x01, 0x00, 0x50, 0x00, 0x18, 0x00, 0x00, 0x00,
+};

 /*
  * This deals with the vagaries of the address roms and the
@@ -2643,6 +2648,10 @@
        }
        tulip_srom_read(sc);
        if (tulip_srom_crcok(sc->tulip_rombuf)) {
+#define FORCE_MII_UNIT 0
+           if (sc->tulip_unit == FORCE_MII_UNIT) {
+               bcopy(de_patch_rombuf, sc->tulip_rombuf + 26, 24);
+           }
            /*
             * SROM CRC is valid therefore it must be in the
             * new format.
==================================

このパッチでＵＮＩＴを指定して３のボードと同じ動作にします。


Testers Choice は
  ３．PLANET  ENW9501-F かな？



==================================================
テストで気づいた事。

Duplex MODE は ボードのＬＥＤと２１１４０動作モードは一致してないことがある。

Duplex MODE が相手と違うと転送速度がかなり遅くなる。
特に  FD --> HD の時。
FD 側のコンソールに
    de0: receive: 00:00:f8:88:88:88: alignment error
    de0: receive: 00:00:f8:88:88:88: bad crc
  が表示される事がある。

10M-FD の時ボードの FullDuplex LED が点灯しない。
DP83840 の設定の問題だが詳しく調べてない。
（ 10Mbps 時、Polarity 表示になる？ ）



==================================================
その他怪しい情報
 使ってるチップの情報
 2.2-BETA ドライバをいじって SROM の内容を表示したもの
 GP ポートの接続

どうも動くか動かないかは、21140 周りの chip と SROM の内容
に依存するようです。
チップの REV に関係あるかは分かりませんでした。（ 21140AA とか AC とか ）
＃ソースが複雑でよく分からん

----------------------------------
１．のボード
  ????  EN1207?
   Chip DC21140-AC
        DP83840A (100/100 MII-based PHY)
        DP83223 (100Mbps MLT3 Transceiver)

de1 <Digital 21140A Fast Ethernet> rev 32 int a irq 10 on pci0:19
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010: 00 00 01 01 00 00 e8 36 35 da 00 1e 00 00 00 08
0020: 01 04 00 00 13 00 03 00 83 00 04 00 17 00 05 00
0030: 87 00 00 00 45 4e 31 32 30 37 54 58 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 2e
de1: ID: 00 00 08 01 04 00 00 13
de1: Board Desc [Digital DE500-AA ]
de1: EN1207TX 21140A [10-100Mb/s] pass 2.0
de1: address 00:00:e8:36:35:da
de1(phy1): model = NS DP83840 (supports media autonegotiation)
de1(phy1): media = 10baseT, Full Duplex 10baseT, 100baseTX, Full Duplex 100baseTX

  bit   I/O
GP<7-4>      NC
GP<3>    I   Full-Duplex: '0'
GP<2>    I   LINK       : '0'
GP<1>    I   100M       : '0'
GP<0>        NC

   SROM は Version 1 Format で info Block は GPR format
   de-950513.tar.gz  では #define DO_GPR_SENSE すればＯＫ
   でも Full-Duplex は自動認識せず。
   2.2-BETA は DE500AA として動作させればＯＫ。

----------------------------------
２．のボード
Allied Telesis  LA100-PCI
   Chip DC21140-AC
        DP83840A (100/100 MII-based PHY)
        DP83223 (100Mbps MLT3 Transceiver)

de1 <Digital 21140A Fast Ethernet> rev 32 int a irq 10 on pci0:19
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010: 00 00 01 01 00 00 f4 90 a7 72 00 1e 00 00 00 08
0020: 01 04 00 00 13 00 03 00 83 00 04 00 17 00 05 00
0030: 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 93 9d
de1: ID: 00 00 08 01 04 00 00 13
de1: Board Desc [DEC-EB ]
de1: DEC-EB 21140A [10-100Mb/s] pass 2.0
de1: address 00:00:f4:90:a7:72
de1: enabling 100baseTX port

  １のボードと同じ物
  でも SROM のデータに "EN1207TX" が無い


----------------------------------
３．のボード
PLANET ENW9501-F
   10/100/10-FD/100-FD 自動検出（起動後も自動で切り替わる）
   Chip DC21140-AC
        DP83840A (100/100 MII-based PHY)
        DP83223 (100Mbps MLT3 Transceiver)

de0 <Digital 21140A Fast Ethernet> rev 32 int a irq 10 on pci0:18
0000: 86 11 00 11 00 00 00 00 00 00 00 00 00 00 00 00
0010: d0 00 03 01 00 40 05 31 48 f5 00 1e 00 00 00 08
0020: 00 01 8c 01 00 00 00 00 78 e0 01 00 50 00 18 00
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 04
de0: ID: 00 00 08 00 01 8c 01 00
de0: Board Desc [Digital DE500-AA ]
de0: ENW9501 21140A [10-100Mb/s] pass 2.0
de0: address 00:40:05:31:48:f5
de0(phy8): model = NS DP83840 (supports media autonegotiation)
de0(phy8): media = 10baseT, Full Duplex 10baseT, 100baseTX, Full Duplex 100baseTX
   :   :   :    :       :
   :   :   :    :       :
apm0 on isa
apm: found APM BIOS version 1.1
de0: link up: enabling 10baseT port

  SROM は Version 3 Format で Info BLOCK は MII Block format になっている。
  de-970513.tar.gz では問題なし。
  2.2-BETA では DE500AA で認識させれば動く。
  SROM 頭の 1186 1100 (86 11 00 11) 認識させる？

  bit I/O
GP<7>  I   LINK LED ON : '0'
GP<6>  I   RX ON       : '0'
GP<5>  I   TX ON       : '0'
GP<4>  I   100M        : '1'
GP<3>  I   Full-Duplex : '0'
GP<2>      NC
GP<1>      NC
GP<0>      NC


----------------------------------
４．のボード
ELECOM  LD-10/100PCI

   Chip DC21140-AB
        SMC83C694 (10Mbps Enc/Dec)
        MC68836 (100Mbps SYM-NRZI Enc/Dec)
        ML6671 (100Mbps MLT3 Transceiver)

de0 <Digital 21140 Fast Ethernet> rev 18 int a irq 10 on pci0:18
0000: 00 00 c0 01 15 e4 95 e7 e7 95 e4 15 01 c0 00 00
0010: 00 00 c0 01 15 e4 95 e7 ff 00 55 aa ff 00 55 aa
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050: 3a 34 02 00 5a 00 00 00 00 00 00 00 00 00 00 00
0060: 33 c0 34 10 01 80 00 00 00 00 00 00 00 00 00 00
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
de0: Board Desc [SMC 9332 ]
de0: SMC 9332 21140 [10-100Mb/s] pass 1.2
de0: address 00:00:c0:01:15:e4
de0: enabling 100baseTX port

   SROM はＳＭＣ独自のフォーマット
   起動時のみ 10Mbps/100Mbps 自動検出
   FullDuplex は自動検出しない（H/W の仕様） BLP 未対応
   FullDuplex は 100Mbps のみ
   de-970513.tar.gz の場合
      100Mbps/FullDuplex は起動後
         ifconfig de? link2   する
      ifconfig de? link1 で 10Mbps/FullDuplex になったように表示されるが
        実は ＦＤ になっていない。

 ＳＭＣ９３３２ＤＳＴと同じ物
 [FreeBSD-users-jp 898] Re: available 100Base-TX on FreeBSD ? 参照

＃けっこう前からあったのですね。（この情報を知ってれば．．．．）




=======================================
転送速度
 これは、複数回実行してメモリ上にデータがキャッシュされて
 いる状態？ で出た値です。
 いいかげんな測定方法なので参考程度です。

Win95 側
   MB:   Asus P/I-P6NP5
   CPU:  Intel P6-200
   MEM:  64MB (FPM 32M-70ns x 2  ECC mode)
   SCSI: Tekram DC-390UW
   HDD:  ??? 2GB

   ＦＴＰクライアントソフト   WS_FTP32 Ver.3.00


FreeBSD 側
   MB:   I'will  P54-TI  (Intel 430FX)
   CPU:  Intel P5-166 (150MHz)
   MEM:  64MB  (EDO NonP 32M-60ns x 2)
   SCSI: Adaptec AHA-2940U
   HDD:  ?? SCSI 1GB

   FreeBSD 2.2-BATA

----------------
 FreeBSD 側
  ELECOM  LD-10/100PCI を  de-970513.tar.gz で動作
 Win95 側
  ??? EN1207TX の SROM を書き換えて DE500AA のドライバで動作させた

１０Ｍｂｐｓ 半二重
 別々に動作
   Win95   -->  FreeBSD        9.84Mbps
   Win95   <--  FreeBSD       10.74Mbps

 同時に動作
   Win95    -->   FreeBSD      4.64Mbps
   Win95    <--   FreeBSD      5.58Mbps

100Mbps Half-Duplex
 別々
   Win95    -->   FreeBSD      37.30Mbps
   Win95    <--   FreeBSD      23.23Mbps
 同時
   Win95    -->   FreeBSD      22.04Mbps
   Win95    <--   FreeBSD      14.99Mbps

100Mbps Full-Duplex
 別々
   Win95    -->   FreeBSD       36.37Mbps
   Win95    <--   FreeBSD       70.22Mbps
 同時
   Win95    -->   FreeBSD        9.72Mbps
   Win95    <--   FreeBSD       54.18Mbps


---------------
Win95 側のマシンで FreeBSD 2.2-beta
  ??? EN1207TX を de-970513.tar.gz で DE500AA として動作
   FreeBSD-2         FreeBSD
      ftp     <--->   ftpd
FreeBSD 側同じ

100Mbps Full-Duplex
 別々
   FreeBSD-2    -->  FreeBSD      41.36Mbps
   FreeBSD-2    <--  FreeBSD      28.16Mbps
 同時
   FreeBSD-2   -->  FreeBSD      20.40Mbps
   FreeBSD-2   <--  FreeBSD      23.44Mbps

ftp の表示する値に * 8 した数値

-----------------
Win95 側同じ
FreeBSD 側  Allied Telesis LA100-PCI + de-970513.tar.gz + パッチ(MII mode)

100Mbps Full-Duplex
 別々
   Win95  -->  FreeBSD         36.35Mbps
   Win95  <--  FreeBSD         70.51Mbps
 同時
   Win95  -->  FreeBSD         9.91Mbps
   Win95  <--  FreeBSD        53.61Mbps


ボードの種類による差は無いようです。

終わり


-------------------------------
 住田　尚亮
 Naoaki Sumida
E-mail: na-su@highway.or.jp
-------------------------------

