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