Como Fazer Ethernet Linux
Paul Gortmaker, gpg109@rsphy1.anu.edu.au. Tradução em
Revisão em 9 de Abril de 1999 por Conectiva Informática, .
v2.66, 6 de julho de 1998.
Este é o Como Fazer-Ethernet, o qual é uma compilação de informações
sobre quais dispositivos Ethernet podem ser usados no Linux, e como
configurá-los. Ele tenta responder a todas as questões mais freqüentes
sobre o uso de placas Ethernet no Linux. Note que este Como Fazer está
focalizado nos aspectos de hardware e programa de controle de baixo
nível das placas Ethernet, não cobrindo partes de software como
ifconfig e route. Veja o Como Fazer NET-2 para estas coisas.
______________________________________________________________________
Índice geral
1. Introdução
2. Novas Versões deste Documento
3. Usando o Como Fazer Ethernet
4. SOCORRO - Isto não funciona!
5. Que Placa Devo Comprar?
6. Então Quais Programas de Controle são Estáveis?
7. Placas 8 bits vs. Placas 16 bits
8. 32 Bits (VLB/EISA/PCI) Placas Ethernet
9. Placas e Programas de Controle 100Mbs Disponíveis
10. 100VG versus 100BaseT
11. I/O Programado vs. Memória Compartilhada vs. DMA
12. I/O Programado (ex. NE2000, 3c509)
13. Memória compartilhada (ex. WD80x3, SMC-Ultra, 3c503)
14. Escravo (normal) DMA (Acesso Direto à Memória) (ex. nenhum no Linux!)
15. DMA (Acesso Direto à Memória) Barramento Master (ex. LANCE, DEC 21040)
16. Tipo de cabo que sua placa deve suportar
17. Perguntas Mais Freqüentes
18. Programa de controle Alpha e Como Consegui-lo e Usá-lo
19. Usando Mais de uma Placa Ethernet por Máquina
20. Clones NE2000 Insatisfatórios
21. Problemas com placas NE1000 / NE2000 (e clones)
22. Problemas com placas SMC Ultra/EtherEZ e WD80*3
23. Problemas com placas 3Com
24. FAQs Não Específicas para Qualquer Placa.
25. Placa Ethernet não é detectada na inicialização.
26. O
27. A máquina PCI detecta a placa, mas o programa de controle falha o teste.
28. As placas de Memória Compartilhada ISA na Máquina PCI não funcionam (0xffff).
29. A máquina NexGen tem erros de `indicadores de página de leitura não relacionados'.
30. Suporte Assíncrono de Modo de Transferência (ATM)
31. Suporte Ethernet Gigabyte
32. Suporte FDDI
33. Suporte Duplex Total
34. As Placas Ethernet para Linux em Placas AXP PCI Alpha
35. Ethernet para Linux no Hardware SUN/Sparc.
36. Conectando 10BaseT sem um Hub
37. SIOCSIFxxx: Não existe tal dispositivo
38. SIOCSFFLAGS: Tente novamente
39. Usando `ifconfig' e Link UNSPEC com endereço de Hardware de 00:00:00:00:00:00
40. Número Imenso de Erros de Recepção e Transmissão
41. Entradas em
42. Linux e ``trailers''
43. Acesso ao dispositivo bruto Ethernet
44. Dicas de Desempenho
45. Conceitos Gerais
46. Velocidade do Barramento ISA
47. Configurando a Janela de Recepção TCP
48. Melhorando o desempenho do NFS
49. Informações Específicas a Vendedor/Fabricante/Modelo
50. 3Com
51. 3c501
52. EtherLink II, 3c503, 3c503/16
53. 3c505
54. 3c507
55. 3c509 / 3c509B
56. 3c515
57. 3c523
58. 3c527
59. 3c529
60. 3c562
61. 3c575
62. 3c579
63. 3c589 / 3c589B
64. 3c590 / 3c595
65. 3c592 / 3c597
66. 3c900 / 3c905 / 3c905B
67. Accton
68. Accton MPX
69. Accton EN1203, EN1207, EtherDuo-PCI
70. Placa de rede de Porta Paralela Accton EN2209 (EtherPocket)
71. Placa Accton EN2212 PCMCIA
72. Allied Telesyn/Telesis
73. AT1500
74. AT1700
75. AT2450
76. AT2540FX
77. AMD / Dispositivos de Micro Avançados
78. AMD LANCE (7990, 79C960/961/961A, PCnet-ISA)
79. AMD 79C965 (PCnet-32)
80. AMD 79C970/970A (PCnet-PCI)
81. AMD 79C971 (PCnet-FAST)
82. AMD 79C974 (PCnet-SCSI)
83. Comunicações Ansel
84. AC3200 EISA
85. Apricot
86. Na Placa Ethernet Apricot Xen-II
87. Arcnet
88. AT&T
89. AT&T T7231 (LanPACER+)
90. AT-Lan-Tec / RealTek
91. AT-Lan-Tec / Placa de rede RealTek Pocket
92. RealTek 8009
93. RealTek 8019
94. RealTek 8029
95. RealTek 8129/8139
96. Pesquisa de Boca
97. Boca BEN (ISA, VLB, PCI)
98. Cabletron
99. E10**, E10**-x, E20**, E20**-x
100. E2100
101. E22**
102. Congent
103. EM100-ISA/EISA
104. Cogent eMASTER+, EM100-PCI, EM400, EM960, EM964
105. Compaq
106. Compaq Deskpro / Compaq XL (Embedded AMD Chip)
107. Danpex
108. Danpex EN9400
109. D-Link
110. DE-100, DE-200, DE-220-T, DE-250
111. DE-520
112. DE-530
113. DE-600
114. DE-620
115. DE-650
116. DFI
117. DFINET-300 and DFINET-400
118. Digital / DEC
119. DEPCA, DE100/1, DE200/1/2, DE210, DE422
120. EtherWorks 3 Digital (DE203, DE204, DE205)
121. DE425 (EISA), DE434, DE435, DE500
122. DEC 21040, 21041, 2114x, Tulipa
122.1 Farallon
123. Farallon Etherwave
124. Hewlett Packard
125. 27245A
126. HP EtherTwist, PC Lan+ (27247, 27252A)
127. HP-J2405A
128. HP-Vectra Na Placa Ethernet
129. Qualquer Placa Lan10/100 VG da HP (27248B, J2573, J2577, J2585)
130. Servidor de Rede HP 10/100TX PCI (D5013A)
131. Máquinas de Administração Internacional IBM /
132. IBM Thinkpad 300
133. Placa de rede para Ethernet IBM de Cartão de Crédito
134. Token Ring IBM
135. Placas Ethernet ICL
136. EtherTeam 16i/32 ICL
137. Placas Ethernet Intel
138. Expresso Ether
139. Expresso Ether PRO/10
140. Expresso Ether PRO/10 PCI (EISA)
141. Expresso Ether PRO 10/100B
142. Kingston
143. LinkSys
144. Placas LinkSys Etherfast 10/100.
145. LinkSys Pocket Ethernet Adapter Plus (PEAEPP)
146. Placa de rede LinkSys PCMCIA
147. Microdyne
148. Microdyne Exos 205T
149. Mylex
150. Mylex LNE390A, LNE390B
151. Mylex LNP101
152. Mylex LNP104
153. Novell Ethernet, NExxxx e clones associados.
154. NE1000, NE2000
155. NE2000-PCI (RealTek/Winbond/Compex)
156. NE-10/100
157. NE1500, NE2100
158. NE3200
159. NE5500
160. Proteon
161. Proteon P1370-EA
162. Proteon P1670-EA
163. Dados Puros
164. PDUC8028, PDI8023
165. Racal-Interlan
166. ES3210
167. NI5010
168. NI5210
169. NI6510 (not EB)
170. EtherBlaster (aka NI6510EB)
171. Sager
172. Sager NP943
173. Schneider & Koch
174. SK G16
175. SEEQ
176. SEEQ 8005
177. SMC (Standard Microsystems Corp)
178. Thomas Conrad
179. Thomas Conrad TC-5048
180. Western Digital / SMC
181. WD8003, SMC Elite
182. WD8013, SMC Elite16
183. SMC Elite Ultra
184. SMC Elite Ultra32 EISA
185. SMC EtherEZ (8416)
186. SMC EtherPower PCI (8432)
187. SMC EtherPower II PCI (9432)
188. SMC 3008
189. SMC 3016
190. SMC-9000 / SMC 91c92/4
191. SMC 91c100
192. ircom
193. PE1, PE2, PE3-10B*
194. Zenith
195. Z-Note
196. Znyx
197. Znyx ZX342 (DEC 21040 based)
198. Identificando uma Placa Desconhecida
199. Identificando o Controlador de Interface da Rede
200. Identificando o Endereço Ethernet
201. Dicas sobre Tentativa de Usar uma Placa Desconhecida
202. Programa de controle para Dispositivos Não-Ethernet
203. Cabos, Coax, Par Trançado
204. Ethernet Fina (thinnet)
205. Par Trançado
206. Ethernet Grossa
207. Configuração do Software e Diagnóstico da Placa
208. Configuração de Programas para Placas Ethernet
209. Placas WD80x3
210. Placas Digital / DEC
211. NE2000+ ou AT/LANTIC Cards
212. 3Com Cards
213. Programas de Diagnóstico para Placas Ethernet
214. Informações Técnicas
215. Endereços Testados
216. Escrevendo um Programa de controle
217. Programa de controle de interface para o kernel
218. Teste
219. Operador de Interrupção
220. Função de Transmitir
221. Função de Receber
222. Função Aberta
223. Função Fechada (opcional)
224. Miscelânea de Funções
225. Interrupções e o Linux
226. Programando os chips Intel (i82586 and i82593)
227. Informações técnica da 3Com
228. Notas sobre placas baseadas AMD PCnet / LANCE
229. Modo Multicast e Indiscriminado
230. O Filtro do Pacote de Berkeley (BPF)
231. Entrando na rede com um Computador Laptop/Notebook
232. Usando SLIP
233. Built in NE2000
234. Suporte PCMCIA
235. Placa Ethernet ISA Ethercard na Estação Docking.
235.1 Pocket / Placa de rede de porta paralela.
236. Miscelânea
237. Passando os Argumentos da Ethernet para o Kernel
238. O comando
239. O COMANDO
240. Usando os Programa de controle da Ethernet como Módulos
241. Listas de Discussão e Grupos de Notícias sobre Linux
242. Documentação Relacionada
243. Colaboradores
244. Responsabilidade do autor e Direitos autorais
______________________________________________________________________
11.. eetthheerrnneett IInnttrroodduuççããoo
Como Fazer Ethernet cobre as placas que você deve e não deve comprar,
como configurá-las, como utilizar mais de uma, e outros problemas e
questões comuns. Ele contém informações detalhadas sobre o nível atual
de suporte para as placas Ethernet mais encontradas no mercado.
Ele _n_ã_o cobre a parte de software, pois isto é coberto no Como Fazer
NET-2. Note também que questões não relacionadas a Linux não são (ou
pelo menos não deveriam) ser respondidas aqui. Para este tipo de
questões veja a excelente quantidade de informações no grupo de
notícias de Perguntas Mais Freqüentes (FAQ) _c_o_m_p_._d_c_o_m_._l_a_n_s_._e_t_h_e_r_n_e_t.
Você pode baixá-los via FTP de rtfm.mit.edu da mesma forma que todos
os outros grupos de notícias das Perguntas Mais Freqüentes (FAQ).
Esta revisão cobre os kernels até e inclusive o 2.0.34. Informações
relacionadas aos kernels em desenvolvimento até a versão 2.1.108
também são documentados.
O Como Fazer Ethernet é editado e mantido por:
Paul Gortmaker, gpg109@rsphy1.anu.edu.au.
A principal fonte de informações para a versão ASCII inicial do Como
Fazer Ethernet foi:
Donald J. Becker, becker@cesdis.gsfc.nasa.gov.
que é a pessoa a quem devemos agradecer por escrever a grande maioria
dos programas de controle para placas Ethernet que estão atualmente
disponíveis para Linux. Ele também é o autor original do servidor NFS.
Obrigado Donald!
Por favor, veja informações sobre Responsabilidade do Autor e Cópias
no final deste documento para informações sobre redistribuição deste
documento e as usuais considerações legais. Nós não somos responsáveis
pelo que você faz.
22.. NNoovvaass VVeerrssõõeess ddeessttee DDooccuummeennttoo
Novas versões deste documento podem ser baixadas via FTP anônimo de:
COMO FAZER Sunsite
e a partir de vários outros espelhos. Atualizações serão feitas a
medida que novas informações e/ou programas de controle se tornem
disponíveis. Se esta cópia que você está lendo tem mais de 6 meses, ou
ela está desatualizada ou isso significa que eu tenho sido preguiçoso
e não a atualizei. Este documento foi produzido usando o sistema SGML
que foi especificamente construído para o projeto Como Fazer do Linux
e existem vários formatos de saída disponíveis, inclusive, postscript,
dvi, ascii, html, e em breve TeXinfo.
Eu recomendaria vê-lo em html (usando um browser WWW) ou no formato
Postscript/dbi. Ambos são referências cruzadas que se perdem na
tradução para ascii.
Se você quiser a cópia mais recente no sunsite, aqui está a URL:
COMO FAZER Ethernet .
33.. UUssaannddoo oo CCoommoo FFaazzeerr EEtthheerrnneett
Como este guia está se tornando cada vez maior, provavelmente você não
quer gastar o resto de sua tarde lendo tudo. E a boa notícia é que
você não _p_r_e_c_i_s_a lê-lo todo.
É provável que você esteja lendo este documento porque você não
conseguiu fazer funcionar sua placa e não sabe o que fazer ou
verificar. A próxima seção (``SOCORRO - Isto não funciona!'') é
direcionada aos iniciantes no Linux e o guiará para a direção correta.
Tipicamente os mesmos problemas e questões são perguntados _m_u_i_t_a_s
vezes por várias pessoas. É provável que seu problema/questão
específico seja uma destas Perguntas Mais Freqüentes, e esteja
respondida na parte FAQ deste documento, (``A seção FAQ''). Todos
deveriam dar uma olhada nesta seção antes de enviar mensagens pedindo
ajuda.
Se você não tem uma placa Ethernet, então você deverá começar pela
decisão de que placa comprar. (``Que Placa Devo Comprar?'').
Se você já tem uma placa Ethernet, mas não tem certeza se pode usá-la
no Linux, então você deverá ler a seção que contém informações
específicas sobre cada fabricante e suas placas (``Informações
Específicas a Vendedor/Fabricante/Modelo'').
Se você estiver interessado nos aspectos técnicos dos dispositivos de
programa de controle do Linux, você pode dar uma olhada na seção com
este tipo de informação (``Informações Técnicas'').
44.. SSOOCCOORRRROO -- IIssttoo nnããoo ffuunncciioonnaa!!
ethernet,problemas Ok, não entre em pânico. Esta seção o levará
através do processo de conseguir que as coisas funcionem, mesmo que
você não tenha nenhum conhecimento prévio em Linux ou hardware
Ethernet.
A primeira coisa que você precisa fazer é descobrir qual o modelo de
sua placa de maneira a determinar se o Linux tem um programa de
controle para esta placa em particular. Placas diferentes tipicamente
são controladas de maneiras diferentes pelo computador, e o programa
de controle Linux (se existir um) contém informações de controle num
formato que permite ao Linux usar a placa.
Se você não tiver nenhum manual ou algo do tipo que lhe diga alguma
coisa sobre o modelo da placa então você poderá ver a seção de ajuda
em placas misteriosas (``Identificando uma Placa Desconhecida''), ou
apenas tentar um kernel com quase todos os programas de controle
incluídos e esperar que um destes reconheça sua placa.
Agora que você sabe que tipo de placa você tem, leia os detalhes de
sua placa na seção específica sobre placas (``Informações Específicas
a Vendedor/Fabricante/Modelo''), que relaciona em ordem alfabética os
fabricantes de placa, número de modelos individuais e se tem um
programa de controle Linux ou não. Se estiver relacionado como Não
Suportado, você pode desistir por aqui. Se você não encontrar sua
placa nesta lista, então veja se seu manual indica sua placa como
sendo compatível com outro tipo conhecido de placa. Por exemplo,
existem centenas, senão milhares de placas diferentes feitas para
serem compatíveis com o projeto da Novell NE2000 original.
Supondo que você tenha descoberto que sua placa tem um programa de
controle Linux, agora você precisa buscar no CD-ROM ou no meio a
partir de onde você instalou, e encontrar a lista de kernels
pré-compilados disponíveis. O kernel é o núcleo do sistema operacional
que é carregado na inicialização, e contém o programa de controle
para as várias partes do hardware, entre outras coisas. Dependendo de
quem fez o CD-ROM, podem haver apenas alguns poucos kernels
pré-compilados e um monte de programa de controle no formato de
módulos menores separados, ou podem haver um monte de kernels,
cobrindo uma vasta combinação de programas de controle incluídos.
A maioria das distribuições Linux navegam agora com um monte de
pequenos módulos que são os vários programas de controle. Os módulos
necessários são tipicamente carregados no processo de inicialização,
ou por exigência quando um programa de controle é necessário para
acessar um dispositivo específico. Você precisará anexar este módulo
ao kernel depois que este tiver inicializado. Veja as informações que
vieram com sua distribuição sobre a instalação e o uso dos módulos,
junto com a seção de módulos deste documento (``Usando os Programa de
Controle da Ethernet como Módulos'').
Se você não encontrou um kernel pré-compilado com seu programa de
controle nem uma forma de módulo do programa de controle, é provável
que você tenha uma placa tipicamente incomum, e você terá que compilar
seu próprio kernel com aquele programa de controle incluído. Uma vez
que seu Linux esteja instalado, compilar um kernel padrão não é
difícil. Você deve responder sim ou não para o que você quer que o
kernel contenha e então mandá-lo compilar. Existe um Como Fazer Kernel
que poderá ajudá-lo com isto.
Neste ponto você deve de alguma maneira ter conseguido inicializar o
kernel com seu programa de controle incluído, ou estar carregando-o
como um módulo. Mais ou menos metade dos problemas que as pessoas têm
são relacionados com o fato de não ter carregado o programa de
controle de uma maneira ou de outra. Agora você deve ter tudo
funcionando.
Se ainda não funcionar, então você precisa verificar se o kernel está
mesmo detectando sua placa. Para fazer isto, você precisa digitar
dmesg | more quando se conectar logo após a inicialização do sistema e
a carga de todos os módulos. Isto lhe permitirá ver todas as mensagens
que o kernel mostrou na tela durante o processo de inicialização. Se a
placa foi detectada, você deve ver na lista uma mensagem mostrada pelo
programa de controle que começa com eth0, menciona o nome do programa
de controle e os parâmetros de hardware (interrupção, porta de I/O,
etc.) configurados. Se você não vir uma mensagem como esta, então o
programa de controle não detectou sua placa, e é por isso que nada
funciona. Veja o FAQ (``A seção FAQ'') para o que fazer se sua placa
não foi detectada. Se você tem uma placa compatível com NE2000,
existem dicas específicas para que a placa seja detectada na seção FAQ
também.
Se a placa foi detectada, mas a mensagem de detecção reporta algum
tipo de erro, como um conflito de recursos, então o programa de
controle provavelmente não inicializou corretamente e a placa ainda
não será usável. A maioria dos erros mais comuns deste tipo também
estão relacionados na seção FAQ, junto com uma solução.
Se a mensagem de detecção parece ok, então certifique-se de que os
recursos da placa reportados pelo programa de controle são iguais aos
que foram configurados fisicamente pela placa (quer seja por pequenas
chaves pretas na placa, ou por um utilitário fornecido pelo fabricante
da placa), e eles devem combinar exatamente. Por exemplo, se você tem
uma placa de chaves ou configurada para IRQ 15 e o programa de
controle reporta IRQ 10 nas mensagens de inicialização, não vai
funcionar. A seção FAQ discute os casos mais comuns de programas de
controle detectando incorretamente a informação de configuração de
várias placas.
Neste ponto, você conseguiu ter sua placa detectada com todos os
parâmetros corretos, e provavelmente tudo está funcionando. Se não
estiver, ou você tem um erro de configuração no software, ou um erro
de configuração no hardware. Um erro de configuração no software é não
configurar os endereços de rede corretos para os comandos ifconfig e
route. Os detalhes de como fazer isto estão completamente descritos no
Como Fazer NET2 e no Guia do Administrador de Rede, os quais
provavelmente vieram no seu CD-ROM da distribuição.
Um erro de configuração no hardware é quando algum tipo de conflito de
recursos ou configuração errada que o programa de controle não detecta
na inicialização e não deixa a placa funcionar corretamente. (1) Você
recebe uma mensagem de erro quando ifconfig tenta abrir o dispositivo
para uso, como ``SIOCSFFLAGS: Tente outra vez''. (2) O programa de
controle reporta mensagens de erro eth0 (visualizáveis com dmesg |
more) ou inconsistências estranhas para cada vez que se tenta enviar
ou receber dados. (3) Digitando cat /proc/net/dev vai mostrar números
diferentes de zero em uma das seguintes colunas: errs, drop, fifo,
frame ou carrier, na linha iniciada por eth0. A maioria dos erros de
configuração no hardware típicos são também discutidos na seção FAQ.
Bem, se você chegou até este ponto, e as coisas ainda não estão
funcionando, leia a seção FAQ deste documento, leia a seção específica
sobre o fabricante detalhando sua placa específica, _e _s_e _a_i_n_d_a _n_ã_o
_f_u_n_c_i_o_n_a então você terá que enviar uma mensagem para os grupos de
notícias apropriados pedindo ajuda. Se você enviar uma mensagem, por
favor detalhe toda informação relevante, como a marca da placa, versão
do kernel, as mensagens de inicialização do programa de controle, a
saída de cat /proc/net/dev, uma descrição clara do problema, e,
naturalmente, tudo o que você já tentou para fazer a placa funcionar.
Você se surpreenderia com quantas pessoas enviam mensagens inúteis
como "Alguém pode me ajudar? Minha ethernet não funciona." E nada
mais. Os leitores dos grupos de notícias tendem a ignorar estas
mensagens bobas, enquanto uma descrição detalhada do problema pode
permitir que um Guru do Linux descubra seu problema de cara.
55.. QQuuee PPllaaccaa DDeevvoo CCoommpprraarr??
ethernet,tipos de placas ethernet,programas de controle A resposta
para esta pergunta depende muito sobre o que você pretende fazer com
sua conexão de rede, e quanto tráfego ela terá.
Se você somente espera um usuário fazendo uma sessão FTP ou WWW
ocasional, então uma placa de 8 bits wd8003 velha lhe manterá feliz.
Se você pretende montar um servidor, e você tem como requisito que o
desgaste com da CPU com a transmissão e recepção de pacotes seja
mínimo, você provavelmente vai querer usar uma das novas placas PCI
com o chip DEC 21040, ou o chip AND Pcnet-PCI.
Se você se encontra entre os dois cenários acima, então qualquer uma
das placas ISA de 16 bits com programa de controle estável servirá.
66.. EEnnttããoo QQuuaaiiss PPrrooggrraammaass ddee CCoonnttrroollee ssããoo EEssttáávveeiiss??
Das placas ISA de 16 bits, os programas de controle seguintes são bem
maduros, e você não deverá ter nenhum problema se comprar uma placa
que use um destes programas de controle.
SMC-Ultra/EtherEZ, SMC-Elite (WD80x3), 3c509, Lance, NE2000.
Eu não estou dizendo com isso que os outros programas de controle são
instáveis. É só que os mencionados acima são os programas de controle
Linux mais antigos e mais usados, tornando-os a escolha mais segura.
Note que algumas placas-mãe muito baratas podem ter problemas com o
barramento mestre que as placas Lance usam, e alguns clones muito
baratos de NE2000 podem ter problemas na detecção durante a
inicialização.
Os programas de controle mais comumente usados no PCI Linux são
provavelmente o 3Com Vortex/Boomerang (3c59x/3c9xx), o tulipa DEC
(21xxx), e o Cintel EtherExpressPro 100. Os vários clones das placas
do PCI-NE2000 são também extremamente comuns, mas comprar um clone da
placa do PCI-NE2000 não é recomendado a menos que o preço mais baixo
seja mais importante que ter uma placa de alto desempenho.
77.. PPllaaccaass 88 bbiittss vvss.. PPllaaccaass 1166 bbiittss
Você provavelmente não conseguirá comprar uma nova placa Ethernet ISA
de 8 bits, mas encontrará montes dela quando for a lojas de placas
usadas nos próximos anos, por um preço bem baixo. Isso popularizará
estas placas nos sistemas Ethernet caseiros. O que foi dito acima
também se aplica às placas ISA de 16 bits, pois as placas PCI são hoje
muito comuns.
Algumas placas de 8 bits que fornecerão desempenho adequado para uso
leve até médio são as wd8003, 3c503 e a ne1000. A 3c501 provê
desempenho precário, e estas velhas relíquias de 12 anos de idade dos
dias do XT devem ser evitadas.
Uma rota de dados de 8 bits não fere muito o desempenho e pode-se
esperar conseguir aproximadamente 500 a 800kB/s de velocidade de
download numa sessão FTP com uma placa de 8 bits wd8003 (num
barramento ISA rápido) a partir de uma máquina rápida. Se a maioria do
seu tráfego de rede vai para máquinas remotas, então o gargalo no
caminho até o destino vai estar em outro lugar, e a única diferença de
velocidade que você notará será durante as atividades em sua rede
local.
88.. 3322 BBiittss ((VVLLBB//EEIISSAA//PPCCII)) PPllaaccaass EEtthheerrnneett
Note que uma rede de 10Mbs tipicamente não justifica a necessidade de
uma interface de 32 bits. Veja ``I/O Programado vs. Memória
Compartilhada vs. DMA'' para entender porque ter uma placa Ethernet a
100Mbs num barramento ISA a 8MHz não é um gargalo. Mesmo tendo a placa
Ethernet num barramento rápido não significa necessariamente
transferências mais rápidas, isto geralmente significará menor gasto
de CPU, o que é bom para sistemas multiusuários.
Claro que para as redes de 100Mbps que se tornaram comuns hoje em dia,
a interface de 32 bits é uma necessidade para tornar o uso de toda a
largura da faixa. AMD tem o Pcnet-VLB de 32 bits e chips Pcnet-PCI.
Veja em ``AMD 79C965 (PCnet-32)'' para ter informações sobre as
versões de chip 32 bits da LANCE / PCnet-ISA.
O chip PCI DEC 21040 é outra opção (veja ``DEC 21040'') para usuários
poderosos. Muitos fabricantes produzem placas que usam este chip, e os
preços destas placas sem-nome são geralmente bem baratos.
As placas PCI Vortex e Boomerang da 3Com são também outra opção, e
o preço é baixo se você conseguir uma no programa de avaliação deles
enquanto ele dura. Veja em ``3c590/3c595''.
As placas EtherExpress Pro PC 10/100 da IIntel também funcionam bem
com o Linux. Veja em `` Expresso Ether PRO 10/100B''.
Vários fabricantes de clones começaram a fazer clones ne2000 PCI
baseados no chip RealTek8029. Estas placas também são suportadas pelo
programa de controle Linux ne2000 para os kernels v2.0. Entretanto
você somente se beneficiará da interface de barramento mais rápida,
pois a placa ainda usa a interface do controle de programa ne2000, que
é bem velha. Quanto a v2.0.34 (ou mais acima) um programa de controle
separado de PCI-específico para estas placas está também disponível
ne2k-pci.c, o qual será levemente mais eficiente que o programa de
controle ISA ne.c.
99.. PPllaaccaass ee PPrrooggrraammaass ddee CCoonnttrroollee 110000MMbbss DDiissppoonníívveeiiss
A lista atual de hardware 100Mbs suportado é a seguinte: placas com o
chip DEC 21140; a placa 3c595 Vortex; e a HP 100VG ANY-LAN. Os
programas de controle para as duas primeiras estão bem estáveis, mas o
retorno sobre o programa de controle HP tem sido pequeno até agora
devido a ele só estar disponível nas primeiras versões do kernel
1.3.x.
A EtherExpressPro10/100B agora também tem um programa de controle na
atual versão 2.0 do kernel. Para atualizações e/ou suporte, veja a
seção específica neste documento.
O chip 21140 100Base-? É suportado com o mesmo programa de controle
que seu equivalente de 10Mbs, o 21040. A placa de 100Mbs EtherPower da
SMC usa este chip. Como com o 21040, você tem a escolha de dois
programas de controle para usar.
Também dê uma olhada nas informações no site WWW do Donald, na
seguinte URL:
100Mbs Ethernet .
Donald fez um belo trabalho com as placas SMC EthrPower-10/100, e
relatou aproximadamente 4.6MB/s entre aplicações usando TCP em máquina
P5-100 Triton.
(Veja ``3c595'' e ``DEC 21140'' para maiores detalhes).
Para informações sobre 100Vg, veja a seção seguinte, e esta URL no
site do Donald:
Donald 100VG .
Você também pode ter interesse em olhar:
Dan Kegel - Ethernet Rápida .
1100.. 110000VVGG vveerrssuuss 110000BBaasseeTT
O texto seguinte vem de outra mensagem informativa do Donald no grupo
de notícias comp.os.linux que sumariza a situação muito bem:
``Para os que não sabem, existem dois padrões competindo pela
especificação Ethernet 100Mbs: 100VG (aka 100baseVG e 100VG-AnyLAN) e
100baseT (com tipos de cabo 100baseTx, 100baseT4 e 100baseFx).
100VG apareceu no mercado primeiro, e eu acho que ela é melhor
projetada do que a 100baseT. Eu estava torcendo para ela vencer, mas
claramente ela não vai. Fizeram várias escolhas ruins:
1) Atrasar o padrão de maneira que eles pudessem incluir a IBM e o
suporte a frames token ring. Parecia uma boa idéia na época, uma vez
que habilitaria instalações que usam token ring serem atualizadas sem
que os gerentes tivessem que admitir que tinham cometido um erro bem
caro se comprometendo com a tecnologia errada. Mas não havia nada a
ser ganho, pois os dois tipos de frame não poderiam coexistir numa
rede, token ring é muito complexo, e a IBM acabou ficando com a
100baseT no fim das contas.
2) Produzir somente placas ISA e EISA (um modelo PCI só foi anunciado
recentemente). O barramento ISA é muito lento para 100Mbs, e
relativamente poucas máquinas EISA existem. Na época VLB era comum,
rápida, e barata com PCI como uma opção viável. Mas o conhecimento dos
old-timers estabelecia que os servidores deveriam ficar com o mais
caro barramento EISA.
3) Não ter me enviado a documentação. Sim, esta ação foi a razão real
para o fracasso do 100VG :-). Eu pedi a todos por informações de
programação e tudo que consegui foi uma brochura de umas poucas
páginas coloridas da AT&T descrevendo quão maravilhoso o chipset
Regatta era.
1111.. II//OO PPrrooggrraammaaddoo vvss.. MMeemmóórriiaa CCoommppaarrttiillhhaaddaa vvss.. DDMMAA
Se você já pode enviar e receber pacotes back-to-back, você não pode
colocar mais bits sobre o cabo. Todas as placas Ethernet modernas
podem receber pacotes back-to-back. Os programas de controle Linux
DP8390 (wd80x3, SMC-Ultra, 3c503, ne2000, etc.) chegam bem perto de
enviar pacotes back-to-back (dependendo da latência de interrupção
corrente) e o hardware 3c509 e AT1500 não tem nenhum problema para
enviar pacotes back-to-back automaticamente.
O barramento ISA pode chegar a 5.3MB/sec (42Mb/sec), o que parece mais
que suficiente. Você pode usar esta banda de várias maneiras, listadas
abaixo.
1122.. II//OO PPrrooggrraammaaddoo ((eexx.. NNEE22000000,, 33cc550099))
Prós: Não usa nenhum recurso do sistema já bastante concorrido, apenas
usa uns poucos registradores de I/O, e não tem nenhum limite de 16M.
Contras: Geralmente a menor taxa de transferência, a CPU fica
esperando todo o tempo, e acesso a pacotes de forma entrelaçada é
geralmente muito difícil ou impossível.
1133.. MMeemmóórriiaa ccoommppaarrttiillhhaaddaa ((eexx.. WWDD8800xx33,, SSMMCC--UUllttrraa,, 33cc550033))
Prós: Simples, mais rápida que I/O programado, e permite acesso ao
acaso aos pacotes. Os programas de controle Linux computam o teste da
soma dos pacotes recebidos à medida que vão sendo copiados da placa,
resultando em mais uma redução no uso da CPU vs. Uma placa PIO
equivalente.
Contras: Usa memória alta (questão importante para usuários DOS,
essencialmente não importante no Linux), e ainda segura a CPU.
1144.. EEssccrraavvoo ((nnoorrmmaall)) DDMMAA ((AAcceessssoo DDiirreettoo àà MMeemmóórriiaa)) ((eexx.. nneennhhuumm nnoo
LLiinnuuxx!!))
Prós: Libera a CPU durante a real transferência de dados.
Contras: A verificação de condições de limite, a localização de
buffers contíguos, e a programação dos registradores DMA a faz a mais
lenta de todas as técnicas. Também usa um canal DMA escasso, e requer
buffers alinhados em memória baixa.
1155.. DDMMAA ((AAcceessssoo DDiirreettoo àà MMeemmóórriiaa)) BBaarrrraammeennttoo MMaasstteerr ((eexx.. LLAANNCCEE,, DDEECC
2211004400))
Prós: Libera a CPU durante a transferência dos dados, pode ligar
buffers, e requer pouco ou nenhum tempo de CPU perdido no barramento
ISA. A maioria do programa de controle do barramento mestre do Linux
usa agora um esquema de quebra de cópia onde pacotes grandes são
colocados diretamente para dentro de um buffer de rede kernel pela
placa, e pequenos pacotes são copiados pela CPU que prepara o cache
para processamento subseqüente.
Contras (Só aplicável à placas de barramento ISA): Requer buffers de
memória e um canal DMA. Qualquer barramento mestre terá problemas com
outros barramentos mestre que consomem recursos em excesso (bus-hogs),
como as primitivos placas de rede SCSI. Uns poucos chipsets de placa-
mãe mal projetados tem problemas com barramentos mestre, e uma razão
para não usar o dispositivo DMA é quando se usa um processador 486
projetado para ser um substituto de conexão de um 386: estes
processadores devem descarregar seu cache a cada ciclo de DMA. (Isto
inclui Cx486DLC, Ti486DLC, Cx486SLC, Ti486SLC, etc.).
1166.. TTiippoo ddee ccaabboo qquuee ssuuaa ppllaaccaa ddeevvee ssuuppoorrttaarr
Se você está configurando uma pequena rede pessoal provavelmente você
vai querer usar cabo Ethernet fino (thinnet). Este é o que se usa com
os conectores BNC padrão. Veja ``Cabos, Coax, Par Trançado'' para
outras considerações com os diferentes tipos de cabos Ethernet.
A maioria das placas Ethernet também vem numa versão `Combo' por
somente $10-$20 a mais. Eles têm transceptor par trançado e thinnet,
permitindo que você mude de idéia depois.
Os cabos par trançado, com conectores RJ-45 (conector de telefone
gigante) é chamado tecnicamente de 10BaseT. Você também pode ver
referências a ele como UTP (par trançado não blindado).
O thinnet, ou cabeamento ethernet fino, (cabo coaxial RG-58) com
conectores BNC (de pressão, metálicos, com giro para travar) são
chamados tecnicamente de 10Base1.
O mais velho ethernet grosso (cabo coaxial de 10mm) somente é
encontrado em instalações mais velhas é chamado de 10Base5.
Grandes instalações corporativas irão provavelmente usar 10BaseT no
lugar de 10Base2. 10Base2 não oferece um caminho de atualização fácil
para o novo 100Base.
1177.. PPeerrgguunnttaass MMaaiiss FFrreeqqüüeenntteess
ethernet,FAQ Aqui estão algumas das perguntas mais freqüentemente
feitas sobre o uso do Linux com uma conexão Ethernet. Algumas das
questões mais específicas são agrupadas em uma base por fabricante.
Entretanto, uma vez que este documento é basicamente vveellhhoo no momento
que você o obtém, quaisquer problemas novos não aparecerão aqui
instantaneamente. Para estes, sugiro que você faça uso eficiente de
seu grupo de notícias. Por exemplo, usuários do nn devem digitar:
nn -xX -s'3c'
para buscar todos os artigos de notícias na sua lista de grupos
assinados que tem 3c na linha de assunto. (ex. 3com, 3c509, 3c503,
etc.). Moral: leia o manual de seu revendedor.
1188.. PPrrooggrraammaa ddee ccoonnttrroollee AAllpphhaa ee CCoommoo CCoonnsseegguuii--lloo ee UUssáá--lloo
Eu ouvi falar que existe uma versão atualizada ou alfa disponível para
minha placa. Onde posso buscá-la?
Os programas de controle mais novos podem ser encontrados no novo site
ftp do Donald: cesdis.gsfc.nasa.gov na área /pub/linux/. As coisas por
aqui mudam freqüentemente, então dê uma olhada sempre. Como
alternativa, pode ser mais fácil usar um browser WWW em:
Home Page de Don - Linux
para localizar o programa de controle que você está procurando
(cuidado com os browsers WWW que mastigam em silêncio a fonte
substituindo os TABs por espaços e assim por diante - use o ftp, ou
pelo menos uma URL FTP para baixar se não estiver absolutamente
certo).
Agora, se realmente se trata de um programa de controle alfa ou
pré-alfa, então por favor, trate-o como tal. Em outras palavras, não
reclame porque você não sabe o que fazer com ele. Se você não consegue
saber como instalá-lo, então provavelmente você não deveria estar
testando-o. Outra coisa, se ele derrubar sua máquina, não reclame. Em
vez disso, nos envie um relatório do defeito bem documentado, ou
melhor, uma correção!
Note que alguns dos programas de controle experimentais/alfa usáveis
foram incluídos na árvore de diretórios padrão do kernel. Quando
estiver rodando make config, uma das primeiras coisas que será
perguntado a você é se quer perguntado sobre a inclusão de controle de
programas incompletos/em desenvolvimento. Você terá que responder S
aqui para ser perguntado sobre a inclusão de quaisquer controles de
programa alfa/experimentais.
1199.. UUssaannddoo MMaaiiss ddee uummaa PPllaaccaa EEtthheerrnneett ppoorr MMááqquuiinnaa
ethernet,mais de uma placa por maquina@mais de uma placa por máquina O
que precisa ser feito para que o Linux possa usar duas placas
Ethernet?
_C_o_m _o _P_r_o_g_r_a_m_a _d_e _c_o_n_t_r_o_l_e _c_o_m_o _u_m _M_ó_d_u_l_o_: A maioria das distribuições
Linux usam o programa de controle modular agora (ao contrário de ter o
programa de controle montado dentro do kernel). No caso de controle
de programa PCI, o módulo tipicamente detectará todas as placas
instaladas daquele modelo automaticamente. Porém, para as placas ISA,
o teste de uma placa não é uma operação segura, e conseqüentemente
você precisa fornecer o endereço base de I/O da placa para que o
módulo saiba onde procurar. Esta informação fica armazenada no arquivo
/etc/conf.modules.
Como exemplo a ser considerado, um usuário que tenha duas placas ISA
NE2000, uma a 0x300 e outra 0x240, estas são as linha que deveriam
estar em seu arquivo /etc/conf.modules:
alias eth0 ne
alias eth1 ne
options ne io=0x240,0x300
O que isto faz: isto diz que se o administrador (ou o kernel) faz um
modprobe eth0 ou um modprobe eth1 então o programa de controle ne.o
deve ser carregado tanto por eth0 ou eth1. Além disso, quando o
módulo ne.o estiver carregado, ele deve estar carregado com as opções
io=0x240,0x300 para que o programa de controle saiba onde procurar as
placas. Note que o 0x é importante - coisas como 300h tão comumente
usadas no mundo do DOS não funcionarão. Se mudar a ordem do 0x240 e o
0x300 mudará qual placa física termina como eth0 e eth1.
A maioria do programa de controle de módulo ISA pode levar vírgulas
múltiplas separadas de valores i/o como deste exemplo para lidar com
placas múltiplas. Porém, alguns programas de controle (mais velhos?),
tais como o módulo 3c501.o são só capazes de lidar com uma placa por
carga de módulo atualmente. Neste caso você pode carregar o módulo
duas vezes para conseguir que as duas placas sejam detectadas. O
arquivo /etc/conf.modules deste arquivo seria assim:
alias eth0 3c501
alias eth1 3c501
options eth0 -o 3c501-0 io=0x280 irq=5
options eth1 -o 3c501-1 io=0x300 irq=7
Neste exemplo a opção -o foi usada para dar a cada situação do módulo
um único, visto que você não pode ter dois módulos carregados com o
mesmo nome. A opção irq= também foi usada para especificar a montagem
do hardware IRQ da placa (este método pode também ser usado com
módulos que aceitam vírgula separadas dos valores i/o, mas é menos
eficiente pois o módulo termina sendo carregado duas vezes quando isto
não é necessário).
Como último exemplo, considere um usuário com uma placa 3c503 em
0x350e uma placa SMC Elite16 (wd8013) em 0x280. Elas teriam:
alias eth0 wd
alias eth1 3c503
options wd io=0x280
options 3c503 io=0x350
Para placas PCI, você só precisa das linhas alias para correlacionar
as interfaces ethN com o nome do programa de controle apropriado pois
as base I/O base de uma placa PCI pode ser seguramente detectada.
Os módulos disponíveis são tipicamente armazenados em
/lib/modules/`uname -r`/net onde o comando uname -r dá a versão do
kernel (ex. 2.0.34). Você pode dar uma olhada lá para ver qual combina
com sua placa. Uma vez que você tenha a montagem correta em seu
arquivo conf.modules você pode testar as coisas com:
modprobe ethN
dmesg | tail
onde o `N' é o número da interface Ethernet que você está testando.
_C_o_m _o _P_r_o_g_r_a_m_a _d_e _c_o_n_t_r_o_l_e _C_o_m_p_i_l_a_d_o _p_a_r_a _d_e_n_t_r_o _d_o _K_e_r_n_e_l_: Se você
tiver o programa de controle compilado para dentro do kernel, então os
ganchos para as múltiplas placas Ethernet estão todas lá. Porém, note
que no momento só _u_m_a placa Ethernet é auto-testável para o padrão.
Isto ajuda a evitar possíveis travamentos durante a inicialização
causados por tentativas de detecção em placas sensíveis.
Existem duas maneiras para capacitar o auto-teste para a segunda
(terceira, quarta, etc.) placa. O método mais fácil é passar
argumentos em tempo de inicialização para o kernel, o que é feito
usualmente pelo LILO. Tentar detectar a segunda placa pode ser
conseguido usando um argumento em tempo de inicialização tão simples
como ether=0,0,eth1. Neste caso, eth0 e eth1 serão associados na
ordem em que as placas forem encontradas na inicialização. Por
exemplo, se você quer que a placa em 0x300 seja eth0 e a placa em
0x280 seja eth1 então você poderia usar:
LILO: Linux ether=5,0x300,eth0 ether=15,0x280,eth1
O comando ether= aceita mais que a forma IRQ + i/o + name mostrado
acima. Por favor dê uma olhada e, ``Passando os Argumentos da Ethernet
para o Kernel'' para a sintaxe completa, parâmetros específicos de
placas e dicas sobre o LILO.
Estes parâmetros de tempo de inicialização podem ficar permanentes
para que você não tenha que redigitá-los toda vez. Veja a opção de
configuração `append' no manual do LILO.
A segunda maneira (não recomendada) é editar o arquivo Space.c e
substituir a entrada 0xffe0 para o endereço de i/o por zero. A entrada
0xffe0 diz para não ser feita tentativa de detecção neste dispositivo,
e substituindo-o por zero habilitará a tentativa de detecção naquele
dispositivo.
Note que se você pretende usar o Linux como um roteador entre duas
redes, você terá que recompilar o kernel com a opção IP forwarding
habilitada. Geralmente um velho AT/286 com alguma coisa como o
software kbridge é uma solução melhor.
Se você estiver lendo isto enquanto está _c_o_n_e_c_t_a_d_o _n_a _I_n_t_e_r_n_e_t, você
pode dar uma olhada no mini - Como Fazer que Donald tem em seu site
WWW. Verifiquem Múltiplas Placas Ethernet
.
2200.. CClloonneess NNEE22000000 IInnssaattiissffaattóórriiooss
ethernet,clones insatisfatorios@clones insatisfatórios Aqui está uma
lista de alguns dos clones NE-2000 que se sabe que tem vários
problemas. A maioria deles não é fatal. No caso dos listados como
clones insatisfatórios, isto geralmente indica que as placas não tem
os dois bytes de identificação NE2000. Clones Nex000 têm uma PROM de
Endereço de Estação (SAPROM) na memória do buffer de pacotes. Clones
NE2000 têm 0x57,0x57 nos bytes 0x0e,0x0f da SAPROM, enquanto outros
supostos clones NE2000 devem ser detectados por seu prefixo SA.
Esta não é uma lista completa de todos os clones NE2000 que não tem
0x57,0x57 nos bytes 0x0e,0x0f da SAPROM. Existem provavelmente
centenas deles. Se você está tentando usar uma placa que causa o
programa de controle reportá-la como tendo um assinatura inválida,
então você terá que adicionar as assinaturas de suas placas ao
programa de controle. O processo para fazer isso é descrito abaixo.
AAccccttoonn NNEE22000000 -- pode não ser detectada na inicialização, veja abaixo.
AArrttiissoofftt LLAANNttaassttiicc AAEE--22 -- OK, mas tem registradores de erros falhos.
AATT--LLAANN--TTEECC NNEE22000000 -- clone que usa chip Winbond que dispara o programa
de controle SCSI.
SShhiinneeNNeett LLCCSS--88663344 -- clone que usa chip Winbond que dispara o programa
de controle SCSI.
CCaabblleettrroonn EE1100****,, EE2200****,, EE1100****--xx,, EE2200****--xx -- clones ruins, mas o
controle de programa verifica por eles. Veja ``E10**''.
DD--LLiinnkk EEtthheerrnneett IIII -- clones ruins, mas o programa de controle
verifica por eles. Veja ``DE-100 / DE-200''.
DDFFII DDFFIINNEETT--330000,, DDFFIINNEETT--440000 -- clones ruins, mas o programa de controle
verifica por eles. Veja ``DFI-300 / DFI-400''
EEtthheerrNNeexxtt UUTTPP88,, EEtthheerrNNeexxtt UUTTPP1166 -- clones ruins, mas, o programa de
controle verifica por eles.
2211.. PPrroobblleemmaass ccoomm ppllaaccaass NNEE11000000 // NNEE22000000 ((ee cclloonneess))
PPrroobblleemmaa:: Placa clone PCI NE2000 não é detectada na inicialização com
kernel v2.0.x.
CCaauussaa:: O programa de controle ne.c até a v2.0.30 conhece somente o
número PCI ID das placas clone baseadas no RealTek 8029. Desde então,
Windbond e Compex também disponibilizaram placas PCI NE2000 clones,
com números PCI ID diferentes, e desta maneira o programa de controle
não as detecta.
SSoolluuççããoo:: A solução mais fácil é atualizar para uma versão v2.0.31 (ou
mais recente) do kernel do Linux. Ele conhece os números de
identificação (ID) de cerca de cinco chips NE2000-PCI diferentes e os
detectará automaticamente na inicialização ou na hora de carregamento
do módulo. Se você atualizar para 2.0.34 (ou mais recente) há um
programa de controle específico somente para PCI NE2000 que é
levemente menor e mais eficiente que o original programa de controle
ISA/PCI.
PPrroobblleemmaa:: A placa PCI NE2000 clone é detectada como uma ne1000 (placa
8 bits!) na inicialização ou quando carrego o módulo ne.o para os
kernels v2.0.x, e portanto não funcionam.
CCaauussaa:: Alguns clones PCI não implementam acesso com tamanho de byte (e
portanto não são 100 por cento compatíveis com NE2000). Isto causa o
processo de detecção achar que a placa é NE1000 se o teste PCI não foi
utilizado (o que não ocorre quando um endereço de I/O explícito é dado
para o módulo ou em tempo da inicialização).
SSoolluuççããoo:: Você precisa atualizar para v2.0.31 (ou mais recente) como
descrito acima. O programa de controle verifica agora este defeito do
hardware.
PPrroobblleemmaa:: A placa PCI NE2000 tem um desempenho terrível, mesmo quando
o tamanho da janela é reduzido como descrito na seção de Dicas de
Desempenho.
CCaauussaa:: As folhas específicas do chip 8390 original, projetado e
vendido há dez anos atrás, notaram que uma leitura falsa a partir do
chip que era necessária antes de cada operação de escrita para máxima
confiabilidade. O programa de controle tem a facilidade para fazer
isto, mas foi incapacitado pelo padrão desde os dias do kernel v1.2.
Um usuário relatou que a recapacitação desta descaracterização
ajudou seu desempenho com uma placa clone PCI NE2000 barata.
SSoolluuççããoo:: Desde que só foi relatada como uma solução por uma pessoa,
não espere muito. A recapacitação da leitura antes do conserto da
escrita é feita simplesmente pela edição do arquivo linux/driver
/net/ne.c, não comentando a linha que contém NE_RW_BUGFIX e então
remontar o kernel ou o módulo apropriadamente. Por favor, envie uma
mensagem descrevendo a diferença de desempenho e tipo de placa/chip
que você tem se isto puder ajudá-lo (o mesmo pode ser feito para o
programa de controle ne2k-pci.c também).
PPrroobblleemmaa:: ISA Plug and Play NE2000 (como RealTek 8019) não é
detectada.
CCaauussaa:: A especificação NE2000 original (e portanto o programa de
controle NE2000 do Linux) não tem suporte para Plug and Play.
SSoolluuççããoo:: Use a configuração de disco DOS que veio com a placa para
desabilitar o PnP, e para estabelecer a placa para um endereço I/O e
IRQ específico. Acrescente uma linha em /etc/conf.modules como
options ne io=0xNNN onde 0xNNN é o endereço I/O hex que você
estabelece à placa (isto assume que você esteja usando um programa de
controle modular; se não o estiver usando, então use um argumento
ether=0,0xNNN,eth0 na inicialização). Como alternativa, se você
precisar deixar o PnP inativo para que seja compatível com algum outro
sistema operacional, então examine o pacote _i_s_a_p_n_p_t_o_o_l_s. Tente man
isapnp para ver se já está instalado em seu sistema. Se não estiver,
então examine as seguintes URL:
Ferramnetas ISA PNP .
PPrroobblleemmaa:: A placa NE*000 trava a máquina, algumas vezes com uma
mensagem `` DMA Conflict'', algumas vezes completamente em silêncio.
CCaauussaa:: Existiam alguns defeitos no programa de controle e nas camadas
superiores de rede que causam isto. Foram corrigidos nos kernels a
partir da versão v1.2.9. Atualize seu kernel.
PPrroobblleemmaa:: A placa NE*000 trava a máquina durante o teste NE, ou não
consegue ler o endereço de estação corretamente.
CCaauussaa:: Os kernels anteriores à versão v1.3.7 não restabeleciam
completamente a placa após sua detecção durante a inicialização.
Algumas placas baratas não eram deixadas em um estado razoável após a
inicialização e precisavam ser completamente restabelecidas antes de
qualquer tentativa de uso. Um teste anterior também pode ter
erroneamente configurado a placa NE antes do teste NE ser feito. Neste
caso, tente utilizar o comando reserve= na inicialização para proteger
sua placa de outros testes.
PPrroobblleemmaa:: O programa de controle NE*000 reporta `not found (no reset
ack)' durante o teste de inicialização.
CCaauussaa:: Está relacionado com a mudança acima. Após a verificação
inicial de que um 8390 está no endereço de i/o testado, o
restabelecimento é feito. Quando a placa completa o restabelecimento,
espera-se que gere uma resposta indicando que o restabelecimento foi
completado. Sua placa não gerou a resposta (ack reset), então o
programa de controle supõe que não existe placa NE presente.
SSoolluuççããoo:: Você pode informar ao programa de controle que você tem uma
placa ruim usando de outra maneira o parâmetro não utilizado mem_end
com valor igual a0xbad (em hexidecimal) durante a inicialização. Você
_t_e_m _q_u_e informar também um endereço base I/O diferente de zero para a
placa quando usar o override 0xbad. Por exemplo, para uma placa que
está em 0x340 e não gera o reset ack você deve usar algo como:
LILO: Linux ether=0,0x340,0,0xbad,eth0
Isto permitirá que a detecção da placa continue, mesmo que sua placa
não gere o ack. Se você estiver usando o programa de controle na
forma de módulo, então você pode fornecer a opção bad=0xbad da mesma
forma que fornece o endereço I/O. Note que os módulos na v2.0.x não
entenderão a opção bad=, pois isto foi implementado durante o kernel
de desenvolvimento v2.1.
PPrroobblleemmaa:: A placa NE*000 trava a máquina no primeiro acesso à rede.
CCaauussaa:: Este problema foi reportado para kernels tão velhos quanto o
1.1.57 até o kernel atual. Parece confinado a umas poucas placas clone
configuráveis por software. Parece que elas esperam ser inicializadas
de uma forma especial.
SSoolluuççããoo:: Várias pessoas reportaram que somente rodar o software de
configuração DOS que acompanha a placa antes de uma inicialização
(exemplo, loadlin ou control+alt+del) para entrar no Linux faz com que
a placa funcione. Isto indicaria que estas placas precisam ser
inicializadas de uma maneira particular, levemente diferente do que o
atual programa de controle do Linux faz.
PPrroobblleemmaa:: A placa Ethernet NE*000 em 0x360 não é mais detectada.
CCaauussaa:: Kernels recentes (> 1.1.7X) tem mais verificações de sanidade
com respeito a sobreposição de regiões de I/O. Sua placa NE2000 tem
largura de espaço de I/O igual a 0x20, o que a faz entrar no espaço
de I/O da porta paralela em 0x378. Outros dispositivos que podem estar
nesta área são a segunda controladora de unidade de disquete (se
presente) em 0x370 e a controladora secundária IDE em 0x376--0x377. Se
as portas já estiverem registradas por outro programa de controle, o
kernel não deixará o teste acontecer.
SSoolluuççããoo:: Mova sua placa para outro endereço como 0x280, 0x340, 0x320
ou compile seu kernel sem suporte à porta paralela.
PPrroobblleemmaa:: A rede deixa de funcionar toda vez que imprimo alguma coisa
(NE2000).
CCaauussaa:: Mesmo problema que acima, mas você tem um kernel mais velho que
não verifica por sobreposição de regiões de I/O. Use a mesma correção
que acima, e consiga um novo kernel enquanto estiver resolvendo.
PPrroobblleemmaa:: A placa Ethernet NE*000 testa em 0xNNN: 00 00 C5 ... não
encontrado. (assinatura inválida yy zz).
CCaauussaa:: Primeiro, você tem uma placa NE1000 ou NE2000 no endereço
OxNNN? Se tiver, o endereço de hardware reportado parece válido? Se
sim, então você tem um clone NE*000 insatisfatório. Presume-se que
todos os clones NE*000 tem o valor 0x57nos bytes 14 e 15 da SA PROM da
placa. A sua não tem, ela tem `yy zz' no lugar.
SSoolluuççããoo:: Existem duas maneiras de resolver isto. A mais fácil é usar
um valor 0xbad mem_end como descrito acima para o problema `no reset
ack'. Isto vai fazer com que a verificação de assinatura não seja
feita, desde que um endereço base de i/o diferente de zero também seja
fornecido. Desta forma não é necessária a recompilação do kernel.
O segundo método envolve mudar o próprio controlador, e então
recompilar o seu kernel. O controlador (/usr/src/Linux/drivers
/net/ne.c) tem uma lista ``Hall of Shame'' (Galeria da Vergonha) perto
da linha 42. Esta lista é usada para detectar clones insatisfatórios.
Por exemplo, as placas DFI usam DFI nos primeiros 3 bytes da PROM,
no lugar de usar 0x57 nos bytes 14 e 15, como esperado.
Você pode determinar o que há nos primeiros 3 bytes da PROM de sua
placa adicionando uma linha como esta:
printk("PROM prefix: %2.2x %2.2x %2.2x\n",SA_prom[0],SA_prom[1],SA_prom[2]);
no programa de controle, logo depois da mensagem de erro que você
obteve acima, e logo antes de return ENXIO na linha 227.
Reinicialize com esta mudança, e após a falha na detecção, você obterá
os três bytes da PROM como no exemplo da DFI acima. Então você pode
adicionar sua placa na bad_clone_list[] perto da linha 43. Digamos que
a linha acima imprimiu:
PROM prefix: 0x3F 0x2D 0x1C
depois que você reinicializou a máquina, e digamos que a versão 8 bits
de sua placa era chamada "FOO-1k" e a versão 16 bits "FOO-2k". Então
você adicionaria a linha seguinte na bad_clone_list[]:
{"FOO-1k", "FOO-2k", {0x3F, 0x2D, 0x1C,}},
Note que as duas linhas de nome que você adiciona pode ser qualquer
coisa são somente mostradas na inicialização, e não tem nada
relacionado na placa. Você também pode retirar o "printk()" que
adicionou acima, se quiser. Ele não deverá chegar àquela linha
novamente no final das contas. Então, recompile o kernel mais uma
vez, e sua placa deverá ser detectada.
PPrroobblleemmaa:: Erros do tipo DMA address mismatch (endereço DMA não
correspondente).
O chip é um NatSemi 8390 real? (DP8390, DP83901, DP83902 ou DP83905?)
Se não, alguns chips clones não implementam corretamente o registrador
de verificação de transferência. Os programas de controle MS-DOS nunca
fazem a verificação de erro, então isto não importa para eles. (Nota:
a verificação de endereços de DMA não é feita por padrão até o kernel
v1.2.4 por razões de desempenho. Habilite-o com o define `NE_SANITY'
em ne.c se você quiser que a verificação seja feita).
A maioria das mensagens aparecem aos pares? Se for assim: Você está
usando uma NE2000 num slot de 16 bits? Ele está chaveado para usar
somente transferências de 8 bits?
O programa de controle Linux espera que uma NE2000 esteja em um slot
de 16 bits. Uma NE1000 pode tanto estar num slot de 8 quanto num de 16
bits. Este problema também pode ocorrer em alguns clones, notavelmente
em velhas placas D-Link de 16 bits, que não tem os bytes corretos de
identificação no endereço de estação da PROM.
Você está executando o barramento mais rápido que 8Mhz? Se você puder
mudar a velocidade (para mais rápido ou mais lenta), veja se faz
diferença. A maioria dos clones NE2000 rodarão a 16MHz, mas alguns
podem não rodar. Mudar a velocidade pode também mascarar um barramento
barulhento.
Que outros dispositivos estão no barramento? Se a movimentação dos
dispositivos pelos slots altera a confiabilidade, então você tem um
problema de barramento exatamente o que a mensagem de erro foi
projetada para detectar. Parabéns, você provavelmente encontrou a
fonte de outros problemas.
PPrroobblleemmaa:: A máquina trava durante a inicialização logo depois da
mensagem "8390... ou WD...". A remoção da NE2000 corrige o problema.
SSoolluuççããoo:: Mude o endereço base de sua NE2000 para algo como 0x340.
Alternativamente, você pode usar o argumento de inicialização
`reserve=' juntamente com o argumento ether= para proteger sua
placa de outras tentativas de detecção de outros programas de controle
de dispositivos.
CCaauussaa:: Seu clone NE2000 não é um clone suficientemente bom. Uma NE2000
é uma coisa que irá disparar quaisquer tentativas de detecção em seu
espaço. Mudar a NE2000 para um endereço menos popular irá tirá-la do
caminho de outras tentativas de detecção, permitindo a inicialização
de sua máquina.
PPrroobblleemmaa:: A máquina trava durante a tentativa de detecção SCSI durante
a inicialização.
CCaauussaa:: Mesmo problema acima, mude o endereço de sua placa Ethernet, ou
use os argumentos de inicialização reserve/ether.
PPrroobblleemmaa:: A máquina trava durante a tentativa de detecção da placa de
som durante a inicialização.
CCaauussaa:: Não, isto realmente acontece durante a silenciosa tentativa de
detecção SCSI, e é o mesmo problema acima.
PPrroobblleemmaa:: NE2000 não é detectada na inicialização - nenhuma mensagem
na inicialização.
SSoolluuççããoo:: Não existe nenhuma solução mágica pois pode devem existir
razões para ela não ter sido detectada. A lista seguinte pode ajudá-lo
a analisar os possíveis problemas.
1) Monte um kernel novo só com o dispositivo de controle de programa
que você precisa. Certifique-se que você está realmente inicializando
o kernel novo. Esquecer de executar o LILO, etc. pode resultar na
inicialização do antigo (olhe atentamente para hora da montagem/data
reportada na inicialização). Parece óbvio, mas todos já o fizemos
antes. Certifique-se de que o programa de controle está de fato
incluído no novo kernel, verificando o arquivo para nomes
System.mapcomo ne_probe.
2)Examine atentamente as mensagens de inicialização. Alguma vez ela
sugeriu que se fizesse uma detecção ne2k como a detecção `NE*000 em
0xNNN: não encontrado (bla bla)' ou ela simplesmente falha
silenciosamente? Há uma grande diferença. Use dmesg|more para rever as
mensagens de inicialização depois de acessar, ou pressione Shift-PgUp
para rolar a tela depois que a inicialização estiver completada e a
linha de comando de acesso aparecer.
3) Depois da inicialização, faça um cat/proc/ioports e certifique-se
que o iospace total que a placa precisa está vago. Se você estiver em
0x300 então o programa de controle ne2k pedirá 0x300-0x31f. Se
qualquer outro dispositivo de programa de controle for registrado
mesmo em uma porta em algum lugar naquela área, a detecção não
acontecerá naquele endereço e continuará silenciosamente no próximo
dos endereços detectados. Um caso comum é ter o programa de controle
ip reserve 0x378 ou o segundo canal reserve IDE 0x376 que impede o
programa de controle de detectar 0x360-0x380.
4) Mesmo problema acima para cat /proc/interrupts. Certifique-se que
nenhum outro dispositivo registrou a interrupção que você configurou
para a Ethernet. Neste caso, a detecção acontecerá, e o programa de
controle Ethernet se queixará alto na inicialização por não poder
conseguir a linha IRQ desejada.
5) Se você ainda estiver perplexo pela falha silenciosa do programa de
controle, então edite-o e acrescente printk() a detecção. Por exemplo,
com o ne2k você poderia acrescentar/remover as linhas (marcadas com
`+' ou `-' ) em net/ne.c:
int. reg0 = inb_p(ioaddr);
+ printk("NE2k probe - now checking %x\n",ioaddr);
- if (reg0 == 0xFF)
+ if (reg0 == 0xFF) {
+ printk("NE2k probe - got 0xFF (vacant i/o port)\n");
return ENODEV;
+ }
Então ele produzirá mensagens para cada endereço de porta que ele
verificar, e você verá se seu endereço de placa está sendo detectado
ou não.
6) Você também pode conseguir um diagnóstico do site ftp do Don
(mencionado no como fazer também) e veja se ele é capaz de detectar
sua placa depois que você tiver inicializado dentro do Linux. Use a
opção `-p 0xNNN' para dizer onde procurar a placa (o padrão é 0x300 e
ele não vai olhar outra parte, diferente da detecção do tempo de
inicialização). O resultado de quando ele encontrar a placa será
alguma coisa como isto:
Verificar a placa Ethernet em 0x300
Registro 0x0d (0x30d) é 00
Detecção NE2000 inicial passado, valor 00
Registros 8390: 0a 00 00 00 63 00 00 00 01 00 30 01 00 00 00 00
SA PROM 0: 00 00 00 00 c0 c0 b0 b0 05 05 65 65 05 05 20 20
SA PROM 0x10: 00 00 07 07 0d 0d 01 01 14 14 02 02 57 57 57 57
NE2000 encontrou em 0x300, usando a página de início 0x40 e página de fim 0x80.
Seus valores de registro e valores PROM provavelmente serão
diferentes. Note que todos os valores PROM são dobrados para um placa
de 16 bits, e que o endereço Ethernet (00:00:c0:b0:05:65) aparece na
primeira fila, e a assinatura dupla 0x57 aparece no final do PROM.
O resultado de onde não placa instalada em 0x300 parecerá assim:
Verificando a placa Ethernet em 0x300
Registro 0x0d (0x30d) é ff
Inicial falhou no teste NE2000, valor ff.
Registros 8390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
SA PROM 0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
SA PROM 0x10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Assinatura inválida encontrada, comprimento da palavra 2.
Os valores 0xff crescem porque aquele é o valor que está de volta
quando se lê uma porta i/o livre. Se acontecer de você ter algum outro
hardware na região que é detectado, você pode ver alguns não valores
0xff também.
7) Tente a inicialização quente para dentro do Linux a partir de uma
unidade de disquete de inicialização DOS (via loadlin) depois de rodar
o programa de controle DOS fornecido ou o programa configurado. Pode
ser que esteja fazendo alguma mágica extra (ex. não-padronizado)
para inicializar a placa.
8) Tente o pacote do programa de controle ne2000.com de Russ Nelson
para ver se até ele pode ver sua placa; se não puder, então as coisas
não estão boas. Exemplo:
A:> ne2000 0x60 10 0x300
Os argumentos são os vetores de interrupção do software, IRQ de
hardware, e a base i/o. Você pode consegui-lo a partir de qualquer
arquivo msdos em pktdrv11.zip. A atual versão pode ser mais nova que
11.
2222.. PPrroobblleemmaass ccoomm ppllaaccaass SSMMCC UUllttrraa//EEtthheerrEEZZ ee WWDD8800**33
PPrroobblleemmaa:: Você tem mensagens como as que se seguem:
eth0: bogus packet size: 65531, status=0xff, nxpg=0xff
CCaauussaa:: Há um problema com a memória compartilhada.
SSoolluuççããoo:: A causa mais comum para isto são as máquinas PCI que não
estão configuradas para mapear os dispositivos de memória ISA. Por
isso você acaba lendo a RAM do PC (todos valores 0xff) ao invés da RAM
na placa que contém os dados do pacote recebido).
Outros problemas típicos que são fáceis de consertar são os conflitos
de placas, tendo cache ou sombra de ROM incapacitada para aquela
região, ou rodando seu barramento ISA mais rápido que 8Mhz. Há também
um número surpreendente de falhas de memória nas placas Ethernet,
então rode um programa de diagnóstico se você tiver um para sua placa
Ethernet.
PPrroobblleemmaa:: SMC EtherEZ não funciona num modo de memória não
compartilhada (PIO).
CCaauussaa:: Versões mais antigas do programa de controle Ultra só
suportaram a placa no modo de memória compartilhada da operação.
SSoolluuççããoo:: O programa de controle na versão do kernel 2.0 e mais nova,
também suporta o modo de operação i/o programado. Atualize para a
v2.0, ou consiga a substituição para o kernel v1.2.13 do site ftp/www
do Donald.
PPrroobblleemmaa:: wd8003 antiga e/ou wd8013 chave-configurável sempre obtém o
IRQ errado.
CCaauussaa:: As placas wd8003 antigas e clones wd8013 chave-configurável não
tem a EEPROM que o programa de controle pode ler a partir da
configuração IRQ. Se o programa de controle não puder ler o IRQ, então
ele tenta o auto-IRQ para descobrir o que é. E se o auto-IRQ voltar
para zero, então o programa de controle apenas determina IRQ 5 para
uma placa de 8 bits ou IRQ 10 para placa de 16 bits.
SSoolluuççããoo:: Evite o código de auto-IRQ, e diga ao kernel que o IRQ que
você chaveou a placa foi através de argumento de tempo de
inicialização. Por exemplo, se você estiver usando IRQ 9, usar o que
se segue deve funcionar.
LILO: Linux ether=9,0,eth0
PPrroobblleemmaa:: A placa SMC Ultra é detectada como wd8013, mas o IRQ e a
base da memória compartilhada estão errados.
CCaauussaa:: A placa Ultra parece muito uma wd8013, e se o programa de
controle Ultra não estiver presente no kernel, o programa de controle
wd pode enganar a Ultra como uma wd8013. O teste Ultra vem antes do
teste wd, assim isto geralmente não deve acontecer. O Ultra armazena o
IRQ e base mem na EEPROM diferentemente de uma a wd8013, por isso os
valores bogus são reportados.
SSoolluuççããoo:: Recompile só com o programa de controle que você precisa no
kernel. Se você tem uma mistura de placas wd e Ultra em uma máquina, e
está usando os módulos, então carregue o módulo Ultra primeiro.
2233.. PPrroobblleemmaass ccoomm ppllaaccaass 33CCoomm
PPrroobblleemmaa:: A 3c503 pega a IRQ N, mas esta é necessária para algum outro
dispositivo que precisa da IRQ N (exemplo: programa de controle CD
ROM, modem, etc.). Isto pode ser solucionado sem a compilação de um
novo kernel?
SSoolluuççããoo:: O programa de controle 3c503 testa uma linha de IRQ livre na
ordem {5, 9/2, 3, 4}, e ele deve pegar uma linha que não esteja sendo
usada. O programa de controle escolhe quando a placa está em operação.
Se você estiver usando um programa de controle modular, você pode usar
os parâmetros de módulo para configurar várias coisas, inclusive o
valor da IRQ.
O seguinte exemplo seleciona IRQ9, locação de base 0x300, , e if_port #1 (o transceptor externo).
io=0x300 irq=9 xcvr=1
Alternativamente, se o programa de controle estiver compilado dentro
do kernel, você pode configurar os mesmos valores na inicialização
passando os parâmetros via LILO.
LILO: linux ether=9,0x300,0,1,eth0
O seguinte seleciona a IRQ3, testa para locação de base, e o padrão if_port #0 (o transceptor interno).
LILO: linux ether=3,0,0,0,eth0
PPrroobblleemmaa:: 3c503: interrupção configurada X inválida, usará a autoIRQ.
CCaauussaa:: A placa 3c503 só pode utilizar uma destas IRQ: {5, 2/9, 3, 4}
(estas são as únicas linhas que estão conectadas à placa). Se você
passa um valor de IRQ que não está no conjunto acima, você vai receber
a mensagem acima. Geralmente, especificar um valor de interrupção
para a 3c503 não é necessário. A 3c503 irá fazer autoIRQ quando ela
for configurada através do ifconfig'ed, e escolher uma destas IRQ: {5,
2/9, 3, 4}.
SSoolluuççããoo:: Use uma das IRQs válidas relacionadas acima, ou habilite
autoIRQ não especificando uma linha de IRQ.
PPrroobblleemmaa:: Os programas de controle 3c503 disponibilizados não usam a
porta AUI (thicknet). Como posso escolhê-la (diferente da porta padrão
thinnet)?
SSoolluuççããoo:: A porta AUI 3c503 pode ser selecionada em tempo de
inicialização com a versão para o programa de controle do in-kernel, e
a inserção do módulo para o programa de controle modular. A seleção é
indicada no bit mais baixo da variável atualmente não utilizada
dev->rmem_start, então um parâmetro de inicialização igual a:
LILO: linux ether=0,0,0,1,eth0
deve funcionar para programa de controle para in-kernel.
Para especificar a porta AUI quando carregando como um módulo, apenas
acrescente xcvr=1 às linhas de opções de módulo junto com seus valores
irq e i/o.
2244.. FFAAQQss NNããoo EEssppeeccííffiiccaass ppaarraa QQuuaallqquueerr PPllaaccaa..
2255.. PPllaaccaa EEtthheerrnneett nnããoo éé ddeetteeccttaaddaa nnaa iinniicciiaalliizzaaççããoo..
Geralmente a razão disto é que as pessoas não estão usando um kernel
que tenha suporte para sua placa. Para um kernel modular, geralmente
significa que o módulo exigido não foi requisitado para carga, ou que
o endereço I/O precisa ser especificado como uma opção de módulo.
Se você estiver usando um kernel com base modular, como aqueles
instalados pela maioria das distribuições Linux, então tente e use o
utilitário da configuração para a distribuição para selecionar o
módulo para sua placa. Para as placas ISA, é uma boa idéia determinar
o endereço I/O da placa e acrescentá-lo como opção (exemplo: io=0x340)
se o utilitário da configuração pedir alguma opção. Se não houver
nenhum utilitário de configuração, então você terá que acrescentar o
nome do módulo correto (e opções) para /etc/conf.modules -- veja man
modprobe para maiores detalhes.
Se você estiver usando um kernel pré-compilado que faz parte do
conjunto de distribuição, então verifique a documentação para ver qual
kernel você instalou, e se foi montado com suporte para sua placa
particular. Se não faz parte, então suas opções são tentar e conseguir
uma que tenha suporte para sua placa, ou montar você mesmo.
Usualmente é sábio compilar seu próprio kernel somente com os
controladores que você precisa, pois isto diminui o tamanho do kernel
(poupando sua preciosa RAM para as aplicações) e reduz o número de
testes e dispositivos que podem prejudicar um hardware sensível.
Compilar um kernel não é complicado como parece. Você apenas terá que
responder sim ou não para uma porção de questões sobre que programas
de controle você quer, e ele faz o resto.
A próxima causa principal é ter outro dispositivo usando parte do
espaço de I/O que sua placa precisa. A maioria das placas tem tamanho
de espaço de I/O igual a 16 ou 32 bytes. Se sua placa estiver
configurada para 0x300 e 32 bytes de espaço de I/O, então o programa
de controle usará 0x300-0x31f. Se qualquer outro programa de controle
de dispositivo tiver registrado pelo menos uma porta dentro desta
faixa, o teste não será feito neste endereço e o programa de controle
irá continuar silenciosamente para o próximo endereço a ser testado.
Então depois da inicialização, execute cat /proc/ioports e verifique
se todo o espaço de I/O que sua placa precisa está vaga.
Um outro problema é ter sua placa chaveada para um endereço i/o que
não é testado por padrão. Existe uma lista ``Endereços Testados'' para
cada placa neste documento. Mesmo que a configuração de I/O de sua
placa não esteja na lista de endereços testados, você pode fornecer
isto na inicialização com o comando ether= como descrito em ``Passando
os Argumentos da Ethernet para o Kernel''. O programa de controle
modular pode fazer uso da opção io= especificar um endereço que não
esteja testado por padrão.
2266.. OO iiffccoonnffiigg rreeppoorrttaa oo eennddeerreeççoo ii//oo eerrrraaddoo ppaarraa ppllaaccaa..
Não, ele não faz isso. Você está interpretando incorretamente. Isto
não é um defeito, pois os números reportados estão corretos. Acontece
que algumas placas baseadas no 8390 (wd80x3, smc-ultra, etc.) têm o
chip 8390 real com um deslocamento a partir de uma porta i/o designada
primeiro. Este é o valor armazenado em dev->base_addr, e é o que o
ifconfig reporta. Se você quiser ver todo alcance das portas que sua
placa pode usar, então tente cat /proc/ioports que dará os números que
você espera.
2277.. AA mmááqquuiinnaa PPCCII ddeetteeccttaa aa ppllaaccaa,, mmaass oo pprrooggrraammaa ddee ccoonnttrroollee ffaallhhaa oo
tteessttee..
As PCI BIOSes mais novas podem não capacitar todas as placas PCI na
inicialização, especialmente se a opção BIOS PNP OS estiver
capacitada. Esta descaracterização é para suportar a próxima subversão
do Windows que ainda usa alguns programas de controle de modo real.
Você tanto pode incapacitar esta opção, como tentar e atualizar para
um programa de controle mais novo que tenha o código para capacitar
uma placa incapacitada.
2288.. AAss ppllaaccaass ddee MMeemmóórriiaa CCoommppaarrttiillhhaaddaa IISSAA nnaa MMááqquuiinnaa PPCCII nnããoo
ffuunncciioonnaamm ((00xxffffffff))..
Isto geralmente se mostra enquanto se lê muitos valores 0xffff.
Nenhuma placa de memória compartilhada de qualquer tipo funciona numa
máquina PCI a menos que você tenha uma configuração PCI ROM BIOS/CMOS
SETUP configurada apropriadamente. Você tem que configurar para
permitir o acesso da memória compartilhada a partir do barramento ISA
para região da memória que sua placa está tentando usar. Se você não
conseguir entender quais são aplicáveis, peça a seu fornecedor ou ao
guru de computador local. Para AMI BIOS, há geralmente uma seção "Plug
and Play" onde haverá montagens ``ISA Shared Memory Size'' (tamanho de
memória compartilhada ISA) e ``ISA Shared Memory Base'' (base de
memória compartilhada). Para placas como wd8013 e Ultra SMC, mude o
tamanho a partir do padrão de Incapacitado para 16kB e mude a base
para o endereço de memória compartilhada de sua placa.
2299.. AA mmááqquuiinnaa NNeexxGGeenn tteemm eerrrrooss ddee ``iinnddiiccaaddoorreess ddee ppáággiinnaa ddee lleeiittuurraa
nnããoo rreellaacciioonnaaddooss''..
Um truque da CPU NexGen causou estas mensagens de erro a todos os
usuários com placas baseadas 8390 (wd80x3, 3c503, SMC Ultra/EtherEZ,
ne2000, etc). As versões 2.0 do kernel e mais recentes não tem estes
problemas. Atualize o seu kernel.
3300.. SSuuppoorrttee AAssssíínnccrroonnoo ddee MMooddoo ddee TTrraannssffeerrêênncciiaa ((AATTMM))
Werner Almesberger tem trabalhado no suporte ATM para o Linux. Ele tem
trabalhado com a placa ENI155p de Redes Eficientes: (Efficient
Networks ) e a placa Zeitnet ZN1221
(Zeitnet ).
Werner diz que o programa de controle para a ENI155p é bastante
estável, enquanto o programa de controle para a ZN1221 ainda não está
terminado.
Verifique o status mais recente/atualizado na seguinte URL:
Suporte ATM Linux .
3311.. SSuuppoorrttee EEtthheerrnneett GGiiggaabbyyttee
Existe algum suporte Ethernet Gigabyte para o Linux?
Um programa de controle para o adaptador de Pacotes de Máquinas G-NIC
PCI Ethernet Gigabyte está para ser acrescentado numa subversão do
kernel v2.0.34. que está a caminho. Para maiores detalhes, suporte, e
atualização de programa de controle, veja:
http://cesdis.gsfc.nasa.gov/linux/programa de controle/yellowfin.html.
3322.. SSuuppoorrttee FFDDDDII
Existe um suporte a FDDI no Linux?
Sim, Larry Stefani escreveu um programa de controle para os kernels
v2.0 para as placas DEFEA e DEFPA da DEC. Foram incluídos no kernel
v2.0.24. Correntemente nenhuma outra placa é suportada.
3333.. SSuuppoorrttee DDuupplleexx TToottaall
O Duplex Total me dará 20MBps? O Linux o suporta?
Cameron Spitzer escreve o seguinte a respeito das placas duplex total
10Base-T: `Se você conectá-la a um duplex total mude o hub, e se seu
sistema for rápido o suficiente e não estiver fazendo nada mais, ela
pode manter o link ocupado em ambas as direções. Não existe um duplex
total 10BASE-2 ou 10BASE-5 (coax fino e denso). O Duplex Total
funciona incapacitando a detecção de colisão no adaptador. É por isso
que você não pode fazê-lo com o coax; o LAN não rodará desta maneira.
A10BASE-T (interface RJ45) usa fios separados para enviar e receber,
por isso é possível executar as duas maneiras ao mesmo tempo. O hub
que muda cuida do problema de colisão. O índice de sinalização é de 10
Mbps.'
Como você pode ver, você ainda só será capaz de receber ou transmitir
a 10Mbps, e por isso não espere um aumento de desempenho duas vezes
maior. Se ele é ou não suportado, isto depende da placa e
possivelmente do programa de controle. Algumas placas podem fazer a
autonegociação, algumas precisam de suporte do controlador e algumas
podem precisar que o usuário selecione uma opção na configuração
EEPROM da placa. Somente os usuários sérios/importantes notariam a
diferença entre os dois modos.
3344.. AAss PPllaaccaass EEtthheerrnneett ppaarraa LLiinnuuxx eemm PPllaaccaass AAXXPP PPCCII AAllpphhaa
Quanto às v2.0, só as 3c509, depca, de4x5 lance32, e todos os
programas de controle 8390 (wd, smc-ultra, ne, 3c503, etc.) fizeram
uma arquitetura independente para que funcionasse nos sistemas
baseados de Alpha DEC. Outro programa de controle atualizado de PCI da
página WWW do Donald pode também funcionar pois foram escritas com a
arquitetura independente em mente.
Note que as mudanças que são necessárias para fazer uma arquitetura
independente de programa de controle não são tão complicados. Você só
tem que fazer o seguinte:
-multiplique todos os valores relativos jiffies por HZ/100 para o
valor diferente de HZ que a Alpha usa. (ex.: timeout=2; torna-se
timeout=2*HZ/100;).
-substitua qualquer indicador de memória i/o (640k to 1MB) de
referências pelas chamadas apropriadas readb() writeb() readl()
writel(), como mostrado no exemplo.
- int *mem_base = (int *)dev->mem_start;
- mem_base[0] = 0xba5eba5e;
+ unsigned long mem_base = dev->mem_start;
+ writel(0xba5eba5e, mem_base);
-substitua toda as chamadas de memcpy() que tem memória i/o como fonte
ou destinos almejados pelo apropriado do memcpy_fromio() ou
memcpy_toio().
Detalhes de como lidar com os acessos de memória numa arquitetura de
moda independente estão documentadas no arquivo
linux/Documentation/IO-mapping.txt que vem com o kernel.
3355.. EEtthheerrnneett ppaarraa LLiinnuuxx nnoo HHaarrddwwaarree SSUUNN//SSppaarrcc..
Para as mais recentes informações sobre Sparc tente a seguinte URL:
Linux Sparc .
Note que alguns hardwares Ethernet Sparc tem seu endereço MAC a partir
do computador, e por isso você pode acabar com interfaces múltiplas e
com o mesmo endereço MAC. Se você precisar por mais que uma interface
na mesma rede então use a opção hw para ifconfig designar um endereço
MAC único.
Emissões relativas ao programa de controle de porta do PCI para a
plataforma Sparc são semelhantes aquelas mencionadas acima para a
plataforma AXP. Além disso pode haver algumas emissões endian, pois a
Sparc é uma endian grande, e a Axp e ix88 são pequenas.
3366.. CCoonneeccttaannddoo 1100BBaasseeTT sseemm uumm HHuubb
Posso conectar a 10BaseT (RJ45) de sistemas baseados juntos sem um
hub?
Você pode conectar duas máquinas facilmente, mas não mais que isto,
sem dispositivos/gizmos extras. Veja a seção ``Par Trançado'' -- ele
explica como fazer. Então, você não pode programar um hub juntos
apenas cruzando alguns fios e outras coisas. É quase impossível fazer
o sinal de colisão sem duplicar o hub.
3377.. SSIIOOCCSSIIFFxxxxxx:: NNããoo eexxiissttee ttaall ddiissppoossiittiivvoo
Eu tenho um punhado de mensagens: `SIOCSIFxxx: Nada de mensagens de
dispositivo na inicialização', seguido por uma `SIOCADDRT: Rede está
inalcançável'. O que está errado?
Seu dispositivo Ethernet não foi detectado na inserção na
inicialização/módulo, e quando o ifconfig e o route são executados,
eles não tem nenhum dispositivo para funcionar. Use dmesg | more para
rever as mensagens de inicialização e ver se há alguma mensagem sobre
a detecção de uma placa Ethernet.
3388.. SSIIOOCCSSFFFFLLAAGGSS:: TTeennttee nnoovvaammeennttee
Eu obtenho `SIOCSFFLAGS: Tente novamente' quando rodo `ifconfig' --
Huh. E agora?
Alguns outros dispositivos tomaram o IRQ que sua placa Ethernet está
tentando usar, e assim a placa Ethernet não pode usar o IRQ. Você não
precisa necessariamente reinicializar para resolver isto, pois alguns
dispositivos só se apoderam dos IRQs quando eles precisam deles e
depois os libertam quando tiverem terminado. Os exemplos são alguma
placas de som, portas seriais, controlador de disquetes, etc.. Você
pode digitar cat /proc/interrupts para ver qual interrupção está
atualmente _e_m _u_s_o. A maioria dos programas de controle da placa
Ethernet do Linux só se apoderam do IRQ quando eles estão abertos para
o uso via `ifconfig'. Se você puder conseguir o outro dispositivo para
liberar a linha IRQ requerida, então você deve poder tentar outra
vez com ifconfig.
3399.. UUssaannddoo ``iiffccoonnffiigg'' ee LLiinnkk UUNNSSPPEECC ccoomm eennddeerreeççoo ddee HHaarrddwwaarree ddee
0000::0000::0000::0000::0000::0000
ethernet,ifconfig Quando eu rodo ifconfig sem argumentos, ele relata
que o LINK é UNSPEC (ao invés de Ethernet de 10Mbs) e ele também diz
que meu endereço de hardware é todo de zeros.
Isto é porque as pessoas estão executando uma versão mais nova do
programa `ifconfig' que a versão do kernel deles. Esta nova versão de
ifconfig não é capaz de reportar estas propriedades quando usada em
conjunção com um kernel mais antigo. Você tanto pode atualizar seu
kernel, carregar o ifconfig, ou simplesmente ignorar. O kernel sabe
seu endereço de hardware, por isso ele realmente não se importa se o
ifconfig não consegue lê-lo.
Você pode conseguir uma informação estranha se o programa ifconfig que
você está usando é muito mais antigo que o kernel que você está
usando.
4400.. NNúúmmeerroo IImmeennssoo ddee EErrrrooss ddee RReecceeppççããoo ee TTrraannssmmiissssããoo
ethernet,erros de recepcao e transmissao@erros de recepção e
transmissão Quando eu rodo ifconfig sem argumentos, ele reporta que eu
tenho um erro imenso nos dois pacotes, o de gravação e o de
transmissão. Tudo parece estar funcionando bem. O que está errado?
Olhe outra vez. Diz RX packets _b_i_g _n_u_m_b_e_r PPAAUUSSEE errors 0 PPAAUUSSEE dropped
0 PPAAUUSSEE overrun 0. E o mesmo para a coluna TX. Por isso os números
grandes que você está vendo são o número total de pacotes que sua
máquina gravou e transmitiu. Se você ainda acha confuso, tente digitar
cat /proc/net/dev.
4411.. EEnnttrraaddaass eemm //ddeevv// ppaarraa PPllaaccaass EEtthheerrnneett
Eu tenho /dev/eth0 como um link para /dev/xxx. Está certo?
Ao contrário do que você deve ter ouvido, os arquivos /dev/* não são
usados. Você pode apagar qualquer um /dev/wd0, /dev/ne0 e entradas
similares.
4422.. LLiinnuuxx ee ````ttrraaiilleerrss''''
Devo incapacitar os trailers, quando executo `ifconfig', na minha
placa Ethernet?
Você não pode incapacitar os trailers, e você não deve querer fazer
isto. `Trailers' são programas para evitar cópia de dados nas camadas
da rede. A idéia era usar um cabeçalho de tamanho fixo trivial de
tamanho `H', colocar o cabeçalho de tamanho variável no final do
pacote, e alojar todos os pacotes `H' bytes antes de começar uma
página. Parecia uma boa idéia, mas acabou não funcionando bem na
prática. Se alguém sugerir o uso de `-trailers', note que é o
equivalente ao sangue dos bodes expiatórios. Não fará nada para
resolver o problema, mas se o problema se consertar sozinho então
alguém pode reivindicar conhecimento mágico profundo.
4433.. AAcceessssoo aaoo ddiissppoossiittiivvoo bbrruuttoo EEtthheerrnneett
Como consigo acesso ao dispositivo bruto Ethernet no linux, sem
atravessar o TCP/IP e amigos?
int s=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL));
Isto dá a você um socket para receber todos os tipos de protocolo.
Faça chamadas recvfrom() para ele e ele preencherá o sockaddr com tipo
de dispositivo em sa_família e o nome do dispositivo na série sa_data.
Eu não sei quem originariamente inventou SOCK_PACKET para Linux (já
existe há décadas) mas é coisa boa para valer. Você pode usá-lo para
enviar coisas brutas também via chamadas sendto(). Você tem que ser
superusuário para qualquer um dos dois, é claro.
4444.. DDiiccaass ddee DDeesseemmppeennhhoo
Aqui estão algumas dicas que você pode usar se estiver tendo um
desempenho baixo de sua Ethernet, ou para ganhar um pouco mais de
velocidade em transferências ftp.
O programa ttcp.c é um bom teste para medir velocidade em baixo nível.
Outro truque comum é fazer um ftp> get large_file /dev/null onde
large_file é > 1MB e reside no buffer cache da máquina transmissora
(faça o get pelo menos duas vezes, pois a primeira estará ajustando
o buffer cache na máquina transmissora). Você quer que o arquivo
esteja no buffer cache porque você não está interessado em incluir a
velocidade de acesso a arquivos a partir do disco em suas medidas. É
por isso também que você salva o arquivo recebido em /dev/null e não
no disco.
4455.. CCoonncceeiittooss GGeerraaiiss
Mesmo uma placa de 8 bits é capaz de receber pacotes back-to-back sem
problemas. A dificuldade aparece quando o computador não consegue
capturar os pacotes recebidos rápido o suficiente para abrir espaço
para mais pacotes vindos da rede. Se o computador não retira
rapidamente os pacotes recebidos da memória da placa, a placa não terá
onde colocar o novo pacote.
Neste caso a placa ou descarta o novo pacote, ou escreve em cima de um
pacote anteriormente recebido. Qualquer um dos procedimentos
interrompe seriamente o fluxo de tráfego pois causam/pedem
retransmissões e podem degradar seriamente o desempenho por um fator
de até 5!
Placas com mais memória são capazes de armazenar mais pacotes, e
desta forma podem manipular pacotes back-to-back para descartar
pacotes. Isto por sua vez significa que a placa não requer uma
latência tão baixa do computador com respeito a retirada dos pacotes
recebidos do buffer para evitar o descarte de pacotes.
A maioria das placas de 8 bits tem um buffer de 8kB, e a maioria das
placas de 16 bits tem um buffer de 16kB. A maioria dos controladores
Linux reservarão 3kB deste buffer (para dois buffers de transmissão),
deixando somente 5kB de espaço para recepção em uma laca de 8 bits.
Isto é suficiente para apenas 3 pacotes completos Ethernet (1500
bytes).
4466.. VVeelloocciiddaaddee ddoo BBaarrrraammeennttoo IISSAA
ethernet,barramento ISA Como mencionada acima, se os pacotes são
retirados da placa rápido o suficiente, então uma condição de
descarte/sobreposição de pacote recebido não ocorrerá mesmo quando a
quantidade de memória no buffer de pacotes for pequena. O fator que
determina a taxa em que os pacotes são retirados da placa para a
memória do computador é a velocidade do caminho que os dados percorrem
entre os dois e a velocidade do barramento ISA (se a CPU for tão
lenta quanto um 386sx-16, então isto também terá um papel).
O relógio de barramento ISA recomendado é de cerca de 8MHz, mas muitas
placas-mãe e dispositivos periféricos podem ser rodados a freqüências
altas. A freqüência do relógio para o barramento ISA pode usualmente
ser estabelecido na configuração CMOS, selecionando um divisor da
placa principal da CPU da freqüência do relógio.
Por exemplo, aqui estão algumas velocidades de recepção como foram
medidas pelo programa TTCP num 40MHz 486, com uma placa WD8003EP de 8
bits, para velocidades de barramento ISA diferentes.
Velocidade do Barramento ISA (MHz) Rx TTCP (kB/s)
------------------- --------------
6.7 740
13.4 970
20.0 1030
26.7 1075
Você seria muito pressionado a fazer melhor que 1075kB/s com _q_u_a_l_q_u_e_r
placa Ethernet de 10Mb/s, usando o TCP/IP. Porém, não espere que todos
os sistemas funcionem em velocidades altas de barramento ISA. A
maioria dos sistemas não funcionarão apropriadamente à velocidades
acima de 13MHz (também, alguns sistemas PCI tem a velocidade de
barramento ISA fixa em 8MHz, por isso que o usuário final não tem a
opção de aumentá-la).
Além disso para acelerar as velocidades de transferência, geralmente
se tem o benefício de uma redução no uso da CPU devido a duração mais
curta da memória e aos ciclos de i/o (note que os discos rígidos e as
placas de vídeo localizadas no barramento ISA também experimentará um
aumento de desempenho a partir de uma velocidade de barramento ISA
aumentada).
Certifique-se de fazer uma cópia de segurança de seus dados antes de
experimentar velocidades de barramento ISA maiores que 8MHz, e teste
exaustivamente todos os periféricos ISA para se certificar de que
todos estão operando corretamente depois de fazer qualquer aumento de
velocidade.
4477.. CCoonnffiigguurraannddoo aa JJaanneellaa ddee RReecceeppççããoo TTCCPP
ethernet,TCP Mais uma vez, placas com quantidades de RAM pequenas e
caminhos de dados relativamente lento entre a placa e a memória do
computador tem problemas. O tamanho padrão da janela de recepção TCP é
32kB, o que significa que um computador mais rápido na mesma sub-rede
que você, pode enviar 32k de dados em você, sem parar para ver se você
recebeu corretamente qualquer parte.
Versões recentes do comando route tem a capacidade de modificar o
tamanho desta janela na execução. Usualmente é somente para a rede
local que esta janela deve ser reduzida, pois os computadores além de
alguns roteados são `armazenados' o bastante para não representar um
problema. Um exemplo de uso pode ser:
route add ... window
onde win_size é o tamanho da janela que você deseja usar (em bytes).
Uma placa de 8 bits 3c503 num barramento ISA operando à velocidade de
8MHz ou menos trabalharia bem com uma janela de aproximadamente 4kB.
Uma janela muito grande causaria a sobreposição de pacotes recebidos,
e uma redução drástica na velocidade da Ethernet. Você pode verificar
o estado operacional através do seguinte comando: cat /proc/net/dev o
qual mostrará qualquer condição de pacote descartado ou sobreposto que
tenha ocorrido.
4488.. MMeellhhoorraannddoo oo ddeesseemmppeennhhoo ddoo NNFFSS
ethernet,melhorando o NFS Algumas pessoas descobriram que usar uma
placa de 8 bits em clientes NFS causa um desempenho pior do que o
esperado quando se usa tamanho de pacote NFS igual a 8kB (Tamanho
nativo da Sun).
A possível razão para isto pode ser devida à diferença no tamanho dos
buffers na placa entre placas de 8 e 16 bits. O tamanho máximo de
pacote Ethernet é de 1500 bytes. Agora note que um pacote NFS de 8kB
chegará como aproximadamente 6 pacotes back-to-back de tamanho máximo.
As placas de 8 e 16 bits não tem problemas em receber pacotes back-to-
back; o problema aparece quando a máquina não retira os pacotes dos
buffers da placa no tempo certo, e o buffer sobrecarrega. O fato de
que as placas de 8 bits usam um ciclo extra no barramento ISA por
transferência também atrapalha. O que você pode fazer se tiver uma
placa de 8 bits é montar o tamanho do pacote NFS para 2kB (ou mesmo
1kB), ou tentar aumentar a velocidade do barramento ISA de maneira que
o buffer da placa seja tratado mais rapidamente. Eu descobri que uma
velha placa WD8003E rodando a 8MHz (sem nenhuma outra carga no
sistema) consegue receber sem problemas (descarte/sobreposição de
pacotes) com um tamanho de pacote NFS igual a 2kB, mas com um igual a
4kN, onde o desempenho foi degragadado por um fator de três.
4499.. IInnffoorrmmaaççõõeess EEssppeeccííffiiccaass aa VVeennddeeddoorr//FFaabbrriiccaannttee//MMooddeelloo
ethernet,informaçoes sobre vendedor,fabricante e modelo@informações
sobre vendedor, fabricante e modelo O que se segue relaciona muitas
placas em ordem alfabética por nome do vendedor e depois o
identificador do produto. Ao lado de cada identificação do produto,
você verá tanto `Suportado', `Semi-Suportado' ou `Não Suportado'.
`Suportado' significa que existe um programa de controle para aquela
placa, e muitas pessoas estão alegremente usando e parece que ela é
bastante confiável.
`Semi-Suportado' significa que um programa de controle existe, mas
pelo menos uma das seguintes descrições é verdadeira: (1) O programa
de controle e/ou o hardware são defeituosos, o que pode causar um
desempenho insatisfatório, com conexões falhas, ou mesmo entrar em
colapso. (2) O programa de controle é novo ou a placa é bastante
raro, e por isso o programa de controle tem sido de pouco uso/teste e
o autor do programa de controle tem tido pouco retorno. Obviamente (2)
é preferível ao (1), e a descrição individual do programa de controle
da placa deve deixar claro qual delas é verdadeira. Tanto num caso
como no outro, você provavelmente terá que responder `S' quando
perguntado: `Comando, desenvolvimento e/ou programa de
controle/código incompleto?' quando executar make config.
`Não Suportado' significa que não há um programa de controle
disponível atualmente para aquela placa. Isto pode ser devido a falta
de interesse no hardware o que é raro/incomum, ou porque os vendedores
não lançarão a documentação do hardware necessária para escrever um
programa de controle.
Note que a diferença entre `Suportado' e `Semi-Suportado' é bastante
subjetiva, e está baseada no retorno do usuário observado nas
mensagens do grupo de notícias e envio de listas de correspondência
(afinal de contas, é impossível para uma pessoa testar todos os
programas de controle com todas as placas para cada versão do
kernel!!!). Por isso esteja avisado que você pode encontrar uma placa
relacionada como Semi-Suportado que funciona perfeitamente para você
(o que é genial), ou que uma placa relacionada como Suportado e lhe dá
todo tipo de problemas (o que não tão genial).
5500.. 33CCoomm
Se você não tem certeza qual é a sua placa, mas você acha que é uma
placa 3Com, você pode provavelmente fazer uma idéia pelo número de
montagem. A 3Com tem um documento `Identificando Placas de redes 3Com
Pelo Número de Montagem' (ref 24500002) que muito provavelmente
clarearia as coisas. Veja ``Informações Técnicas da 3Com'' para
informações sobre como obter documentos da 3Com.
Note também que o 3Com tem um site FTP com várias vantagens:
ftp.3Com.com que você pode querer verificar.
Para aqueles que estiverem folheando este documento com um browser
WWW, você pode tentar o site WWW da 3Com também.
5511.. 33cc550011
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Dor de cabeça demais para usar. O excedente está disponível em muitos
lugares. Evite-o como se fosse uma praga. Novamente, não compre esta
placa, nem mesmo de brincadeira. Seu desempenho é horrível, e ela
quebra de muitas maneiras.
Para aqueles que ainda não estão convencidos, a 3c501 só pode fazer
uma coisa de cada vez e enquanto você estiver removendo um pacote de
um buffer de pacote único ela não pode receber um outro pacote, nem
receber um pacote enquanto estiver carregando um pacote de
transmissão. Isto era bom para uma rede entre dois computadores de
base 8088 onde o processamento de cada pacote e a resposta levavam
10's de msecs, mas as redes modernas enviam pacotes back-to-back para
quase todas as transações. O autoIRQ funciona, DMA não é usado, o
auto-teste só parece em 0x280 e 0x300, e o nível de depuração é
montado com o terceiro argumento do tempo de inicialização.
Mais uma vez, o uso da 3c501 é _f_i_r_m_e_m_e_n_t_e _d_e_s_e_n_c_o_r_a_j_a_d_o! Ainda mais
com um kernel multicast IP, enquanto você sua para ter uma pausa
enquanto escuta _t_o_d_o_s os pacotes multicast. Veja os comentários no
alto do código da fonte para maiores detalhes.
5522.. EEtthheerrLLiinnkk IIII,, 33cc550033,, 33cc550033//1166
Status -- _S_u_p_o_r_t_a_d_o.
A 3c503 não tem ``configuração EEPROM'', por isso um programa de
diagnóstico/configuração não é necessário antes de executar a placa
com Linux. O endereço da memória compartilhada da 3c503 é montada
usando chaves que são compartilhadas com o endereço PROM de
inicialização. Isto é confuso para as pessoas familiarizadas com
outras placas ISA, onde você sempre deixa o conjunto de chaves para
incapacitar a menos que você tenha uma PROM de inicialização.
Estas placas devem ser mais ou menos da mesma velocidade que a mesma
largura do barramento WD80x3, mas na verdade é um pouco mais lento.
Estas placas Ethernet de memória compartilhada também tem um modo I/O
programado que não usa as instalações 8390 (suas máquinas encontraram
muitos defeitos!). O programa de controle Linux 3c503 pode também
funcionar com a 3c503 no modo I/O programado, mas este é mais lento e
menos confiável que o modo da memória. Também o modo I/O programado
não está bem testado quando atualiza o programa de controle. Você não
deve usar o modo I/O programado a menos que precise dele para a
compatibilidade MS-DOS.
A linha IRQ da 3c503 IRQ é montada no software, sem nenhuma sugestão
da EEPROM. Diferente do programa de controle MS-DOS, o programa de
controle Linux tem capacidade para autoIRQ: ele usa a primeira linha
IRQ disponível em {5,2/9,3,4}, selecionando a cada vez que a placa é
ifconfig'ed (executado o comando ifconfig). Versões mais antigas do
programa de controle selecionavam o IRQ na hora da inicialização. O
ioctl() chama `ifconfig' e retornará a EAGAIN se nenhuma linha IRQ
estiver disponível no momento.
Alguns problemas comuns que as pessoas têm com a 503 são discutidos em
``Problemas com placas 3Com''.
Se você pretende usar este programa de controle como um módulo
carregável você deve provavelmente ver ``Usando o Programa de Controle
Ethernet como Módulos'' para informação específica sobre módulo.
Note que algumas estações de trabalho 386 sem discos têm uma prancha
3c503 (feita pela 3Com e vendida com nomes diferentes, como `Bull')
mas a identidade do vendedor não é uma ID 3Com e assim não será
detectada. Mais detalhes podem ser encontrados no pacote Etherboot,
que você precisará de qualquer jeito para inicializar estas caixas sem
discos.
5533.. 33cc550055
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Este é um programa de controle que foi escrito por Craig Southeren
geoffw@extro.ucc.su.oz.au. Estas placas também usam o chip the i82586.
Não há tantas destas placas por aí. Ela está incluída no padrão
kernel, mas é classificada como um programa de controle alpha. Veja
``Controlador Alpha'' para informações importantes sobre o uso do
programa de controle Ethernet alpha-teste com Linux.
Há também o arquivo /usr/src/linuxdriver /net/README.3c505 que você
deve ler se for usar uma destas placas. Ele contém várias opções que
você pode capacitar/incapacitar. Informações técnicas estão
disponíveis em ``Programando chips Intel''.
5544.. 33cc550077
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Esta placa usa um dos chips Intel, e o desenvolvimento do programa de
controle está intimamente relacionado com o desenvolvimento do
programa de controle Ether Express. O programa de controle está
incluído na subversão kernel padrão, mas como um programa de controle
alpha.
Veja ``Controlador Alpha'' para informações importantes sobre o uso do
programa de controle Ethernet alpha-teste com Linux. Informações
técnicas estão disponíveis em ``Programando chips Intel''.
5555.. 33cc550099 // 33cc550099BB
Status -- _S_u_p_o_r_t_a_d_o.
Esta placa é bastante barata e tem um bom desempenho para um projeto
non-bus-master. As desvantagens são que o 3c509 original exige uma
latência de interrupção muito baixa. A 3c509B não deve sofrer do mesmo
problema, por ter um buffer maior (veja abaixo). Estas placas usam os
transferidores PIO, similares a placa ne2000, e também uma placa de
memória compartilhada como uma wd8013 será mais eficiente em
comparação.
A 3c509 original tem um buffer de pacote pequeno (4kB total, 2kB Rx,
2kB Tx), fazendo que o programa de controle ocasionalmente derrube um
pacote se interrupções mascararem por muito tempo. Para minimizar este
problema, você pode tentar desmascarar as interrupções durante as
transferências dos discos IDE (veja man hdparm) e/ou aumentando a
velocidade do seu barramento ISA para que a transferência IDE termine
mais cedo.
O modelo mais novo 3c509B tem 8kB integrado, e o buffer pode ser
separado em 4/4, 5/3 ou 6/2 para Rx/Tx. Esta montagem é mudada com o
utilitário da configuração DOS, e é armazenado no EEPROM. Isto deve
aliviar o problema acima com a 3c509 original.
Os usuários de 3c509B devem usar o utilitário DOS fornecido para
incapacitar o suporte _P_l_u_g _a_n_d _p_l_a_y, _e para montar o meio de saída
para o qual eles necessitam. O programa de controle Linux atualmente
_n_ã_o suporta a montagem do meio de Auto-detecção, para que você _t_e_n_h_a
que selecionar 10Base-T ou 10Base-2 ou AUI.
Com respeito as características de detecção de meios, Cameron disse:
``A auto-seleção é uma característica do programa de controle
comercial para a 3C509(B). AFAIK ninguém nunca reivindicou, o programa
de controle Linux tenta. Quando o programa de controle/net/3c509.c
reconhece o meu 3C509B na hora da inicialização, ele diz: eth0: 3c509
em 0x300 tag 1, 10baseT port, ... revelando que a placa está
configurada para 10BASE-T. Ela descobre que lendo a pequena EEPROM,
que em minha modesta opinião é a maneira certa de fazê-lo.''
Quanto a coisa de plug-and-play, Cameron acrescenta: ``Foi uma decisão
de marketing para ligar o PnP como numa montagem padrão de fábrica. Se
isto causou a você uma controvérsia, ou não, por favor, diga o que
sente quando enviar uma mensagem em sua placa de garantia. Quanto mais
informações eles tenham, melhores decisões podem ser tomadas. Também
verifique com seu fornecedor de placa-mãe para ver se você precisa de
uma atualização BIOS.''
Note que para desligar o PnP inteiramente, você deve fazer um 3C5X9CFG
/PNP:DISABLE e então prosseguir com restabelecimento para assegurar
que tenha efeito.
Algumas pessoas perguntam sobre as montagens da Estação de Trabalho
e ``Velocidade Mais Alta do Modem'' apresentados na configuração dos
utilitários DOS. Donald escreve: ``Esta são somente dicas para o
programa de controle, e o programa de controle Linux não usa estes
parâmetros: ele sempre otimiza para desempenho alto mais que latência
baixa (`Servidor'). Latência baixa foi extremamente importante para os
antigos; para reduzir a latência do programa de controle do MS-DOS
pois a 3c509 incapacita interrupções para algumas operações,
bloqueando as interrupções de porta serial. Assim há a necessidade de
montagem da velocidade de modem. O programa de controle Linux evita a
necessidade de incapacitar interrupções por longos períodos operando
somente em pacotes totais, por exemplo não iniciando a transmissão de
um pacote até que ele esteja completamente transferido para a placa.''
Note que a detecção de placa ISA usa um método diferente que a maioria
das placas. Basicamente, você pergunta às placas para responder
enviando dados para um ID_PORT (porta 0x100 para 0x1ff nos intervalos
de 0x10). Este método de detecção significa que uma placa particular
_s_e_m_p_r_e será detectada antes numa configuração 3c509 ISA múltipla. A
placa com o endereço Ethernet de hardware mais baixo _s_e_m_p_r_e terminará
sendo eth0. Isto não deveria incomodar ninguém, exceto aquelas pessoas
que queiram designar um endereço hardware de 6 bytes para uma
interface particular. Se você tiver placas 3c509 múltiplas, é melhor
acrescentar os comandos ether=0,0,ethN sem a porta específica i/o (por
exemplo, use i/o=zero) e permitir que o teste separe a placa que vem
primeiro. Usando um valor i/o diferente de zero assegurará que ela não
detecta todas as suas placas, por isso não faça isto.
Se isto realmente incomoda você, dê uma olhada no mais recente
programa de controle do Donald pois você vai poder usar um valor
0x3c509 nos não utilizados campos de endereço mem para ordenar a
detecção que sirva.
5566.. 33cc551155
Status -- _N_ã_o _S_u_p_o_r_t_a_d_o.
Esta oferta é bem recente do 3Com do ISA 100Mbps, codificada
``CorkScrew''. Donald está trabalhando no suporte para estas placas, e
provavelmente aparecerá num futuro próximo na sua página de programa
de controle WWW. O programa de controle será incorporado para dentro
do programa de controle 3c59x/3c90x, assim você deve esperar procurar
na página Vortex:
Vortex
5577.. 33cc552233
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Esta placa de barramento MCA usa o i82586, e Chris Beauregard
modificou o programa de controle ni52 para funcionar com estas placas.
O programa de controle para ela pode ser encontrado na árvore fonte do
kernel v2.1.
Mais detalhes podem ser encontrados na página MCA-Linux em
http://glycerine.cetmm.uni.edu/mca/.
5588.. 33cc552277
Status -- _N_ã_o _S_u_p_o_r_t_a_d_o.
Sim, uma outra placa MCA. Não, não há muito interesse nela. Melhores
chances com a 3c529 se você estiver emperrado com uma MCA.
5599.. 33cc552299
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Esta placa usa de fato o mesmo chipset que a 3c509. Donald na verdade
colocou ganchos para dentro do programa de controle 3c509 para
verificar as placas MCA depois de testar para as placas EISA, e antes
de testar para as placas ISA. Mas não evoluiu muito mais que isto.
Donald escreve:
``Eu não tenho acertos a uma máquina MCA (nem entendo completamente o
código de teste) por isso eu nunca escrevi as rotinas mca_placa de
rede_select_mode() ou mca_placa de rede_id(). Se você puder encontrar
uma maneira para conseguir o endereço da placa de rede I/O que designa
a hora da inicialização, você pode apenas colocar definitivamente no
lugar do teste comentado. Certifique-se de manter o código que lê o
IRQ, if_port, e o endereço Ethernet.''
Darrell Frappier (aa822@detroit.freenet.org) relata que você pode
conseguir o endereço i/o a partir da execução do disquete de
referência PS/2, e uma vez que você o ponha diretamente para dentro do
programa de controle, ele realmente funciona.
O código de teste MCA necessário provavelmente aparecerá no programa
de controle num kernel de desenvolvimento logo, agora que o suporte
MCA está no kernel.
Mais detalhes podem ser encontrados na página MCA-Linux em
http://glycerine.cetmm.uni.edu/mca/.
6600.. 33cc556622
Status -- _S_u_p_o_r_t_a_d_o.
Esta placa PCMCIA é a combinação de uma placa Ethernet 3c589B com um
modem. O modem aparece como um modem padrão para a extremidade do
usuário. A única dificuldade é conseguir os dois controladores Linux
separados para compartilhar uma interrupção. Há um par de novos
registradores e alguma interrupção de hardware compartilhando o
suporte. Você precisa usar um kernel v2.0 ou mais novo que tenha o
suporte para compartilhar interrupção.
Como uma nota à parte, a parte da placa do modem foi relatada não ser
bem documentada para a extremidade do usuário (o manual apenas diz:
`suporta o conjunto de comando AT') e pode não conectar tão bem quanto
outras marcas de modems. A recomendação é comprar uma 3c589B no lugar,
e então, conseguir uma placa de modem PCMCIA de uma companhia
especializada em modems.
Meus agradecimentos mais uma vez a Cameron por conseguir uma unidade
de amostra e a documentação enviada a David Hinds. Procure o suporte
na subversão do pacote PCMCIA do David.
Veja ``Suporte PCMCIA'' para maiores informações sobre chipsets
PCMCIA, capacitadores socket, etc..
6611.. 33cc557755
Status -- _N_ã_o _S_u_p_o_r_t_a_d_o.
Um programa de controle para esta placa PCMCIA está em desenvolvimento
e provavelmente estará incluída no pacote PCMCIA do David em poucos
meses.
6622.. 33cc557799
Status -- _S_u_p_o_r_t_a_d_o.
A versão EISA da 509. A versão atual da EISA usa o mesmo chip de 16
bits mais que uma interface de 32 bits, assim o aumento de desempenho
não é atordoante. Certifique-se que a placa esteja configurada para o
modo de endereçamento EISA. Leia a seção 3c509 acima para obter
informações sobre o programa de controle.
6633.. 33cc558899 // 33cc558899BB
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Muitas pessoas tem usado esta placa PCMCIA por algum tempo agora. Note
que o suporte para ela não está (no momento) incluído na árvore fonte
de padrão kernel. Você também precisará um chipset controlador PCMCIA
suportado. Há controladores disponíveis no site ftp de Donald:
cesdis.gsfc.nasa.gov:/pub/linux/pcmcia/README.3c589
cesdis.gsfc.nasa.gov:/pub/linux/pcmcia/3c589.c
cesdis.gsfc.nasa.gov:/pub/linux/pcmcia/dbether.c
Ou para aqueles que estão _c_o_n_e_c_t_a_d_o_s _n_a _I_n_t_e_r_n_e_t você pode tentar:
Don's PCMCIA Stuff
Você ainda vais precisar um capacitador socket PCMCIA também.
Veja ``Suporte PCMCIA'' para maiores informações sobre os chipsets
PCMCIA, capacitadores socket, etc..
O "B" no nome significa o mesmo aqui que no caso da 3c509.
6644.. 33cc559900 // 33cc559955
Status -- _S_u_p_o_r_t_a_d_o.
Estas placas``Vortex'' são para máquinas de barramento PCI, com o 590
sendo de 10Mbps e o 595 sendo que os de 3Com oferecem 100Mbs. Também
note que você executa o 595 como um 590 (por exemplo num modo 10Mbps).
O programa de controle está incluído na fonte kernel v2.0, mas ela
está sendo constantemente atualizada. Se você tem problemas com o
programa de controle no kernel v2.0, você pode obter um programa de
controle atualizado a partir da seguinte URL:
Vortex .
Note que existem duas placas 3c590 diferentes. Os modelos mais antigos
que tinham 32kB de memória na placa, e modelos mais atuais que somente
tem 8kB de memória. É provável que você não possa comprar uma nova
3c59x por muito tempo, pois ela está sendo substituída pela placa
3c90x. Se você comprar uma placa usada, tente conseguir uma versão
32kB. As placas 3c595 tem 64kB, pois você não pode se safar com
somente 8kB RAM a 100Mbps!
Agradecimentos a Cameron Spitzer e Terry Murphy de 3Com por enviar
placas e documentação ao Donald para que ele pudesse escrever o
programa de controle.
Donald configurou uma lista de correspondência para o suporte do
programa de controle Vortex. Para juntar-se a lista, tudo que tem a
fazer é:
echo subscribe | /bin/mail linux-vortex-request@cesdis.gsfc.nasa.gov.
6655.. 33cc559922 // 33cc559977
Status -- _S_u_p_o_r_t_a_d_o.
Estas são as versões EISA das séries 3c59x das placas. A 3c592/3c597
(aka Demon) deve funcionar com o programa de controle vortex discutido
acima.
6666.. 33cc990000 // 33cc990055 // 33cc990055BB
Status -- _S_u_p_o_r_t_a_d_o.
Estas placas (aka `Boomerang', aka EtherLink III XL) foram lançadas
para assumir o lugar das placas 3c590/3c595.
O suporte para a revisão do Cyclone `B' foi acrescentada apenas
recentemente. Para usar esta placa com kernels mais antigos que v2.0,
você deve obter o programa de controle atualizado 3c59x.c do site do
Donald em:
Vortex-Page .
Se estiver em dúvida com alguma coisa, então verifique a página WWW
acima. Donald configurou uma lista de correspondência para avisos de
suporte ao controlador Vortex, etc.. Para se juntar a lista, tudo que
tem a fazer é:
echo subscribe | /bin/mail linux-vortex-request@cesdis.gsfc.nasa.gov.
6677.. AAccccttoonn
6688.. AAccccttoonn MMPPXX
Status -- _S_u_p_o_r_t_a_d_o.
Não deixe o nome enganar você. Esta ainda deve ser uma placa NE2000
compatível, e deve funcionar com o programa de controle ne2000.
6699.. AAccccttoonn EENN11220033,, EENN11220077,, EEtthheerrDDuuoo--PPCCII
Status -- _S_u_p_o_r_t_a_d_o.
Esta é uma outra implementação do chip DEC 21040 PCI chip. A placa
EN1207 tem o 21140, e também tem um conector 10Base-2, o qual tem se
mostrado ser um incômodo para algumas pessoas em termos de seleção
daquele meio. Usar a placa com a meio 10Base-T e 100Base-T tem
funcionado para outras pessoas. Por isso como com todas as comprar,
você deve experimentar e certificar-se que pode devolvê-lo se não
funcionar.
Veja ``DEC 21040'' para maiores informações sobre estas placas, e a
atual situação do programa de controle.
7700.. PPllaaccaa ddee rreeddee ddee PPoorrttaa PPaarraalleellaa AAccccttoonn EENN22220099 ((EEtthheerrPPoocckkeett))
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Um programa de controle para estes adaptadores de portas paralelas
estão disponíveis, mas não são ainda parte da fonte kernel 2.0 ou 2.1.
Você tem que conseguir o programa de controle a partir de:
http://www.unix-ag.uni-siegen.de/~nils/accton_linux.html.
7711.. PPllaaccaa AAccccttoonn EENN22221122 PPCCMMCCIIAA
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
David Hinds tem trabalhado num programa de controle para esta placa, e
é melhor que você verifique o lançamento mais recente deste pacote
PCMCIA para ver qual é o estado atual.
7722.. AAlllliieedd TTeelleessyynn//TTeelleessiiss
7733.. AATT11550000
Status --_S_u_p_o_r_t_a_d_o.
Estas são uma série de placas Ethernet usando placas Ethernet de baixo
custo versão 79C960 da AMD LANCE. Estas são placas de barramento
mestre, e por isso uma das placas Ethernet ISA mais rápidas
disponíveis.
Seleção DMA e informação de numeração de chip pode ser encontrada em:
``AMD LANCE''.
Mais informações técnicas sobre AMD LANCE baseadas em placas Ethernet
podem ser encontradas em ``Notas sobre placas baseadas AMD''.
7744.. AATT11770000
Status -- _S_u_p_o_r_t_a_d_o.
Note que para acessar este programa de controle durante make config
você ainda tem que responder `S' quando lhe for perguntado: ``Comando
o desenvolvimento e/ou programa de controle/código incompletos?'' no
começo. Isto é simplesmente devido a falta de retorno na estabilidade
do programa de controle por ser uma placa relativamente rara. Isto
provavelmente será mudado para os kernels v2.1.
As séries de placas Ethernet Allied Telesis AT1700 são baseadas na
MB86965 Fujitsu. Este chip usa uma interface I/O programada, e um par
de buffers de transmissão de tamanho fixo. Isto permite a grupos
pequenos de pacotes de serem enviados back-to-back, com uma pausa
pequena enquanto estiver trocando os buffers.
Uma característica é a habilidade para guiar o cabo STP 150ohm (Par
Trançado Blindado) comumente instalado para Token Ring, além de para
UTP 10baseT 100ohm (par trançado não blindado). Uma versão de fibra
ótica da placa existe também (AT1700FT).
O chip Fujitsu usado no AT1700 tem uma falha no projeto: ele pode ser
completamente reconfigurado fazendo um ciclo de força da máquina.
Pressionando o botão de reconfigurar não reconfigura a interface do
barramento. Isto não seria tão mau, exceto que ele só pode ser
detectado com segurança quando tiver sido recentemente reconfigurado.
A solução é capacitar a máquina se o kernel tiver problema em detectar
a AT1700.
Algumas produções fogem da DMA se a AT1700 tiver um outro problema:
elas estão permanentemente ligadas ao canal 5 da DMA. Isto não está
documentado, não há chaves para incapacitar a característica, e
nenhum programa de controle ousa usar a capacidade da DMA devido a
problemas de compatibilidade. Nenhum dispositivo de programa de
controle será escrito usando a DMA pois a instalação de uma segunda
placa quebra ambas, e a única maneira de incapacitar a DMA é com uma
faca.
7755.. AATT22445500
Status -- _S_u_p_o_r_t_a_d_o.
Esta é a versão do PCI da AT1500, e ela não sofre de problemas que a
Boca 79c970 PCI sofre. A seleção DMA e as informações sobre a
numeração do chip podem ser encontradas em ``AMD LANCE''.
Mais informações técnicas sobre as placas Ethernet baseadas LANCE AMD
podem ser encontradas em ``Notas sobre placas baseadas AMD''.
7766.. AATT22554400FFXX
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Esta placa usa o chip i82557, e por isso pode/deve funcionar com o
programa de controle eepro 100. Se você tentar isto, por favor, envie
um relatório para que esta informação seja atualizada.
7777.. AAMMDD // DDiissppoossiittiivvooss ddee MMiiccrroo AAvvaannççaaddooss
Carl Ching da AMD foi muito gentil em fornecer uma descrição muito
detalhada de todos os produtos Ethernet AMD que ajudaram a pôr em
ordem esta seção.
7788.. AAMMDD LLAANNCCEE ((77999900,, 7799CC996600//996611//996611AA,, PPCCnneett--IISSAA))
Status -- _S_u_p_o_r_t_a_d_o.
Não há na realidade nenhuma placa Ethernet AMD. Você provavelmente
está lendo isto porque as únicas marcas que você conseguiu encontrar
em sua placa diziam AMD e o número acima. O 7990 é o chip original
`LANCE', mas a maioria das coisas (inclusive este documento) se
referem a todos estes chips similares como chips `LANCE'
(incorretamente, devo acrescentar).
Os números acima se referem aos chips da AMD que estão no coração de
muitas placas Ethernet. Por exemplo, a Allied Telesis AT1500 (veja
``AT1500'') e a NE1500/2100 (veja ``NE1500'') usam estes chips.
Os 7990/79c90 já foram substituídos há muito tempo pelas novas
versões. O 79C960 (a.k.a. PCnet-ISA) contém essencialmente o núcleo
79c90, junto com todos os outros suportes de hardware necessários, os
quais permitem uma solução com um único chip Ethernet. O 79c961
(PCnet-ISA+) é uma versão sem chaves Plug and Play da 960. O chip
final das séries ISA é a 79c961A (PCnet-ISA II), o qual acrescenta
capacidades duplex total. Todas as placas com um destes chips devem
funcionar com o programa de controle lance.c, com exceção de placas
muito antigas que usavam o 7990 original numa configuração de memória
compartilhada. Estas placas antigas podem estar remendadas pela falta
de chaves para um canal DMA.
Um problema comum que as pessoas têm é a mensagem: ``falha de
arbitragem do barramento mestre''. Ela é impressa quando o programa
de controle LANCE não consegue acessar o barramento depois de um
período de tempo razoável (50us). Isto geralmente indica que a
implementação da placa-mãe do barramento mestre DMA está quebrada, ou
algum outro dispositivo está arqueando o barramento, ou há um conflito
no canal DMA. Se sua configuração BIOS tem a opção GAT (para Tempo
de Acesso Garantido), então tente transformar aquela configuração para
ver se ajuda.
Note também que o programa de controle só olha os endereços: 0x300,
0x320, 0x340, 0x360 para uma placa válida, e qualquer endereço
fornecido por um argumento de inicialização ether= é silenciosamente
ignorado (isto será consertado) por isso certifique-se que sua placa
esteja configurada para um dos endereços I/O acima por enquanto. O
programa de controle ainda funcionará bem, mesmo que mais de 16MB de
memória sejam instalados, desde que a memória baixa `bounce-buffers' é
usada quando necessária (por exemplo, qualquer dado acima de 16MB é
copiado para dentro de buffer abaixo de 16MB antes de ser dado para a
placa para transmitir).
O canal DMA pode ser configurado com bits baixos do valor não usados
de outra forma dev->mem_start (a.k.a. PARAM_1) (veja ``PARAM_1''). Se
não configurado é testado pela capacitação de cada canal DMA livre por
vez e verificado se a inicialização for bem sucedida.
A placa J2405A HP é uma exceção: com esta placa é fácil ler os valores
do conjunto EEPROM para a IRQ, e DMA.
Veja ``Notas sobre placas baseadas AMD PCnet'' para maiores
informações sobre estes chips.
7799.. AAMMDD 7799CC996655 ((PPCCnneett--3322))
Status -- _S_u_p_o_r_t_a_d_o.
Este é o PCnet-32, uma versão de 32 bits do chip original da LANCE
para barramento-VL e chip de sistemas de barramento local. Enquanto
estes chips podem ser operados com o controlador padrão lance.c, uma
versão de 32 bits (lance32.c) está também disponível que não tem que
se preocupar com qualquer limitação de 16MB associadas com barramento
ISA.
8800.. AAMMDD 7799CC997700//997700AA ((PPCCnneett--PPCCII))
Status -- _S_u_p_o_r_t_a_d_o.
Este é o PCnet-PCI -- similar ao PCnet-32, mas projetado para os
sistemas baseados de barramento do PCI. Por favor, veja as informações
sobre o PCnet-32. Isto significa que você precisa montar um kernel com
suporte CI BIOS capacitado. O 970A acrescenta suporte de duplex total
junto com algumas outras características do projeto 970 original.
Note que a implementação da Boca de 79C970 falha nas máquinas rápidas
Pentium. Este é um problema de hardware, como ele afeta os usuários
do DOS também. Veja a seção da Boca para maiores detalhes.
8811.. AAMMDD 7799CC997711 ((PPCCnneett--FFAASSTT))
Status -- _S_u_p_o_r_t_a_d_o.
Este é o chip da ADM de 100Mbit para os sistemas PCI, o qual também
suporta a operação duplex total. Foi apresentado em Junho de 1996.
8822.. AAMMDD 7799CC997744 ((PPCCnneett--SSCCSSII))
Status -- _S_u_p_o_r_t_a_d_o.
Este é o PCnet-SCSI -- que é basicamente tratado como um 970 do
ponto de vista da Ethernet. Veja também as informações acima. Não
pergunte se a metade do chip do SCSI é suportado, isto é o _C_O_M_O _F_A_Z_E_R
_E_t_h_e_r_n_e_t, não o Como fazer SCSI.
8833.. CCoommuunniiccaaççõõeess AAnnsseell
8844.. AACC33220000 EEIISSAA
Status -- _S_e_m_i_-_S_u_p_o_r_t_a_d_o.
Note que para acessar este programa de controle durante make config
você ainda tem que responder `S' quando lhe for perguntado: ``Comando
o desenvolvimento e/ou programa de controle/código incompletos?'' no
início. Isto se deve simplesmente às falta de retorno da estabilidade
do programa de controle por ser uma placa relativamente rara.
Este programa de controle está incluído no kernel atual como um
programa de controle de teste alpha. Está baseado no chip NS8390 comum
usado nas placas ne2000 e wd80x3. Por favor veja ``Controlador Alpha''
neste documento para informações importantes relativas ao programa de
controle alpha.
Se você usá-lo, comunique-nos dizendo como as coisas funcionaram, pois
o retorno tem sido baixo, embora o programa de controle já esteja no
kernel desde v1.1.25.
Se você pretende usar este programa de controle com um módulo
carregável você provavelmente deve ver ``Usando os Programa de
controle da Ethernet como Módulos'' para informações específicas de
módulo.
8855.. AApprriiccoott
8866.. NNaa PPllaaccaa EEtthheerrnneett AApprriiccoott XXeenn--IIII
Status -- _S_u_p_o_r_t_a_d_o.
Esta placa Ethernet usa um chip bus-master i82596. Ele só pode estar
no endereço i/o em 0x300. O autor deste programa de controle é Mark
Evans. Examinado a fonte do programa de controle, parece que a IRQ
está conectado no 10.
Versões mais antigas do programa de controle tinham uma tendência para
achar que qualquer coisa morando em 0x300 era um NIC apricot. Desde
então o endereço hardware é verificado para evitar estas falsa
detecções.
8877.. AArrccnneett
Status -- _S_u_p_o_r_t_a_d_o.
Por um preço muito baixo e um melhor desempenho da Ethernet, é
provável que a maioria das placas estarão distribuindo o seu hardware
Arcnet gratuitamente, resultando em muitos sistemas pessoais com
Arcnet.
Uma vantagem é que todas as placas tem interfaces idênticas, assim um
programa de controle funcionará para todo mundo.
O programa de controle arcnet de Avery Pennarun tem sido a fonte do
kernel padrão desde 1.1.80. O programa de controle arcnet usa `arc0'
como seu nome ao invés do habitual `eth0' para dispositivos Ethernet.
Relatórios de defeitos e histórias de sucesso podem ser enviadas para:
apenwarr@foxnet.net.
Há arquivos de informações contidas no kernel padrão para configurar
as chaves e sugestões gerais.
Supostamente o programa de controle também funciona com as placas
ARCnet de 100Mbs também!
8888.. AATT&&TT
Note que AT&T's StarLAN é uma tecnologia órfã, como o SynOptics
LattisNet, e não pode ser usada num ambiente 10Base-T padrão, sem um
hub que fale ambos.
8899.. AATT&&TT TT77223311 ((LLaannPPAACCEERR++))
Status -- _N_ã_o _S_u_p_o_r_t_a_d_o.
Estas placas StarLAN usam uma interface similar ao chip i82586. Em um
ponto, Matthijs Melchior (matthijs.n.melchior@att.com) estava
brincando com o programa de controle 3c507, e quase tinha alguma coisa
usável funcionando. Não soube mais nada desde então.
9900.. AATT--LLaann--TTeecc // RReeaallTTeekk
9911.. AATT--LLaann--TTeecc // PPllaaccaa ddee rreeddee RReeaallTTeekk PPoocckkeett
Status -- _S_u_p_o_r_t_a_d_o.
Esta é uma placa de rede de bolso OEM, de baixo custo sendo vendida
por AT-Lan-Tec, e (provavelmente) por um número de outros
fornecedores. Um programa de controle para ela está incluído no kernel
padrão. Note que há informação substancial contida no arquivo de fonte
do programa de controle `atp.c'.
Note que o nome do dispositivo que você passa para ifconfig não _é eth0
mas atp0 para este dispositivo.
9922.. RReeaallTTeekk 88000099