Linux 和 3Com EtherLink III 系列乙太網卡(驅動程式 v1.18c 及更高版本)¶
本文件包含 v1.18c 及更高版本 3c509 驅動程式的使用說明和注意事項。在閱讀本文件之前,請勿使用該驅動程式。
版本 1.0
2002 年 2 月 28 日
- 當前維護者(更正請聯絡)
David Ruggiero <jdr@farfalle.com>
簡介¶
以下是關於在 Linux 中使用 3Com EtherLink III 系列乙太網卡的說明和資訊。這些網絡卡通常以最廣泛使用的網絡卡的 3Com 型號 3c509 為人所知。它們都是 10mb/s ISA 匯流排網絡卡,不應(但有時會)與類似編號的 PCI 匯流排“3c905”(又名“Vortex”或“Boomerang”)系列混淆。核心對 3c509 系列的支援由模組 3c509.c 提供,該模組包含支援以下所有型號的程式碼
3c509(原始 ISA 網絡卡)
3c509B(ISA 網絡卡的後續版本;支援全雙工)
3c589 (PCMCIA)
3c589B(3c589 的後續版本;支援全雙工)
3c579 (EISA)
本文件的大部分內容大量借鑑了 3c509 驅動程式的原始作者 Donald Becker 編寫的指南。該文件的主副本(包含舊版本驅動程式的說明)目前位於 Scyld 網路伺服器上:http://www.scyld.com/。
特殊驅動程式功能¶
覆蓋網絡卡設定
驅動程式允許在啟動或載入時覆蓋網絡卡檢測到的 IOADDR、IRQ 和收發器設定,儘管通常不需要此功能,除非啟用全雙工模式(見下文)。以下是 LILO 引數的語法示例
ether=10,0x310,3,0x3c509,eth0
這會將找到的第一個 3c509 網絡卡配置為 IRQ 10、基本 I/O 0x310 和收發器型別 3 (10base2)。必須設定標誌“0x3c509”,以避免覆蓋 I/O 地址時與其他網絡卡型別衝突。當驅動程式作為模組載入時,只能覆蓋 IRQ。例如,將兩張網絡卡設定為 IRQ10 和 IRQ11 可以透過使用 irq 模組選項來完成
options 3c509 irq=10,11
全雙工模式¶
v1.18c 驅動程式增加了對 3c509B 全雙工功能的支援。為了啟用併成功使用全雙工模式,必須滿足三個條件
(a) 您必須擁有硬體支援全雙工操作的 Etherlink III 網絡卡型號。目前,已知肯定支援全雙工的 3c509 系列成員只有 3c509B(ISA 匯流排)和 3c589B (PCMCIA) 網絡卡。沒有“B”型號標識的網絡卡不支援全雙工模式;這些包括原始 3c509(沒有“B”),原始 3c589,3c529(MCA 匯流排)和 3c579 (EISA 匯流排)。
(b) 您必須使用網絡卡的 10baseT 收發器(即 RJ-45 聯結器),而不是其 AUI(粗纜)或 10base2(細纜/同軸)介面。AUI 和 10base2 網路電纜在物理上無法進行全雙工操作。
(c) 最重要的是,您的 3c509B 必須連線到本身支援全雙工的鏈路夥伴。這幾乎肯定是以下兩種情況之一:支援全雙工的乙太網交換機(不是集線器),或者另一個系統上支援全雙工的 NIC,該系統透過交叉電纜直接連線到 3c509B。
可以使用“ethtool”啟用全雙工模式。
警告
關於全雙工模式的極其重要的注意事項
請理解,3c509B 硬體的全雙工支援比更現代的網路介面卡提供的支援要有限得多。雖然在網路的物理層面上,它完全支援全雙工操作,但該網絡卡是在當前乙太網自動協商 (N-way) 規範編寫之前設計的。這意味著 3c509B 系列*不能也不會在任何情況下與鏈路夥伴自動協商全雙工連線,無論如何初始化*。如果啟用了 3c509B 的全雙工模式,其鏈路夥伴很可能也需要被獨立地強制進入全雙工模式;否則會發生各種可怕的故障——至少,您會看到大量的包衝突。這是極少數需要停用自動協商並強制網路介面卡或交換機的雙工模式的情況之一。
可用收發器型別¶
對於驅動程式 v1.18c 及更高版本,可用的收發器型別為
0 |
來自 EEPROM 配置的收發器型別(通常為 10baseT);強制半雙工 |
1 |
AUI(粗纜 / DB15 聯結器) |
2 |
(未定義) |
3 |
10base2(細纜 == 同軸 / BNC 聯結器) |
4 |
10baseT (RJ-45 聯結器);強制半雙工模式 |
8 |
從網絡卡的 EEPROM 配置設定中獲取收發器型別和雙工模式 |
12 |
10baseT (RJ-45 聯結器);強制全雙工模式 |
在驅動程式版本 1.18c 之前,僅支援收發器程式碼 0-4。請注意,新的收發器程式碼 8 和 12 是唯一可以啟用全雙工模式的程式碼,無論網絡卡檢測到的 EEPROM 設定如何。這確保了僅僅從早期版本升級驅動程式永遠不會自動在現有安裝中啟用全雙工模式;必須始終透過這些程式碼之一顯式啟用才能啟用。
可以使用“ethtool”更改收發器型別。
錯誤訊息的解釋和常見問題¶
錯誤訊息¶
eth0:中斷中出現無限迴圈,狀態 2011。這些是“基本無害”的訊息,表明驅動程式在該中斷週期中工作量太大。狀態為 0x2011 時,您接收資料包的速度比從網絡卡中刪除資料包的速度快。這在正常操作中應該很少見或不可能。導致此錯誤報告的可能原因包括
啟用了“綠色”模式,在沒有鍵盤活動時會降低處理器速度。
某些其他裝置或裝置驅動程式佔用匯流排或停用中斷。檢查 /proc/interrupts 是否有過度中斷計數。定時器滴答中斷應始終比其他中斷增加更快。
未收到資料包¶
如果 3c509、3c562 或 3c589 可以成功傳送資料包,但從未接收資料包(如 /proc/net/dev 或 'ifconfig' 報告),則您可能存在中斷線路問題。檢查 /proc/interrupts 以驗證網絡卡是否實際生成中斷。如果中斷計數沒有增加,則您可能與兩個嘗試使用同一 ISA IRQ 線路的裝置發生物理衝突。常見的衝突是音效卡在 IRQ10 或 IRQ5 上,最簡單的解決方案是將 3c509 移動到不同的中斷線路。如果裝置正在接收資料包但“ping”不起作用,則您存在路由問題。
/proc/net/dev 中報告的 Tx 載波錯誤¶
如果 EtherLink III 似乎正在傳送資料包,但 /proc/net/dev 中的“Tx 載波錯誤”欄位的增量與 Tx 資料包計數一樣快,則您可能有一個未端接的網路或選擇了錯誤的媒體收發器。
在具有 ISA PnP BIOS 的計算機上未檢測到 3c509B 網絡卡。¶
雖然更新的驅動程式適用於大多數 PnP BIOS 程式,但並非適用於所有程式。這可以透過使用 3Com 提供的設定程式停用 PnP 支援來解決。
在超頻的計算機上未檢測到 3c509 網絡卡¶
將 id_read_eeprom() 中的延遲時間從當前值 500 增加到荒謬的高值,例如 5000。
解碼狀態和錯誤訊息¶
主狀態暫存器中的位是
值 |
描述 |
|---|---|
0x01 |
中斷鎖存 |
0x02 |
Tx 過載,或 Rx 欠載 |
0x04 |
Tx 完成 |
0x08 |
Tx FIFO 空間可用 |
0x10 |
完整的 Rx 資料包已到達 |
0x20 |
Rx 資料包已開始到達 |
0x40 |
驅動程式已請求中斷 |
0x80 |
統計計數器即將滿 |
傳輸 (Tx) 狀態字中的位是
值 |
描述 |
|---|---|
0x02 |
視窗外衝突。 |
0x04 |
狀態堆疊溢位(通常不可能)。 |
0x08 |
16 次衝突。 |
0x10 |
Tx 欠載(PCI 匯流排頻寬不足)。 |
0x20 |
Tx 喋喋不休。 |
0x40 |
Tx 中斷請求。 |
0x80 |
狀態有效(應始終設定)。 |
發生傳輸錯誤時,驅動程式會生成一條狀態訊息,例如
eth0: Transmit error, Tx status register 82
此處通常看到的兩個值是
0x82¶
視窗外衝突。當某些其他乙太網主機在半雙工網路上錯誤地設定為全雙工時,通常會發生這種情況。
0x88¶
16 次衝突。當網路異常繁忙或另一個主機在發生衝突後未正確退避時,通常會發生這種情況。如果此錯誤與 0x82 錯誤混合在一起,則是主機錯誤地設定為全雙工的結果(請參見上文)。
這兩個錯誤都是網路問題導致的結果,應予以糾正。它們不代表驅動程式故障。
修訂歷史(此檔案)¶
28Feb02 v1.0 DR 新增;主要部分基於 Becker 原始 3c509 文件