Linux Ethernet-HOWTO
 by Paul Gortmaker
 v2.7, 5 maggio 1999

 Questo � Ethernet Howto, una raccolta di informazioni su quali dispos�
 itivi Ethernet possono essere usati con Linux e su come configurarli.
 Si noti che questo Howto si concentra sull'aspetto hardware e sui
 driver a basso livello delle schede Ethernet e non tratta l'aspetto
 software di cose come ifconfig e route.  Si veda il Network Howto per
 tali informazioni. Traduzione a cura di Lorenza Romano
 ([email protected]) e Giovanni Bortolozzo ([email protected]).

 1.  Introduzione


 Ethernet-Howto tratta delle schede che si dovrebbero e non si
 dovrebbero acquistare; di come configurarle, di come usarne pi� di una
 e di altri problemi e quesiti frequenti. Comprende informazioni
 dettagliate sull'attuale livello di supporto di tutte le pi� comuni
 schede Ethernet disponibili.

 Non comprende l'aspetto software delle cose, che � trattato nel NET-3
 Howto.  Si noti anche che quesiti generali, non specifici su Linux,
 riguardanti Ethernet, non trovano (o almeno non dovrebbero trovare)
 risposta qui. Per quesiti di quel tipo, si vedano le eccellenti
 informazioni nelle FAQ di comp.dcom.lans.ethernet, che possono essere
 scaricate via FTP da rtfm.mit.edu come tutte le altre FAQ dei
 newsgroup.

 Questa revisione tratta i kernel stabili fino alla versione 2.2.7
 compresa.

 Ethernet-Howto � di:

      Paul Gortmaker, [email protected]


 Fonte principale di informazioni per la versione iniziale di Ethernet-
 Howto, disponibile esclusivamente in formato ASCII, � stato:

      Donald J. Becker, [email protected]


 che dovremmo ringraziare per aver scritto la grande maggioranza dei
 driver attualmente disponibili per Linux  per le schede Ethernet. �
 anche l'autore dell'originario NFS server. Grazie Donald!

 Questo documento � Copyright (c) 1993-1999 di Paul Gortmaker.  Si
 vedano la liberatoria e le informazioni sulla copia alla fine di
 questo documento (``copyright'') per informazioni circa la
 ridistribuzione e le solite questioni legali ``non siamo responsabili
 per ci� che riuscirai a rompere...''.


 1.1.  Nuove versioni di questo documento


 Nuove versioni di questo documento possono essere reperite
 all'indirizzo:

 Ethernet-HOWTO <http://metalab.unc.edu/mdw/HOWTO/Ethernet-HOWTO.html>

 o per chi desidera usare FTP e/o procurarsi formati non HTML:

 Sunsite HOWTO Archive <ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/>

 Questo � il sito ufficiale, ma il documento pu� anche essere trovato
 nei diversi mirror WWW/ftp. Gli aggiornamenti vengono fatti appena
 nuove informazioni e/o driver diventano disponibili. Se la copia che
 si sta leggendo � vecchia di pi� di 6 mesi, si dovrebbe controllare
 per vedere se � disponibile una copia aggiornata.

 Questo documento � disponibile in diversi formati (postscript, dvi,
 ASCII, HTML, ecc.).  Personalmente consiglio di leggerlo in HTML
 (attraverso un browser WWW) o in formato Postscript/dvi. Entrambi
 contengono riferimenti incrociati che non sono inclusi nel formato
 ASCII.



 1.2.  Come usare Ethernet-Howto

 Poich� questa guida sta diventando sempre pi� grande, probabilmente
 non si vuole sprecare il resto del pomeriggio leggendola per intero. E
 la buona notizia � che non la si deve leggere tutta. Le versioni HTML
 e Postscript/dvi hanno un indice che aiuter� senz'altro a trovare ci�
 di cui si ha bisogno molto pi� velocemente.

 Pu� essere che si stia leggendo questo documento perch� non si riesce
 a far funzionare le cose e non si sa cosa controllare o verificare. La
 sezione ``AIUTO -- Non funziona!'' � rivolta ai nuovi utenti di Linux
 e metter� nella direzione giusta.

 Tipicamente gli stessi problemi e quesiti sono posti pi� e pi� volte
 da diverse persone. Pu� essere che il proprio problema specifico sia
 una delle Frequently Asked Questions (domande frequenti) e trova
 risposta nella sezione FAQ di questo documento (``Sezione FAQ'').
 Tutti dovrebbero dare un'occhiata a questa sezione prima di inviare
 una richiesta di aiuto.

 Se non si possiede una scheda Ethernet, allora si dovr� in primo luogo
 scegliere una scheda (``Che scheda si dovrebbe acquistare...'').

 Se si possiede gi� una scheda Ethernet, ma non si � sicuri di poterla
 usare con Linux, allora si dovr� leggere la sezione che contiene
 informazioni specifiche su ogni produttore e le relative schede
 (``Informazioni specifiche su...'').

 Se si � interessati ad alcuni degli aspetti tecnici dei driver dei
 dispositivi per Linux, allora si pu� dare una scorsa alla sezione
 contenente questo tipo di informazioni (``Informazioni tecniche'').


 1.3.  AIUTO -- Non funziona!


 Okay, niente panico. Questa sezione vi condurr� per mano nel processo
 che consente di far funzionare le cose anche se non si hanno
 precedenti conoscenze di Linux o sull'hardware Ethernet.

 La prima cosa da fare � scoprire il modello della propria scheda
 cosicch� si possa determinare se Linux ha un driver per quella
 particolare scheda. Generalmente schede diverse sono controllate in
 modo diverso dal computer ospite e il driver per Linux (se ne esiste
 uno) contiene queste informazioni per il controllo in un formato che
 permette a Linux di utilizzare la scheda.  Se non si ha un manuale o
 qualcosa del genere che dia informazioni sul modello della scheda,
 allora si pu� provare la sezione di aiuto sulle schede misteriose (si
 veda la sezione ``Identificare una scheda sconosciuta'').

 Ora che si sa che tipo di scheda si possiede, si leggano da cima a
 fondo i dettagli a essa relativi nella sezione sulle specifiche delle
 schede (``Informazioni specifiche su...'') che elenca in ordine
 alfabetico i produttori di schede, i numeri identificativi dei modelli
 e se c'� o meno un driver per Linux.  Se � catalogata come ``Non
 supportata'' ci si pu� pressoch� arrendere qui. Se non si riesce a
 trovare la propria scheda nell'elenco, si controlli per vedere se il
 suo manuale la cataloga come ``compatibile'' con un altro tipo di
 scheda conosciuto. Ci sono per esempio centinaia se non migliaia di
 schede diverse costruite per essere compatibili con il progetto
 originario NE2000 della Novell.

 Assumendo che si sia scoperto che esiste un driver per Linux per la
 propria scheda, � ora necessario trovarlo e farne uso.  Solo perch�
 Linux ha un driver per la propria scheda ci� non significa che esso
 sia compreso in ogni kernel (il kernel � il nucleo del sistema
 operativo, la prima cosa caricata all'avvio e contiene, tra le altre
 cose, i driver per le diverse parti hardware).  A seconda di chi ha
 prodotto la particolare distribuzione di Linux che si sta usando ci
 possono essere solo alcuni kernel precompilati e un grosso insieme di
 driver sotto forma di piccoli moduli separati, oppure un sacco di
 kernel, che coprono un enorme insieme di combinazioni di driver
 incorporati.

 Molte distribuzioni di Linux adesso contengono un gruppo di piccoli
 moduli, i diversi driver. I moduli necessari tipicamente vengono
 caricati in un secondo tempo nel processo di avvio o su richiesta non
 appena serve un driver per accedere ad un particolare dispositivo.
 Occorrer� inserire questo modulo nel kernel dopo che � stato avviato.
 Si vedano le informazioni fornite con la propria distribuzione
 sull'installazione e l'uso dei moduli, oltre alla sezione sui moduli
 in questo documento (``Usare i driver Ethernet come moduli'').

 Se non si � trovato n� un kernel precompilato con il proprio driver,
 n� il driver in forma modulare, � probabile che si possieda una scheda
 rara e si dovr� compilare il proprio kernel includendo il driver. Una
 volta installato Linux, la compilazione di un kernel su misura non �
 affatto difficile. Essenzialmente si risponde s� o no a cosa si vuole
 che il kernel contenga e poi gli si dice di compilarlo. Esiste un
 Kernel-Howto che aiuter� a far questo.

 A questo punto si dovrebbe essere riusciti in qualche modo ad avviare
 un kernel con il proprio driver incorporato o a caricare il driver
 come modulo. Poich� circa la met� dei problemi che ha la gente �
 dovuta al non avere caricato il driver n� in un modo n� nell'altro,
 ora si potrebbe scoprire che le cose funzionano.

 Se non funziona ancora allora � necessario verificare che il kernel
 stia effettivamente rilevando la scheda. Per fare questo, dopo che il
 sistema si � avviato e sono stati caricati tutti i moduli, fatto il
 login, digitare dmesg | more.  Questo permetter� di rivedere i
 messaggi che il kernel ha fatto scorrere sullo schermo durante il
 processo di avvio. Se la scheda � stata rilevata si dovrebbe vedere da
 qualche parte in quell'elenco, un messaggio del driver della propria
 scheda che inizia con eth0 e cita il nome del driver e i parametri
 hardware per i quali � stata configurata (configurazione degli
 interrupt, indirizzo delle porte di input/output, ecc.).  Nota: Linux
 all'avvio elenca tutte le schede PCI installate nel sistema, senza
 badare ai driver disponibili, non si scambi questo per la rilevazione
 dei driver che avviene pi� tardi.

 Se non si vede un messaggio di identificazione del driver di questo
 tipo, allora il driver non ha rilevato la propria scheda e questo � il
 motivo per il quale le cose non funzionano. Si vedano le FAQ
 (``Sezione FAQ'') per il da farsi se la propria scheda non viene
 rilevata. Nel caso si possieda una scheda NE2000 compatibile, nella
 sezione FAQ vi sono anche alcuni suggerimenti specifici per fare in
 modo che la scheda venga rilevata.
 Se la scheda viene rilevata ma il messaggio di rilevamento riporta un
 errore di qualche tipo, come un conflitto di risorsa, probabilmente il
 driver non sar� inizializzato correttamente e la scheda continuer� a
 non essere utilizzabile. Anche i pi� comuni messaggi di errore di
 questo tipo sono elencati nella sezione FAQ insieme ad una soluzione.

 Se il messaggio di rilevamento sembra corretto, confrontare bene le
 risorse della scheda riportate dal driver con quelle per le quali la
 scheda � fisicamente configurata (attraverso dei piccoli ponticelli di
 colore nero sulla scheda o attraverso delle utilit� software fornite
 dal produttore). Queste devono corrispondere esattamente.  Per esempio
 se la scheda � configurata per IRQ 15 e il driver riporta nei messaggi
 di avvio IRQ 10, le cose non funzioneranno. La sezione FAQ tratta i
 casi pi� comuni di driver che non rilevano correttamente le
 informazioni di configurazione delle diverse schede.

 A questo punto si � riusciti a far s� che la propria scheda sia
 rilevata con tutti i parametri corretti e, se tutto va bene, le cose
 funzionano. Altrimenti si ha o un errore di configurazione software o
 un errore di configurazione hardware. Un errore di configurazione
 software � il non configurare correttamente gli indirizzi di rete
 usando i comandi ifconfig e route e dettagli su come fare queste cose
 sono esaurientemente descritti nel Network HowTo e nella ``Network
 Administrator Guide''. Probabilmente entrambi si trovano nel CD-ROM
 che si � usato per l'installazione.

 Un errore di configurazione hardware si ha quando un qualche conflitto
 di risorsa o errore di configurazione (che il driver non ha rilevato
 in fase di avvio) impedisce alla scheda di funzionare correttamente.
 Ci� pu� essere osservato in parecchie situazioni diverse. (1) Si ha un
 messaggio di errore quando ifconfig tenta di aprire il dispositivo per
 usarlo, del tipo ``SIOCSFFLAGS: Try again''. (2) Il driver riporta
 messaggi d'errore su eth0 (li si pu� vedere usando dmesg | more) o
 strane incongruenze ogniqualvolta prova a mandare o ricevere dati. (3)
 Digitando cat /proc/net/dev appaiono numeri diversi da zero in una
 delle colonne errs, drop, fifo, frame o carrier corrispondenti a eth0.
 (4) Digitando cat /proc/interrupts appare un numero di interrupt nullo
 per la scheda.  Anche la maggior parte dei tipici errori di
 configurazione hardware sono discussi nella sezione FAQ.

 Bene, se si � arrivati a questo punto e le cose non funzionano ancora,
 si legga la sezione FAQ di questo documento, si legga la sezione sulle
 specifiche dei produttori che descrive la propria scheda, e se ancora
 non funziona allora si dovrebbe riccorrere all'invio di una richiesta
 di aiuto ad un opportuno newsgroup. Se si invia la richiesta, si
 descrivano dettagliatamente tutte le informazioni del caso tipo la
 marca della scheda, la versione del kernel, i messaggi del driver
 all'avvio, l'output di cat /proc/net/dev, una chiara descrizione del
 problema e naturalmente cosa si � gi� provato a fare per far
 funzionare le cose.

 Sorprenderebbe sapere quante persone inviano cose inutili del tipo
 ``Pu� aiutarmi qualcuno? La mia scheda Ethernet non funziona'' e
 nient'altro.  I lettori dei newsgroup tendono a ignorare queste
 richieste stupide, mentre una descrizione dettagliata del problema pu�
 consentire a un ``Linux-guru'' di individuare immediatamente il
 problema.




 2.  Che scheda si dovrebbe acquistare per Linux?


 La risposta a questa domanda dipende molto da cosa si intende
 esattamente fare con la propria connessione di rete e quanto traffico
 dovr� sostenere.

 Se si prevede un singolo utente che occasionalmente faccia una
 sessione FTP o una connessione WWW, allora probabilmente anche una
 vecchia scheda ISA a 8 bit far� al proprio caso.

 Se si intende installare un server e si vuole che l'overhead della CPU
 per la trasmissione e ricezione dei dati sia mantenuto al minimo,
 probabilmente si deve considerare una delle schede PCI che usano un
 chip con capacit� di bus-mastering, per esempio il chip tulip (21xxx)
 della DEC o il chip Pcnet-PCI della AMD.

 Se si � in una situazione intermedia tra le due citate, una qualsiasi
 delle schede a basso costo PCI o ISA a 16 bit con driver stabili andr�
 bene.


 2.1.  E quali sono i driver stabili?


 Per schede ISA a 16 bit, i seguenti driver sono piuttosto maturi e non
 si dovrebbero avere problemi se si acquista una scheda che li
 utilizza:

 SMC-Ultra/EtherEZ, SMC-Elite (WD80x3), 3c509, Lance, NE2000.

 Ci� non significa che tutti gli altri driver non siano stabili. Si d�
 il caso che quelli sopra siano i pi� vecchi e i pi� utilizzati fra
 tutti i driver per Linux e questo li rende l'alternativa pi� sicura.

 Si noti che alcune schede madri economiche possono avere problemi con
 il bus-mastering fatto dalle schede Lance ISA e che alcuni cloni
 NE2000 possono avere problemi a essere rilevati all'avvio.

 I driver PCI per Linux pi� comunemente usati sono probabilmente quelli
 per le Vortex/Boomerang (3c59x/3c9xx) della 3Com, il tulip (21xxx)
 della DEC e la EtherExpressPro 100 dell'Intel.  Anche le diverse
 schede clone della NE2000 PCI sono estremamente comuni, ma l'acquisto
 di un clone di questa scheda non � raccomandato a meno che spendere il
 meno possibile non sia pi� importante che avere una scheda moderna
 concepita per elevate prestazioni.



 2.2.  Schede a 8 bit e schede a 16 bit a confronto

 Probabilmente non � pi� possibile acquistare una scheda ISA a 8 bit
 nuova, ma per i prossimi anni ne salterranno fuori molte, e a prezzi
 molti bassi, ai raduni in cui avvengono scambi di pezzi per computer.
 Questo le render� popolari per i sistemi ``Ethernet casalinghi''.
 Quanto sopra � valido adesso anche per le schede ISA a 16 bit visto
 che ora sono le schede PCI a essere molto comuni.

 Alcune schede a 8 bit che forniscono adeguate prestazioni per un uso
 dal leggero al medio sono la wd8003, la 3c503 e la ne1000.  La 3c501
 fornisce prestazioni scadenti; queste povere reliquie dei tempi XT,
 vecchie di 12 anni, dovrebbero essere evitate (si mandino ad Alan, le
 colleziona...).

 Il canale dati a 8 bit non nuoce cos� tanto alle prestazioni: ci si
 pu� aspettare di scaricare via ftp da un host veloce da 500 a 800kB/s
 con una scheda a 8 bit wd8003 (su un bus ISA veloce).  Se la maggior
 parte del proprio traffico di rete � verso siti remoti allora il collo
 di bottiglia nel percorso sar� altrove e la sola differenza in
 velocit� di cui ci si accorger� � durante l'attivit� di rete nella
 propria sottorete.
 2.3.  Schede Ethernet (VLB/EISA/PCI) a 32 bit


 Si noti che una rete a 10Mbps tipicamente non giustifica la richiesta
 di una interfaccia a 32 bit.  Si veda ``I/O programmato vs. ...'' sul
 perch� avere una scheda Ethernet a 10Mbps su un bus ISA a 8 MHz
 realmente non � un collo di bottiglia. Anche se avere la scheda
 Ethernet su un bus veloce non significher� necessariamente
 trasferimenti pi� veloci, ci� di solito comporter� una riduzione del
 carico della CPU e questo � un vantaggio per sistemi multi utente.

 Naturalmente per reti a 100Mbps, che sono attualmente una
 consuetudine, l'interfaccia a 32 bit � una cosa di cui non si pu� fare
 a meno per far uso dell'intera banda.

 La AMD offre i chip a 32 bit PCnet-VLB e PCnet-PCI.  Si veda ``AMD
 PCnet-32'' per informazioni sulle versioni a 32 bit del chip LANCE /
 PCnet-ISA.

 Il chip 21xxx PCI ``tulip'' della DEC � un'altra alternativa per i pi�
 esigenti (si veda ``DEC 21040'').  Molti produttori realizzano schede
 che usano questo chip e il prezzo di queste schede senza nome � di
 solito abbastanza conveniente.

 Un'altra possibilit� sono le schede PCI `Vortex' e `Boomerang' della
 3Com e il prezzo � abbastanza conveniente se si riesce a procurarsene
 una con un contratto di valutazione, finch� dura (si veda
 ``3c590/3c595'').

 Anche le schede PCI EtherExpress Pro 10/100 della Intel si dice
 funzionino bene con Linux (si veda ``EtherExpress'')

 Parecchi produttori di cloni hanno iniziato a fare NE2000 PCI basate
 su chip RealTek o Winbond. Anche queste schede sono supportate dal
 driver per Linux ne2000 per i kernel versione v2.0.31 e pi� recenti.
 Comunque si trae profitto solo dalla interfaccia bus pi� veloce visto
 che la scheda usa ancora l'antichissima interfaccia driver ne2000.
 Dalla versione v2.0.34 (e superiori) � disponibile anche un driver
 separato specifico per queste schede PCI ne2k-pci.c che � pi�
 efficiente del driver ISA ne.c.


 2.4.  Schede e driver a 100Mbps disponibili


 La lista dell'hardware a 100Mbps attualmente supportato � la seguente:
 schede con chip DEC 21140; schede 3c595/3c90x Vortex; le
 EtherExpressPro10/100B; le PCnet-FAST; le SMC 83c170 (epic100) e le HP
 100VG ANY-LAN.

 Per ciascun tipo si dia un'occhiata alle informazioni specifiche sui
 produttori presenti in questo documento. Pu� essere necessario dare
 un'occhiata anche a uno di questi:




 Linux and 100Mbs Ethernet
 <http://cesdis.gsfc.nasa.gov/linux/misc/100mbs.html>

 Donald's 100VG Page
 <http://cesdis.gsfc.nasa.gov/linux/drivers/100vg.html>

 Dan Kegel's Fast Ethernet Page <http://alumni.caltech.edu/~dank/fe/>


 2.5.  100VG e 100BaseT a confronto


 100BaseT � molto pi� importante di 100VG e il seguente messaggio
 promazionale di Donald tratto da una delle sue news informative pi�
 vecchie inviate su comp.os.linux riassume abbastanza bene la
 situazione: �Per coloro che non ne sono al corrente, esistono due
 standard Ethernet a 100Mbs in competizione, 100VG (conosciuto anche
 come 100baseVG e 100VG-AnyLAN) e 100baseT (con tipi di cavo 100baseTx,
 100baseT4 e 100baseFx).  Lo standard 100VG � entrato per primo sul
 mercato e penso sia stato strutturato meglio rispetto al 100baseTx.
 Facevo il tifo affinch� vincesse ma certamente non vincer�. HP e altri
 hanno fatto parecchie scelte sbagliate:

 1) Rinviando lo standard cos� da poter favorire IBM e supportare i
 frame token ring. Ci� sembr� una buona idea all'epoca visto che
 avrebbe consentito alle imprese che usavano token ring di aggiornare
 senza che i loro manager dovessero ammmettere di aver fatto un errore
 molto costoso commissionando la tecnologia sbagliata. Ma non ci si
 guadagn� nulla visto che i due tipi di frame non potevano coesistere
 su una rete, il token ring � un pantano di complessit� e comunque IBM
 pass� a 100baseT.

 2) Producendo esclusivamente schede ISA e EISA (un modello PCI � stato
 annunciato solo recentemente). Il bus ISA � troppo lento per 100Mbs ed
 esistono relativamente poche macchine EISA. All'epoca VLB era comune,
 veloce e conveniente e PCI una alternativa fattibile. Ma il buon senso
 ``tradizionalista'' riteneva che i server si sarebbero fermati ai pi�
 costosi bus EISA.

 3) Non inviandomi un databook. S� questa mossa � stata la vera ragione
 del fallimento di 100VG :-). Ho richiesto ovunque informazioni di
 programmazione e tutto ci� che ho potuto ottenere � stata una brochure
 a colori dalla AT&T, di qualche pagina, su carta patinata, che
 descriveva quanto meraviglioso fosse il chipset Regatta.�



 2.6.  Tipi di cavo che la propria scheda dovrebbe supportare

 Se si sta allestendo una piccola rete ``personale'', si dovr�
 probabilmente usare thinnet ovvero cavi Ethernet sottili. Cio� la
 versione con connettori standard BNC.  La thinnet o cablaggio Ethernet
 sottile (cavo coassiale RG-58) con connettori BNC (di metallo, da
 spingere e girare per chiudere) � chiamata tecnicamente 10Base2.

 Stanno diventando comuni anche moltissime schede Ethernet in una
 versione ``mista'' (combo) per soli $10-$20 in pi�. Queste schede
 hanno incorporato sia il transceiver per il doppino intrecciato
 (twisted pair) che per thinnet, consentendo di cambiare idea in
 seguito.

 Il cavo a doppino intrecciato e connettori RJ-45 (giant phone jack --
 connettore telefonico gigante) � chiamato tecnicamente 10BaseT. Lo si
 pu� sentir chiamare anche UTP (Unshielded Twisted Pair -- doppino
 intrecciato non schermato).

 La pi� datata thick (spessa) Ethernet (cavo coassiale da 10mm), che si
 trova solo nelle installazioni pi� vecchie, � chiamata 10Base5. La
 spina a 15 pin, a forma di lettera D, che si trova su alcune schede
 Ethernet (il connettore AUI) � usato per connettere transceiver
 esterni e thick Ethernet.

 Installazioni aziendali estese useranno probabilmente 10BaseT
 piuttosto che 10Base2. 10Base2 non offre alcuna possibilit� di
 aggiornamento a una 100Base-qualsiasi.
 Si veda ``Cavi, coassiali,...'' per altre informazioni riguardanti i
 diversi tipi di cavi Ethernet.



 3.  Domande frequenti

 Ecco alcuni dei quesiti posti pi� frequentemente a proposito dell'uso
 di Linux con una connessione Ethernet. Alcuni dei quesiti pi�
 specifici sono classificati in ``base al costruttore''.  Pu� essere
 che il quesito per il quale si ha bisogno di una risposta sia gi�
 stato posto da qualcun altro (e abbia trovato risposta!), perci� anche
 se non si trova la risposta qui, probabilmente si pu� trovare ci� che
 di cui si ha bisogno in un archivio di news come Dejanews
 <http://www.dejanews.com>.


 3.1.  Driver alpha -- come procurarseli e come usarli

 Ho sentito che � disponibile un driver aggiornato oppure un driver
 preliminare o alpha (sperimentale) per la mia scheda. Dove posso
 procurarmelo?

 Il ``pi� nuovo dei nuovi'' driver pu� essere trovato sul sito FTP di
 Donald: cesdis.gsfc.nasa.gov nell'area /pub/linux/. Qui le cose
 cambiano abbastanza frequentemente perci� si cerchi bene. In
 alternativa, per localizzare il driver che si sta cercando, pu� essere
 pi� facile usare un browser WWW all'indirizzo:

 Don's   Linux Home Page <http://cesdis.gsfc.nasa.gov/linux/>

 (ci si guardi dai browser WWW che fanno il ``munge'' (NdT munge:
 trasformare in modo imperfetto le informazioni [dal Jargon Lexicon])
 del sorgente sostituendo i TAB con spazi e cos� via -- se si � incerti
 usare ftp o almeno un URL FTP per scaricare).

 Ora, se il driver � realmente un alpha o pre-alpha, lo si tratti come
 tale. In altre parole, non si reclami perch� non si capisce cosa
 farne. Se non si riesce a capire come installarlo allora probabilmente
 non lo si dovrebbe provare. Anche se mette fuori uso la propria
 macchina, non si reclami. Si mandi invece un rapporto ben documentato
 del bug o, ancora meglio, una patch!

 Si noti che alcuni dei driver sperimentali/alpha ``utilizzabili'' sono
 stati inclusi nell'albero dei sorgenti del kernel standard.  Una delle
 prime cose che verranno chieste quando si esegue make config �
 ``Prompt for development and/or incomplete code/drivers'' (proposta
 per il codice o driver in fase di sviluppo o incompleti).  Si dovr�
 rispondere ``Y'' (s�) per richiedere l'inclusione di un qualche driver
 alpha/sperimentale.


 3.2.  Come usare pi� di una scheda Ethernet per macchina


 Cosa � necessario fare affinch� Linux possa utilizzare due schede
 Ethernet?

 La risposta a questo quesito dipende se si sta/stanno usando il/i
 driver come modulo caricabile o direttamente compilato nel kernel.
 Adesso moltissime distribuzioni di Linux usano driver modulari. Ci�
 evita di dover distribuire un mucchio di kernel ciascuno contenente un
 insieme diverso di driver.  Si usa invece un singolo kernel di base e
 i driver necessari per un particolare sistema utente vengono caricati
 una volta che l'avvio del sistema � arrivato al punto tale da poter
 accedere ai file dei moduli dei driver (memorizzati di solito in
 /lib/modules/).

 Con il driver come modulo: Nel caso di driver PCI, in genere il modulo
 rileva automaticamente tutte le schede installate di quello specifico
 modello. Comunque il rilevamento di una scheda non � una operazione
 sicura per schede ISA, perci� di solito � necessario fornire
 l'indirizzo base di I/O della scheda affinch� il modulo sappia dove
 guardare.  Questa informazione � memorizzata nel file
 /etc/conf.modules.

 Come esempio si consideri un utente che ha due schede ISA NE2000, una
 a 0x300 ed una a 0x240 e le righe da mettere nel file
 /etc/conf.modules:


         alias eth0 ne
         alias eth1 ne
         options ne io=0x240,0x300



 Come agisce: se l'amministratore (o il kernel) fa un modprobe eth0
 oppure un modprobe eth1 allora dovrebbe essere caricato il driver ne.o
 sia per eth0 che per eth1. Inoltre quando � caricato il modulo ne.o,
 dovrebbe esserlo con le opzioni io=0x240,0x300 cosicch� il driver sa
 dove cercare le schede. Si noti che 0x � importante, cose del tipo
 300h, comunemente usate nel mondo DOS, non funzionano. Cambiando
 l'ordine di 0x240 e 0x300 si cambier� quale scheda fisica finir� in
 eth0 e quale in eth1.

 Per gestire pi� schede, molti driver modulari ISA possono accettare
 diversi valori di I/O separati da virgole, come in questo esempio.
 Comunque, alcuni driver (pi� vecchi?), come il modulo 3c501.o,
 attualmente sono in grado di gestire solo una scheda per modulo
 caricato.  In questo caso si pu� caricare il modulo due volte per far
 s� che entrambe le schede siano rilevate.  Il file /etc/conf.modules
 dovrebbe presentarsi cos�:


         alias eth0 3c501
         alias eth1 3c501
         options eth0 -o 3c501-0 io=0x280 irq=5
         options eth1 -o 3c501-1 io=0x300 irq=7



 In questo esempio l'opzione -o � stata usata per dare a ogni istanza
 del modulo un nome univoco, poich� non � possibile caricare due moduli
 con lo stesso nome.  � anche usata l'opzione irq= per specificare la
 configurazione IRQ hardware della scheda (questo metodo pu� essere
 usato anche con moduli che accettano valori di I/O separati da
 virgole, ma � meno efficiente poich� il modulo finisce per essere
 caricato due volte anche se non sarebbe realmente necessario).

 Come esempio finale, si consideri un utente con una scheda 3c503 a
 0x350 e una SMC Elite16 (wd8013) a 0x280.  Avranno:


         alias eth0 wd
         alias eth1 3c503
         options wd io=0x280
         options 3c503 io=0x350




 Per le schede PCI, tipicamente sono necessarie solamente le righe
 alias per correlare le interfacce ethN con l'appropriato nome del
 driver, poich� l'I/O base di una scheda PCI pu� essere rilevato in
 modo sicuro.

 I moduli disponibili sono tipicamente memorizzati in
 /lib/modules/`uname -r`/net dove il comando uname -r fornisce la
 versione del kernel (es. 2.0.34).  Si pu� guardare l� per vedere quale
 corrisponde alla propria scheda.  Una volta che si hanno le
 impostazioni corrette nel proprio file conf.modules, si pu� collaudare
 il tutto con:


         modprobe ethN
         dmesg | tail



 dove `N' � il numero dell'interfaccia Ethernet che si sta collaudando.

 Con il driver compilato nel kernel: Se si ha il driver compilato nel
 kernel, allora tutto quel che serve per usare pi� schede Ethernet lo
 si ha gi�.  Comunque si noti che al momento, per default, solo una
 scheda Ethernet � rilevata automaticamente.  Ci� aiuta a evitare
 possibili blocchi all'avvio causati dal rilievo di schede ``ombrose''.

 (Nota: dagli ultimi kernel 2.1.x, i rilievi al boot sono stati
 separati in sicuri ed insicuri, in modo che tutti quelli sicuri (es.
 PCI e EISA) trovino automaticamente tutte le loro schede.  Nei sistemi
 con pi� di una scheda Ethernet e almeno una scheda ISA, sar� ancora
 necessario fare una delle cose che seguono.)

 Ci sono due modi per abilitare l'auto-rilevamento della seconda (e la
 terza, e...) scheda.  Il metodo pi� semplice � di passare al momento
 dell'avvio, degli argomenti al kernel, solitamente usando LILO.  Il
 rilevamento della seconda scheda pu� essere ottenuto con un semplice
 argomento di boot come ether=0,0,eth1.  In questo caso eth0 e eth1
 saranno assegnate nell'ordine in cui sono rilevate le schede al boot.
 Diciamo che si vuole che la scheda a 0x300 sia eth0 e quella a 0x280
 sia eth1, allora si potrebbe usare


      LILO: linux ether=5,0x300,eth0 ether=15,0x280,eth1


 Il comando ether= accetta pi� della terna IRQ, I/O e nome mostrata
 sopra.  Si veda la sezione ``Passare argomenti Ethernet...'' per la
 sintassi completa, i parametri specifici delle schede e dritte su
 LILO.

 Questi argomenti di boot possono essere resi permanenti cosicch� non
 si debba reinserirli ogni volta.  Si veda l'opzione di configurazione
 di LILO append nel manuale di LILO.

 Il secondo metodo (non raccomandato) � di modificare il file Space.c e
 sostituire la voce 0xffe0 per l'indirizzo I/O con uno zero.  La voce
 0xffe0 dice di non cercare quel dispositivo -- rimpiazzandola con uno
 zero si abiliter� l'autorilevamento di quel dispositivo.

 Si noti che, se si intende usare Linux come gateway tra due reti, si
 dovr� ricompilare un kernel abilitando l'IP forwarding (inoltro degli
 IP).  Solitamente usare un vecchio AT/286 con un software del tipo
 ``kbridge'' � una soluzione migliore.

 Se si sta leggendo questa cosa mentre si naviga in rete, si potrebbe
 guardare il mini-howto che Donald ha nel suo sito WWW. Si veda
 Multiple Ethercards
 <http://cesdis.gsfc.nasa.gov/linux/misc/multicard.html>.


 3.3.  Il comando ether=  non � servito a niente. Perch�?

 Come descritto sopra, il comando ether= funziona solo per driver
 compilati nel kernel.  Adesso molte distribuzioni usano i driver in
 forma modulare, perci� il comando ether= � usato ancora raramente
 (certa documentazione pi� vecchia non � ancora stata aggiornata per
 riportare questo cambiamento). Se si vogliono adoperare le opzioni per
 un driver Ethernet modulare si devono fare modifiche al file
 /etc/conf.modules.

 Se si sta usando un driver compilato nel kernel e si � aggiunto un
 comando ether= al proprio file di configurazione LILO, si noti che
 esso non avr� effetto fino a che non si riesegue lilo per eseguire il
 file di configurazione aggiornato.



 3.4.  Problemi con schede NE1000/NE2000 (e cloni)

 Problema: Una scheda clone PCI NE2000 non � rilevata all'avvio usando
 una versione del kernel v2.0.x.

 Causa: Il driver ne.c, fino alla versione del kernel v2.0.30, conosce
 solo il numero identificativo PCI delle schede clone basate su RealTek
 8029. Da allora, molti altri hanno distribuito cloni PCI NE2000 con
 diversi numeri identificativi PCI, perci� il driver non li rileva.

 Soluzione: La soluzione pi� facile consiste nell'aggiornare il kernel
 di Linux alla versione v2.0.31 (o pi� recente). Essa � a conoscenza
 dei numeri identificativi di circa cinque diversi chip PCI NE2000 e li
 rileva automaticamente all'avvio o nella fase di caricamento del
 modulo. Se si aggiorna alla versione 2.0.34 (o pi� recente) esiste un
 driver specifico NE2000 solo PCI che � leggermente pi� piccolo e pi�
 efficiente del driver originario ISA/PCI.

 Problema: Una scheda clone PCI NE2000 si presenta come una ne1000
 (scheda a 8 bit!) all'avvio o quando si carica il modulo ne.o per la
 versione v2.0.x, perci� non funziona.

 Causa: Alcuni cloni PCI non implementano l'accesso byte wide (perci�
 non sono realmente compatibili NE2000 al 100%). Ci� fa pensare al
 sistema che siano schede NE1000.

 Soluzione: � necessario aggiornare il kernel alla versione v2.0.31 (o
 pi� recente) come descritto sopra.  Adesso il driver controlla che non
 si verifichi questo problema hardware.

 Problema: Una scheda PCI NE2000 ha prestazioni orribili, anche se si
 riduce la dimensione della finestra come descritto nella sezione
 ``Suggerimenti per le prestazioni''.

 Causa: Le specifiche per il chip 8390 originale, progettato e
 commercializzato pi� di dieci anni fa, osservavano che per ottenere la
 massima affidabilit�, era necessaria una lettura fittizia dal chip
 prima di ogni operazione di scrittura. Il driver ha i mezzi per farlo
 ma � stato disabilitato per default sin dai tempi dei kernel v1.2. Un
 utente ha riferito che riabilitare questa 'mis-feature' ha migliorato
 le prestazioni ottenute con un clone economico PCI NE2000.

 Soluzione: Visto che questa soluzione � stata riportata da una sola
 persona, non ci si illuda troppo. La riabilitazione della lettura
 prima della scrittura si ottiene semplicemente modificando il file del
 driver in linux/drivers/net/, togliendo il commento alla riga
 contenente NE_RW_BUGFIX e poi ricompilando il kernel o il modulo come
 al solito. Se funziona si invii una e-mail che descrive la differenza
 di prestazioni e il tipo  di scheda/chip che si possiede (la stessa
 cosa pu� essere fatta anche per il driver ne2k-pci.c).

 Problema: Il driver ne2k-pci.c, con una scheda PCI NE2000, riporta
 messaggi di errore del tipo timeout waiting for Tx RDC e non funziona
 bene.

 Causa:  La propria scheda e/o il collegamento tra la scheda e il bus
 PCI non pu� gestire l'ottimizzazione I/O a long word usata in questo
 driver.

 Soluzione: Prima di tutto, si controllino le impostazioni disponibili
 nel BIOS/CMOS setup per vedere se alcune di quelle correlate alla
 temporizzazione del bus PCI, sono troppo stringenti per ottenere
 operazioni affidabili.  Altrimenti, l'uso del driver ISA/PCI ne.c (o
 la rimozione di #define USE_LONGIO dal driver ne2k-pci.c) dovrebbe
 permettere di usare la scheda.

 Problema: Una scheda ISA Plug and Play NE2000 (per esempio RealTek
 8019) non � rilevata.

 Causa: Le specifiche originarie NE2000 (e perci� il driver per Linux
 NE2000) non hanno il supporto per il Plug and Play.

 Soluzione: Si usi il disco di configurazione DOS fornito con la scheda
 per disabilitare PnP e per assegnare la scheda ad uno specifico
 indirizzo di I/O e IRQ. Si aggiunga una riga a /etc/conf.modules del
 tipo options ne io=0xNNN dove 0xNNN � l'indirizzo di I/O in formato
 esadecimale a cui la scheda � stata assegnata (ci� assume che si stia
 usando un driver modulare; se non � cos� si usi all'avvio un argomento
 ether=0,0xNNN,eth0).  Pu� accadere anche che si debba entrare nel
 BIOS/CMOS setup e contrassegnare l'IRQ come Legacy-ISA al posto di
 PnP. In alternativa, se � necessario lasciare PnP abilitato per la
 compatibilit� con qualche altro sistema operativo, si consideri il
 pacchetto isapnptools. Si provi man isapnp per capire se � gi�
 installato nel proprio sistema. Se non lo �, si dia un'occhiata al
 seguente URL:

 ISA PNP Tools <http://www.roestock.demon.co.uk/isapnptools/>


 Problema: Un driver NE*000 riporta `not found (no reset ack)' durante
 il rilevamento all'avvio.

 Causa: Ci� � collegato alla modifica vista in precedenza.  Dopo la
 verifica iniziale che un 8390 � all'indirizzo di I/O rilevato, si
 effettua la riinizializzazione (reset).  Quando la scheda ha
 completato tale operazione, si suppone dichiari (acknowlodge) che �
 completata. La propria scheda non lo fa e cos� il driver assume che
 nessuna scheda NE sia presente.

 Soluzione: Si pu� dire al driver che si possiede una scheda scadente
 specificando al momento dell'avvio il valore esadecimale 0xbad,
 solitamente non usato, per mem_end (NdT: si noti che ``bad'' significa
 letteralmente ``cattivo, brutto, scarso, ecc.'').  Quando si usa
 0xbad, si deve anche fornire un I/O base diverso da zero per la
 scheda.  Per esempio, una scheda a 0x340 che non dichiara il
 completamento del reset dovrebbe usare qualcosa del tipo:


      LILO: linux ether=0,0x340,0,0xbad,eth0


 Ci� permette che il rilevamento della scheda continui anche se la pro�
 pria scheda non effettua l'ACK del reset. Se si sta usando il driver
 come modulo, allora si pu� fornire l'opzione bad=0xbad proprio come si
 fornisce l'indirizzo di I/O.


 Problema: Una scheda NE*000 blocca la macchina al primo accesso alla
 rete.

 Causa: Questo problema � stato riportato per kernel a partire dalla
 versione 1.1.57 fino alla corrente. Sembra confinato a poche schede
 clone configurabili via software. Apparentemente sie aspettano di
 essere inizializzate in qualche modo speciale.

 Soluzione: Diverse persone hanno riferito che l'esecuzione del
 programma DOS di configurazione software e/o l'uso del driver per DOS
 forniti con la scheda prima di fare il boot ``a caldo'' di Linux (cio�
 usando loadlin o con il ``saluto a tre dita'' (CTRL-ALT-CANC))
 consente alla scheda di funzionare. Ci� indicherebbe che queste schede
 necessitano di essere inizializzate in un modo particolare,
 leggermente diverso da ci� che fa l'attuale driver per Linux.

 Problema: Una scheda Ethernet NE*000 a 0x360 non viene rilevata.

 Causa: La propria scheda ha uno spazio degli indirizzi di I/O ampio
 0x20, il che la fa entrare in collisione con la porta parallela a
 0x378.  Altri dispositivi che possono essere l� sono il secondo
 controller del floppy (se in dotazione) a 0x370 e il controller
 secondario IDE a 0x376--0x377.  Se la/le porta/e sono gi� assegnate ad
 un altro driver, il kernel non permette che avvenga il rilevamento.


 Soluzione: Si sposti la propria scheda ad un indirizzo del tipo 0x280,
 0x340, 0x320 o si compili senza il supporto per la stampante su porta
 parallela.

 Problema: La rete ``scompare'' ogniqualvolta si stampa qualcosa
 (NE2000).

 Causa: Il problema � lo stesso visto sopra, ma si ha un kernel pi�
 vecchio che non verifica la sovrapposizione delle regioni di I/O. Si
 usi la stessa soluzione vista prima e ancora meglio ci si procuri un
 nuovo kernel.

 Problema: NE*000 ethercard probe at 0xNNN: 00 00 C5 ... not found.
 (invalid signature yy zz)

 Causa: Prima di tutto, si ha una scheda NE1000 o NE2000 all'indirizzo
 0xNNN?  Se s�, l'indirizzo hardware riportato ha l'aria di essere uno
 valido?  Se s�, allora si possiede un clone NE*000 disgraziato. Si
 suppone che tutti i cloni NE*000 abbiano il valore ox57 nei byte 14 e
 15 della PROM SA sulla scheda. La propria scheda non ce l'ha -- essa
 ha invece 'yy zz'.

 Soluzione: Ci sono due modi di aggirare l'ostacolo. Il pi� facile
 consiste nell'usare un valore di mem_end 0xbad come descritto sopra
 per il problema `no reset ack'. Ci� consentir� di bypassare il
 controllo della firma, sempre che si fornisca anche un valore I/O base
 diverso da zero. Questa soluzione non richiede di ricompilare il
 kernel.

 Il secondo metodo (per hacker) comporta la modifica delle stesso
 driver e la ricompilazione del proprio kernel (o modulo). Il driver
 (usr/src/linux/drivers/net/ne.c) contiene un elenco ``Hall of Shame''
 (Ndt: gioco di parole con ``Hall of Fame''; ``fame''= famoso,
 ``shame''=vergogna, disonore) pressappoco alla riga 42. Questo elenco
 � usato per rilevare cloni disgraziati. Per esempio, le schede DFI
 usano ``DFI'' nei primi 3 byte della PROM al posto di usare 0x57 nei
 byte 14 e 15 (come dovrebbero fare).

 Problema: La macchina si blocca durante l'avvio giusto dopo il
 messaggio `8390...' oppure `WD....'. La rimozione della NE2000 risolve
 il problema.

 Soluzione: Si cambi l'indirizzo base della propria NE2000 con qualcosa
 del tipo 0x340. In alternativa si pu� usare l'argomento di boot
 ``reserve='' in combinazione con l'argomento ``ether='' per tutelare
 la scheda da rilievi di altri driver di dispositivi.

 Causa: Il proprio clone NE2000 non � un clone abbastanza buono. Una
 NE2000 effettiva � un abisso senza fondo che intrappola ogni driver
 che stia facendo l'autorilevamento nel suo spazio.  Spostare la NE2000
 ad un indirizzo meno popolare la porta fuori dalla portata di altri
 rilievi automatici, consentendo alla macchina di avviarsi.

 Problema: La macchina si blocca all'avvio durante il rilevamento SCSI.

 Causa: � lo stesso problema visto precedentemente, si cambi
 l'indirizzo della scheda Ethernet o si usino gli argomenti di boot
 reserve/ether.

 Problema: La macchina si blocca all'avvio durante il rilevamento della
 scheda sonora.

 Causa: No, in realt� ci� avviene durante il rilevamento SCSI
 ``silenzioso'' ed � lo stesso problema visto precedentemente.

 Problema: NE2000 non rilevata all'avvio -- nessun tipo di messaggio.

 Soluzione: Non esiste una ``soluzione magica'' visto che possono
 essere parecchie le cause per cui non � stata rilevata. Il seguente
 elenco dovrebbe aiutare a risolvere i possibili problemi.

 1) Si compili un nuovo kernel che includa solo i driver dei
 dispositivi di cui si ha bisogno. Si verifichi che si stia davvero
 avviando il kernel nuovo. Dimenticare di eseguire lilo, eccetera pu�
 portare ad avviare quello vecchio (si guardi attentamente l'ora e la
 data di compilazione riportati all'avvio).  Suona ovvio, ma l'abbiamo
 fatto tutti in passato. Ci si assicuri che il driver sia
 effettivamente incluso nel nuovo kernel cercando nel file System.map
 cose tipo ne_probe.

 2) Si guardino attentamente i messaggi all'avvio. Davvero non accenna
 mai al fatto che sta facendo un rilevamento ne2k, per esempio `NE*000
 probe at 0xNNN: not found (blah blah)' o fallisce proprio
 silenziosamente? C'� una grossa differenza.  Si usi dmesg|more per
 rivedere i messaggi di avvio dopo aver fatto il login o si digiti
 Shift-PgUp per scorrere il contenuto dello schermo dopo che l'avvio si
 � completato e appare il prompt del login.

 3) Dopo l'avvio si esegua un cat /proc/ioports e si verifichi che
 l'intero spazio di I/O richiesto dalla scheda sia libero. Se si parte
 da 0x300, il driver n2ek richieder� 0x300-0x31f.  Se un qualsiasi
 altro driver di dispositivo ha occupato anche solo una porta da
 qualche parte in quell'intervallo, il rilevamento non avr� luogo a
 quell'indirizzo e continuer� silenziosamente al prossimo degli
 indirizzi rilevati. Un caso frequente � avere il driver lp che riserva
 0x378 o il secondo canale IDE che riserva 0x376, il che impedisce al
 driver ne il rilevamento in 0x360-0x380.

 4) Allo stesso modo come sopra per cat /proc/interrupts. Ci si
 assicuri che nessun altro dispositivo abbia occupato l'interrupt per
 il quale � stata impostata la scheda. In questo caso, il rilevamento
 avviene e il driver Ethernet protesta rumorosamente all'avvio perch�
 non riesce a ottenere la linea IRQ desiderata.

 5) Se si � ancora perplessi del fallimento silenzioso del driver,
 allora lo si modifichi aggiungendo alcuni printk() al rilevamento.
 Per esempio con il ne2k si potrebbero aggiungere/rimuovere righe
 (contrassegnate rispettivamente con un '+' o  '-') in
 linux/drivers/net/ne.c tipo:


 ______________________________________________________________________
     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;
 +    }
 ______________________________________________________________________



 Perci� esso produrr� messaggi di output per ogni indirizzo di porta
 che esamina e si potr� capire se l'indirizzo della propria scheda �
 stato o no rilevato.

 6) Ci si pu� anche procurare il diagnostico ne2k nel sito ftp di Don
 (pure citato nell'howto) e vedere se � in grado di rilevare la propria
 scheda dopo che si � avviato Linux. Si usi l'opzione `-p 0xNNN' per
 dirgli dove cercare la scheda (l'indirizzo di default � 0x300 e non va
 a guardare da nessun'altra parte a differenza del rilevamento
 all'avvio).  L'output risultante quando trova una scheda sar� qualcosa
 del tipo:


 ______________________________________________________________________
 Checking the ethercard at 0x300.
   Register 0x0d (0x30d) is 00
   Passed initial NE2000 probe, value 00.
 8390 registers: 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 found at 0x300, using start page 0x40 and end page 0x80.
 ______________________________________________________________________



 I propri valori register e PROM saranno probabilmente diversi. Si noti
 che tutti i valori PROM sono duplicati per una scheda a 16 bit,
 l'indirizzo Ethernet (00:00:c0:b0:05:65) appare nella prima riga e la
 firma ripetuta 0x57 appare alla fine della PROM.

 L'output risultante quando non c'� nessuna scheda installata a 0x300
 sar� qualcosa del tipo:









 ______________________________________________________________________
 Checking the ethercard at 0x300.
   Register 0x0d (0x30d) is ff
   Failed initial NE2000 probe, value ff.
 8390 registers: 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

  Invalid signature found, wordlength 2.
 ______________________________________________________________________



 I valori 0xff si presentano poich� quello � il valore restituito
 quando si legge una porta di I/O libera.  Si possono vedere dei valori
 diversi da 0xff anche se si ha qualche altro tipo di hardware nella
 regione rilevata.

 7) Si provi a fare un warm boot di Linux da un dischetto di avvio per
 DOS (attraverso loadlin) dopo aver eseguito il driver per DOS o il
 programma di configurazione forniti. Pu� essere che faccia una qualche
 `magia' extra (cio� non standard) per inizializzare la scheda.

 8) Si provi il packet driver di Russ Nelson ne2000.com per vedere se
 almeno questo riesce a rilevare la propria scheda -- se no, allora le
 cose non vanno bene. Esempio:


      A:> ne2000 0x60 10 0x300


 Gli argomenti sono: il vettore degli interrupt software, l'IRQ
 hardware e l'I/O base. Lo si pu� trovare in un qualsiasi archivio
 msdos nel file pktdrv11.zip.  La versione attuale pu� essere pi�
 recente della 11.



 3.5.  Problemi con le schede SMC Ultra/EtherEZ e WD80*3


 Problema: Si ottengono messaggi tipo il seguente:


         eth0: bogus packet size: 65531, status=0xff, nxpg=0xff



 Causa: C'� un problema di memoria condivisa.

 Soluzione: La causa pi� comune � dovuta a macchine PCI che non sono
 configurate per mappare dispositivi nella memoria ISA.  Perci� si
 finisce per leggere la RAM del PC (tutti valori 0xff) invece della RAM
 della scheda che contiene i dati provenienti dal pacchetto ricevuto.

 Altri tipici problemi facili da risolvere sono: i conflitti di scheda,
 avere la cache o la ``shadow ROM'' abilitata per quella regione o
 avere il proprio bus ISA che va ad una velocit� superiore agli 8 MHz.
 Si trovano anche un numero sorprendente di guasti di memoria sulle
 schede Ethernet, perci� si esegua un programma di diagnostica nel caso
 in cui se ne possieda uno per la propria scheda.

 Problema: La scheda SMC EtherEZ non funziona nella modalit� a memoria
 non condivisa (PIO).


 Causa: Le versioni pi� vecchie del driver Ultra supportavano la scheda
 solo nella modalit� a memoria condivisa.

 Soluzione: Il driver a partire dalla versione del kernel 2.0 supporta
 anche la modalit� ad I/O programmato. Si aggiorni alla versione v2.0 o
 pi� recente.

 Problema: Le vecchie wd8003 e/o le wd8013 configurabili con i
 ponticelli ottengono sempre l'IRQ sbagliato.

 Causa: Le vecchie schede wd8003 e i cloni wd8013 configurabili con i
 ponticelli non possiedono la EEPROM dalla quale il driver pu� leggere
 l'impostazione dell'IRQ. Se il driver non � in grado di leggere l'IRQ
 allora esso prova a scoprirlo automaticamente con auto-IRQ. Se l'auto-
 IRQ restituisce il valore zero, il driver non fa altro che assegnare
 IRQ 5 a una scheda a 8 bit o IRQ 10 a una scheda a 16 bit.

 Soluzione: Si eviti il codice di auto-IRQ e si comunichi al kernel
 qual � l'IRQ per il quale la scheda � stata configurata nel proprio
 file di configurazione dei moduli (o mediante una argomento di boot
 per i driver compilati nel kernel).

 Problema: La scheda SMC Ultra � rilevata come wd8013, ma l'IRQ e
 l'indirizzo base della memoria condivisa sono sbagliati.

 Causa: La scheda Ultra assomiglia molto a una wd8013 e se il driver
 Ultra non � presente nel kernel, il driver wd pu� scambiare la Ultra
 per una wd8013. Il rilevamento della Ultra avviene prima del
 rilevamento della wd perci� questo di solito non accade. La Ultra
 memorizza l'IRQ e l'indirizzo base della memoria in un modo diverso
 nella EPROM, da cui i valori contraffatti riportati.

 Soluzione: Si ricompili il kernel con solo i driver di cui si ha
 bisogno. Se si ha una commistione di schede ultra e wd nella stessa
 macchina e si stanno usando i moduli allora si carichi per primo il
 modulo ultra.


 3.6.  Problemi con le schede 3Com

 Problema: La 3c503 si prende l'IRQ N, ma questo serve per una qualche
 altro dispositivo che ha bisogno dell'IRQ N (per esempio il driver del
 CDROM, il modem, ecc.). Si pu� risolvere la cosa senza ricompilare il
 kernel?

 Soluzione: Il driver della 3c503 cerca una linea di IRQ libera
 nell'ordine {5, 9/2, 3, 4} e dovrebbe scegliere una linea che nessuno
 sta usando. Il driver decide quando la scheda � attivata con ifconfig.

 Se si sta usando un driver modulare, si possono usare dei parametri
 del modulo per impostare molte cose, incluso il valore dell'IRQ.

 Ci� che segue imposta l'IRQ9, la locazione base 0x300, <valori
 ignorati> e if_port #1 (il transceiver esterno).




      io=0x300 irq=9 xcvr=1


 In alternativa, se il driver � compilato nel kernel, � possibile
 fissare gli stessi valori all'avvio passando i parametri attraverso
 LILO.


      LILO: linux ether=9,0x300,0,1,eth0


 Ci� che segue imposta l'IRQ3, la ricerca della locazione base, <valori
 ignorati> e il transceiver di default if_port #0 (il transceiver
 interno).


      LILO: linux ether=3,0,0,0,eth0


 Problema: 3c503: configured interrupt X invalid, will use autoIRQ.

 Causa: La sheda 3c503 pu� usare solo uno degli IRQ{5, 2/9, 3, 4} (solo
 queste linee sono connesse alla scheda). Se si passa un valore di IRQ
 che non appartiene al precedente insieme, si otterr� il messaggio
 sopra indicato.  Di solito non � necessario specificare un valore di
 interrupt per la 3c503. La 3c503 effettuer� l'autoIRQ quando viene
 usato ifconfig e sceglie uno degli IRQ{5, 2/9, 3, 4}.

 Soluzione: Si usi uno degli IRQ validi elencati sopra oppure si
 abiliti l'autoIRQ ma senza specificare la linea IRQ in alcun modo.

 Problema: I driver per la 3c503 forniti non utilizzano la porta AUI
 (thicknet). Come si pu� optare per essa al posto della porta thinnet
 di default?

 Soluzione: La porta 3c503 AUI pu� essere selezionata al momento
 dell'avvio per i driver compilati nel kernel e all'inserzione del
 modulo per i driver modulari.  La selezione avviene impostando ad 1 il
 bit meno significativo della variabile attualemente non usata
 dev->rmem_start, cosicch� un parametro all'avvio tipo:


      LILO: linux ether=0,0,0,1,eth0


 dovrebbe funzionare per i driver compilati nel kernel.

 Per specificare la porta AUI quando si carica il driver come modulo �
 sufficiente aggiungere xcvr=1 alla riga delle opzioni del modulo
 insieme con i propri valori di I/O e IRQ.


 3.7.  FAQ non specifiche su una particolare scheda



 3.7.1.  Linux e schede Ethernet ISA di tipo Plug and Play


 Per ottenere i migliori risultati (e il minimo rompimento) si
 raccomanda di usare il programma (di solito DOS) fornito con la
 propria scheda per disabilitare il meccanismo PnP e impostarla
 definitivamente a un indirizzo di I/O e un IRQ. Ci si assicuri che
 l'indirizzo di I/O che si utilizza sia rilevato all'avvio o, se si
 usano i moduli, si fornisca l'indirizzo sotto forma di opzione io= in
 /etc/conf.modules.  Pu� darsi che si debba anche entrare nel BIOS/CMOS
 setup e contrassegnare l'IRQ come Legacy-ISA al posto di PnP (se il
 proprio computer ha questa opzione).

 Si noti che non � necessario avere DOS installato per eseguire un
 programma di configurazione basato su DOS. Di solito � sufficiente
 avviare da un dischetto DOS ed eseguire i programmi dal dischetto
 fornito.  Si pu� anche scaricare gratuitamente OpenDOS e FreeDOS.

 Se si necessita, per la compatibilit� con qualche altro sistema
 operativo, che sia abilitato il PnP, allora con Linux si dovr� usare
 il pacchetto isapnptools per configurare ogni volta la(e) scheda(e)
 all'avvio.  Ci si dovr� ancora assicurare che l'indirizzo di I/O
 scelto per la scheda sia rilevato dal driver o fornito sotto forma di
 opzione io=.


 3.7.2.  La scheda Ethernet non � rilevata all'avvio


 Di solito la causa di ci� e che si sta usando un kernel che non
 include il supporto per la propria particolare scheda. Per un kernel
 modulare ci� significa che non si � richiesto di caricare il modulo di
 cui si ha bisogno o che � necessario specificare al modulo un
 indirizzo come opzione.

 Se si sta usando un kernel basato sui moduli per esempio quelli
 installati dalla maggior parte delle distribuzioni Linux, allora si
 provi a usare l'utilit� di configurazione della distribuzione, per
 selezionare il modulo adatto alla propria scheda. Per le schede ISA �
 una buona idea determinare l'indirizzo di I/O della scheda e
 aggiungerlo come opzione (per esempio io=0x340) se l'utilit� di
 configurazione ne richiede qualcuna.  Se non c'� alcuna utilit� di
 configurazione allora si dovr� aggiungere il nome corretto del modulo
 (e le opzioni) al file /etc/conf.modules -- si veda man modprobe per
 maggiori dettagli.

 Se si sta usando un kernel precompilato che � parte della
 distribuzione, allora si controlli la documentazione per vedere che
 kernel si � installato e se � stato compilato con il supporto per la
 propria scheda.  Se non lo � stato, allora o si prova a procurarsene
 uno con il supporto per la propria scheda, oppure se ne compili uno su
 misura.

 Solitamente � una buona cosa compilare il proprio kernel con solo i
 driver di cui si ha bisogno, poich� questa cosa non solo riduce la
 dimensione del kernel (risparmiando memoria RAM preziosa per le
 applicazioni!) ma riduce anche il numero di rilevamenti che possono
 incasinare hardware ``sensibile''.  Compilare un kernel non � cos�
 complicato come sembra.  Si deve solo rispondere s� o no a una serie
 di domande su quali driver si vogliono, e lui fa tutto il resto.

 Un'altra causa importante � l'avere un altro dispositivo che usa una
 parte dello spazio di I/O di cui ha bisogno la propria scheda.  Molte
 schede usano uno spazio di I/O di 16 o 32 byte.  Se la propria scheda
 � impostata a 0x300 ed usa 32 byte. allora il driver chieder� la
 regione 0x300-0x31f.  Se un qualsiasi altro dispositivo ha registrato
 anche solo una porta da qualche parte in quell'intervallo, il
 rilevamento non avr� luogo a quell'indirizzo e il driver continuer�
 silenziosamente con il prossimo indirizzo fra quelli che prova.
 Quindi, dopo il boot, si faccia cat /proc/ioports per verificare che
 l'intero spazio d'I/O che la scheda richiede � libero.

 Un altro problema � l'avere la propria scheda impostata con i
 ponticelli a un indirizzo di I/O che non viene controllato di default.
 L'elenco di tali indirizzi per ogni driver si trova facilmente proprio
 dopo i commenti iniziali nel sorgente del driver.  Anche se
 l'impostazione I/O della propria scheda non � nell'elenco degli
 indirizzi controllati, la si pu� fornire al boot (per i driver
 compilati nel kernel) con il comando ether= come descritto in
 ``Passare argomenti  Ethernet...''.  I driver modulari possono fare
 uso dell'opzione io= in /etc/conf.modules per specificare un indirizzo
 che non � controllato di default.


 3.7.3.  ifconfig  mostra un indirizzo di I/O sbagliato per la scheda


 No, non lo fa.  Lo si sta solamente interpretando in modo scorretto.
 Questo non � un bug e i numeri riportati sono corretti.  Capita solo
 che in alcune schede basate su 8390 (wd80x3, smc-ultra, ecc.) il chip
 8390 in realt� risiede a un offset rispetto alla prima porta di I/O
 assegnata.  Questo � il valore salvato in dev->base_addr ed � ci� che
 ifconfig riporta.  Se si vuole vedere l'intero intervallo di porte che
 la propria scheda usa, allora si provi cat /proc/ioports che dar� i
 numeri che ci si aspetta.


 3.7.4.  La macchina PCI rileva la scheda ma il driver ma no


 Alcuni BIOS PCI potrebbero non abilitare tutte le schede PCI
 all'accensione, specialmente se � attivata l'opzione ``PNP OS'' del
 BIOS.  Questa mis-feature � per supportare la versione corrente di
 Window che ancora usa alcuni driver in real mode.  Si disabiliti
 questa opzione oppure si provi ad aggiornare a un driver pi� recente
 che abbia il codice per abilitare una scheda disabilitata.


 3.7.5.  Le schede ISA a memoria condivisa non funzionano in una
 macchina PCI ( 0xffff )


 Questa cosa solitamente si presenta come una serie di letture di
 valori 0xffff.  Nessun tipo di scheda a memoria condivisa potr�
 funzionare in una macchina PCI finch� non si configuri correttamente
 il BIOS PCI.  Lo si deve impostare per permettere l'accesso in memoria
 condivisa dal bus ISA alla regione di memoria che la propria scheda
 cerca di usare. Se non si capisce quali impostazioni sono appropriate
 allora si chieda al proprio fornitore o all'esperto di computer
 locale. Per i BIOS AMI, solitamente c'� una sezione ``Plug and Play''
 dove ci dovrebbero essere delle impostazioni tipo ``ISA Shared Memory
 Size'' e ``ISA Shared Memory Base''.  Per le schede come la wd8013 e
 la SMC Ultra, si modifichi la dimensione predefinita da ``Disabled'' a
 16kB e si metta l'indirizzo della memoria condivisa della propria
 scheda nell'altra impostazione.


 3.7.6.  Sembra che la scheda invii dati ma non riceve niente


 Si faccia un cat /proc/interrupts.  Il totale corrente del numero di
 eventi di interrupt generati dalla propria scheda sar� nell'elenco
 dato dal comando precedente.  Se � a zero e/o non aumenta quando si
 prova a usare la scheda allora probabilmente c'� un conflitto di
 interrupt con un altro dispositivo installato nel computer
 (indifferentemente dal fatto che l'altro dispositivo abbia o meno un
 driver installato/disponibile). Si cambi l'IRQ di uno dei due
 dispositivi a un IRQ libero.



 3.7.7.  Supporto per Asynchronous Transfer Mode (ATM)


 Werner Almesberger sta lavorando al supporto ATM per Linux. Sta
 lavorando con la scheda ENI155p della Efficient Networks ENI155p
 (Efficient Networks <http://www.efficient.com/>) e la scheda ZN1221
 della Zeitnet (Zeitnet <http://www.zeitnet.com/>).


 Werner sostiene che il driver per la ENI155p � abbastanza stabile,
 mentre quello per la ZN1221 non � ancora finito.

 Si veda lo stato attuale dei driver al seguente URL:

 Linux ATM Support <http://lrcwww.epfl.ch/linux-atm/>


 3.7.8.  Supporto per Gigabyte Ethernet


 C'� un qualche supporto per gigabyte Ethernet sotto Linux?

 S�, attualmente ce ne sono almeno due.  Un driver per l'adattatore
 Gigabit Ethernet PCI G-NIC della Packet Engines � disponibile nei
 kernel v2.0 e v2.2.  Per maggiori dettagli, supporto e driver
 aggiornati, si veda:

 http://cesdis.gsfc.nasa.gov/linux/drivers/yellowfin.html

 Il driver acenic.c disponibile nei kernel v2.2 pu� essere usato con la
 scheda Gigabit Ethernet AceNIC della Alteon e con altre schede basate
 su Tigon come la 3c985 della 3Com.  Il driver dovrebbe funzionare
 anche con la GA620 della NetGear, ma la cosa non � ancora stata
 verificata.


 3.7.9.  Supporto FDDI

 C'� il supporto FDDI per Linux?

 S�. Larry Stefani ha scritto un driver per v2.0 usando le schede DEFEA
 (FDDI EISA) e DEFPA (FDDI PCI) della Digital.  Era stato incluso nel
 kernel v2.0.24.  Attualmente non sono supportate altre schede.


 3.7.10.  Supporto Full Duplex


 Il Full Duplex mi dar� i 20MBps? Linux lo supporta?

 Cameron Spitzer ha scritto quanto segue sulle schede 10Base-T full
 duplex: �Se se ne connette una a uno switched hub full duplex e il
 proprio sistema � abbastanza veloce e non sta facendo molto altro, pu�
 mantenere la connessione occupata in entrambe le direzioni.  Non ci
 sono cose tipo 10BASE-2 o 10BASE-5 full duplex.  Il full duplex
 funziona disabilitando il rilevamento delle collisione
 nell'adattatore. Questo � il motivo per cui non lo si pu� fare con un
 cavo coassiale; la LAN in questo modo non funzionerebbe. Il 10BASE-T
 (interfaccia RJ45) usa fili separati per la trasmissione e la
 ricezione cos� � possibile utlizzare entrambe le direzioni nello
 stesso momento.  Lo switching hub si fa carico del problema delle
 collisioni.  La frequenza dei segnali � 10Mbps.�

 Quindi come si pu� vedere si sar� in grado di ricevere e trasmettere
 solo a 10Mbps e cos� non ci si aspetti un incremento delle prestazioni
 di un fattore 2. Che sia o meno supportato, la cosa dipende dalla
 scheda e forse anche dal driver.  Alcune schede possono fare l'auto
 negoziazione, altre hanno bisogno del supporto da parte del driver e
 per altre ancora � necessario che l'utente selezioni un'opzione nella
 configurazione EEPROM della scheda.  Comunque solamente utilizzatori
 seri/pesanti noteranno la differenza tra le due modalit�.




 3.7.11.  Schede Ethernet per Linux su macchine SMP

 Se si spendono soldi in pi� su un computer multi processore (MP)
 allora si comperi anche una buona scheda Ethernet.  Per i kernel v2.0
 non � veramente necessario, ma lo � sicuramente per quelli v2.2.  La
 maggior parte delle schede pi� vecchie non intelligenti (per esempio
 progetti per bus ISA PIO e memoria condivisa) non furono mai pensate
 considerando in alcun modo l'uso con macchina MP.  La tendenza attuale
 � di comperare una scheda intelligente di progettazione moderna e
 assicurarsi che il driver sia stato scritto (o aggiornato) per gestire
 le operazioni MP (le parole chiave sono ``progettazione moderna'': le
 NE2000 PCI sono semplicemente un progetto di 10 anni fa adattato a un
 bus moderno).  La presenza del testo spin_lock nei sorgenti del driver
 � un buona indicazione che il driver � stato scritto per gestire le
 operazioni MP.  Si veda sotto per i dettagli completi su perch� di
 dovrebbe acquistare una buona scheda per l'uso MP (e cosa accade se
 non lo si fa).

 Nei kernel v2.0, solo un processore alla volta era permesso ``in
 modalit� kernel'' (ovvero poteva cambiare i dati del kernel e/o
 eseguire device driver). Quindi dal punto di vista della scheda (e del
 driver associato) non c'era niente di diverso rispetto ad operazioni
 uni-processore (UP) e le cose funzionavano come prima (questo era il
 modo pi� semplice di ottenere una versione MP di Linux funzionante: un
 unico grosso lock (blocco, semaforo) attorno a tutto il kernel
 permette l'accesso ad un solo processore alla volta. In questo modo si
 sa che non si avranno due processori che provano a cambiare la stessa
 cosa allo stesso tempo!).

 Lo svantaggio nel permettere un solo processore alla volta in modalit�
 kernel � che si ottengono prestazioni di tipo MP solamente se si
 eseguono programmi indipendenti e che fanno calcoli pesanti.  Se i
 programmi fanno un sacco di input/output (I/O) come la lettura e la
 scrittura di dati su disco o attraverso la rete, allora tutti i
 processori tranne uno saranno in stallo in attesa che le loro
 richieste di I/O siano completate mentre l'unico processore in
 esecuzione in modalit� kernel freneticamente prova a eseguire tutti i
 device driver per soddisfare le richieste di I/O.  Il kernel diventa
 il collo di bottiglia e poich� c'� solo un processore in modalit�
 kernel, le prestazioni di una macchina MP in presenza di I/O pesante,
 in questo caso detoriorano velocemente verso quelle di una macchina a
 singolo processore.

 Poich� questa cosa � chiaramente inferiore al caso ideale
 (specialmente per server di file/WWW, router, ecc.) i kernel v2.2
 hanno un lock pi� fine. Ci� significa che pi� di un processore alla
 volta pu� essere in modalit� kernel. Invece di un unico grosso lock
 attorno all'intero kernel, ci sono un sacco di piccoli lock che
 proteggono i dati critici dall'essere manipolati da pi� di un
 processore alla volta, per esempio un processore pu� eseguire il
 driver della scheda di rete, mentre nello stesso momento un altro
 esegue il driver il disco.

 Okay, con tutto questo bene in mente, ecco qui le insidie: il lock pi�
 fine significa che si pu� avere un processore che prova a inviare dati
 attraverso un driver Ethernet mentre un altro prova ad accedere allo
 stesso driver/scheda per fare qualcos'altro (per esempio ottenere le
 statiche della scheda per il comando cat /proc/net/dev). Oops, le
 statistiche della propria scheda sono state appena inviate attraverso
 il cavo, mentre invece si volevano i dati per le proprie statistiche.
 S�, si � un po' confusa la scheda chiedendole di fare due (o pi�!)
 cose alla volta ed � probabile che mandi in crash la propria macchina
 mentre ci prova.

 Quindi il driver che funzionava per UP non � pi� abbastanza buono:
 necessita di essere aggiornato con i lock che controllano l'accesso
 alla scheda cosicch� i tre processi di ricezione, trasmissione e
 manipolazione dei dati di configurazione siano serializzati al grado
 necessario alla scheda per funzionare stabilmente. La parte strana qui
 � che un driver non ancora aggiornato con lock per operazioni MP
 stabili, sembrer� probabilmente funzionare su macchine MP in presenza
 di un leggero carico di rete, ma provocher� il crash della macchine o
 almeno esibir� uno strano comportamento quando due (o pi�!) processori
 proveranno a fare pi� di uno di questi tre processi nello stesso
 momento.

 Un driver Ethernet aggiornato per MP richieder� (al minimo) un lock
 attorno al driver che limiti l'accesso ai punti d'ingresso del kernel
 nel driver in maniera ``uno alla volta, prego''.  Con questa cosa, le
 cose saranno serializzate cosicch� l'hardware sottostante dovrebbe
 essere trattato come se fosse usato in una macchina UP, e quindi
 dovrebbe essere stabilee. Lo svantaggio � che un unico lock attorno
 all'intero driver Ethernet ha le stesse implicazioni negative sulle
 prestazioni dell'avere un unico grosso lock attorno a tutto il kernel
 (ma su scala pi� piccola), ovvero si pu� avere un solo processore alla
 volta che usa la scheda.  [Nota tecnica: L'impatto sulle prestazioni
 pu� anche includere un incremento nelle latenze degli interrupt se i
 lock che � necessario aggiungere sono del tipo irqsave e sono tenuti
 per un lungo periodo di tempo.]

 Possibili miglioramenti a questa situazione possono essere fatti in
 due modi.  Si pu� provare a minimizzare il tempo tra quando si fa il
 lock e quando lo si rilascia, e/o si pu� implementare un lock pi� fine
 all'interno del driver (per esempio un lock attorno all'intero driver
 sarebbe eccessivo se invece fosse necessario solamente un lock o due
 per proteggere contro l'accesso simultaneo a una coppia di
 registri/impostazioni delicati della scheda).

 Comunque, per le pi� vecchie schede     non intelligenti che non sono
 mai state progettate pensando all'uso MP, nessuno di questi
 miglioramenti pu� essere realizzato.  Peggio ancora le schede non
 intelligenti tipicamente richiedono che il processore sposti dati tra
 la scheda e la memoria del computer, cosicch� nel caso peggiore il
 lock sar� mantenuto per tutto il tempo necessario per spostari ogni
 pacchetto da 1.5kB sul bus ISA.

 Le pi� moderne schede intelligenti tipicamente spostano i dati
 direttamente da e nella memoria del computer senza nessun aiuto da
 parte di un processore.  Questa � una grande vittoria, poich� il lock
 � mantenuto allora solo per il breve tempo che il processore impiega
 per dire alla scheda dove prendere/mettere nella memoria il prossimo
 pacchetto di dati.  Inoltre le schede pi� moderne tendono meno a
 richiedere un grosso unico lock attorno all'intero driver.



 3.7.12.  Schede Ethernet per Linux su piattaforma PCI Alpha/AXP


 Dalla versione v2.0, solo i driver 3c509, depca, de4x5, pcnet32 e
 tutti quelli 8390 (wd, smc-ultra, ne, 3c503, ecc.) sono stati resi
 ``indipendenti dall'architettura'' cos� da poter funzionare su sistemi
 basati su CPU DEC Alpha.  Possono funzionare anche altri driver PCI
 aggiornati presenti nella pagina WWW di Donald poich� sono stati
 scritti appositamente indipendenti dall'architettura.

 Si noti che le modifiche richieste per rendere un driver indipendente
 dall'architettura non sono cos� complicate.  Si deve solo fare quanto
 segue:



 �  moltiplicare tutti i valori relativi ai jiffies per HZ/100 per
    tener conte del diverso valore di HZ che usa l'Alpha.  (timeout=2;
    diventa timeout=2*HZ/100;)

 �  sostituire tutti deriferimenti dei puntatori nella memoria di I/O
    (da 640k a 1MB) con le appropriate chiamate readb() writeb()
    readl() writel() calls, come mostrato in questo esempio.


 ______________________________________________________________________
 -       int *mem_base = (int *)dev->mem_start;
 -       mem_base[0] = 0xba5eba5e;
 +       unsigned long mem_base = dev->mem_start;
 +       writel(0xba5eba5e, mem_base);
 ______________________________________________________________________



 -sostituire tutte le chiamate memcpy() che hanno la memoria I/O come
 sorgente o destinazione con le appropriate memcpy_fromio() o
 memcpy_toio().

 I dettagli sulla gestione degli accessi alla memoria in maniera
 indipendente dall'architettura sono documentati nel file
 linux/Documentation/IO-mapping.txt fornito con i kernel recenti.


 3.7.13.  Ethernet per Linux su hardware SUN/Sparc

 Per le informazioni pi� aggiornate sulla roba Sparc, si provi il
 seguente URL:

 Linux Sparc <http://www.geog.ubc.ca/sparc>

 Si noti che qualche hardware Ethernet Sparc     riceve il suo
 indirizzo MAC dal computer ospite, e quindi ci si pu� ritrovare con
 pi� interfacce allo stesso indirizzo MAC.  Se si ha bisogno di mettere
 pi� di una interfacia nella stessa rete, allora si usi l'opzione hw di
 ifconfig per assegnare un indirizzo MAC univoco.

 Le questioni riguardati il porting dei driver PCI su piattaforma Sparc
 sono simili a quelle citate sopra per la piattaforma AXP. Inoltre ci
 possono essere un po' di questione relative all'endian, poich� la
 Sparc � big endian mentre AXP e ix86 sono little endian.


 3.7.14.  Ethernet per Linux su altro hardware

 Ci sono parecchie altre piattaforme hardware sulle quali pu� girare
 Linux, come Atari/Amiga (m68k).  Come nel caso Sparc � meglio
 controllare nel sito ufficiale del port di Linux per quella
 piattaforma per vedere cosa attualmente � supportato (sono benvenuti
 link ai suddetti siti -- inviatemeli!)


 3.7.15.  Connettere 10 o 100 BaseT senza un hub

 Possono connettere assieme sistemi basati su 10/100BaseT (RJ45) senza
 un hub?

 Senza altri dispositivi/marchingegni si possono collegare facilmente 2
 macchine, ma non di pi�.  Si veda ``Doppino   intrecciato'', che
 spiega come farlo.  E no, non si pu� far su un hub semplicemente
 incrociando un po' di fili assieme e qualcos'altro.  � praticamente
 impossibile gestire bene il segnale di collisione senza duplicare
 l'hub.
 3.7.16.  SIOCSIFxxx: No such device

 Ricevo un sacco di messaggi `SIOCSIFxxx: No such device' al boot,
 seguiti da un `SIOCADDRT: Network is unreachable'.  Cosa c'� che non
 va?

 Il proprio dispositivo Ethernet non � stato rilevato al boot o
 all'inserzione del modulo e quando sono eseguiti ifconfig e route non
 hanno nessun dispositivo con cui lavorare.  Si usi dmesg | more per
 rivedere i messaggi di boot e vedere se c'� un qualche messaggio sul
 rilevamento della scheda Ethernet.


 3.7.17.  SIOCSFFLAGS: Try again

 Ricevo `SIOCSFFLAGS: Try again' quando eseguo `ifconfig'. Eh?

 Qualche altro dispositivo si � preso l'IRQ che la propria scheda
 Ethernet prova ad usare e quindi questa non pu� usarlo.  Non si deve
 necessariamente riavviare per risolvere ci�, poich� alcuni dispositivi
 si prendono l'IRQ solo quando ne hanno bisogno e poi lo rilasciano
 quando hanno fatto. Esempi sono alcuni schede sonore, porte seriali,
 driver per floppy disk, ecc.  Si pu� digiare cat /proc/interrupts per
 vedere quali interrupt sono attualmente in uso.  La maggior parte dei
 driver per schede Ethernet per Linux si prendono l'IRQ solo quando
 sono attivate per l'uso con `ifconfig'.  Se si riesce a far s� che
 l'altro dispositivo rilasci la linea IRQ richiesta allora si dovrebbe
 essere in grado di `Try again' (riprovare) con ifconfig.


 3.7.18.  Usare `ifconfig' e Link UNSPEC con l'indirizzo hardware
 00:00:00:00:00:00

 Quando eseguo ifconfig senza alcun argomento, mi dice che LINK �
 UNSPEC (invece di 10Mbs Ethernet) e dice anche che il mio indirizzo
 hardware � di tutti zeri.

 Questo � perch� si sta usando una versione del programma `ifconfig'
 pi� recente della versione del kernel.  Questa nuova versione di
 ifconfig non � in grado di riportare queste propriet� quando usata con
 un kernel pi� vecchio.  Si pu� o aggiornare il proprio kernel, tornare
 a una versione pi� vecchia di `ifconfig' oppure semplicemente ignorare
 la cosa.  Il kernel conosce l'indirizzo hardware e non gli interessa
 se ifconfig non pu� leggerlo.

 Si possono ricevere strane informazioni se il programma ifconfig che
 si sta usando � molto pi� vecchio del proprio kernel.


 3.7.19.  Enorme numero di errori in RX e TX

 Quando eseguo ifconfig senza alcun argomento, mi dice che ho un enorme
 numero di errori sia nei pacchetti ricevuti che trasmessi.  Tutto
 sembra funzionare bene. Cosa c'� che non va?

 Si guardi bene. Dice RX packets grande numero PAUSE errors 0 PAUSE
 dropped 0 PAUSE overrun 0.  E la stessa cosa per la colonna TX. Quindi
 i grandi numeri che si vedono sono il numero totale di pacchetti che
 la propria macchina ha ricevuto e trasmesso.  Se ancora si trova la
 cosa confusa, si provi invece ad usare cat /proc/net/dev.


 3.7.20.  Voci in /dev/  per le schede Ethernet

 Ho /dev/eth0 come link (collegamento) a /dev/xxx. � giusto?

 Contrariamente a ci� che si � sentito, i file in /dev/* non sono
 utilizzati. Si pu� cancellare qualsiasi /dev/wd0, /dev/ne0 e voce
 simile.


 3.7.21.  Linux e i ``trailer''

 Dovrei disabilitare i trailer quando uso `ifconfig' con la mia scheda?

 Non si possono disabilitare i trailer e nemmeno si dovrebbe volerlo
 fare. I `trailer' sono degli stratagemmi (hack) per evitare la copia
 dei dati negli strati di rete.  L'idea era di usare un banale header
 di dimensione fissata `H', mettere le informazioni dell'header di
 dimensione variabile alla fine del pacchetto e allocare tutti gli `H'
 byte del pacchetto prima dell'inizio della pagina.  Sebbene fosse una
 buona idea, in pratica ha mostrato di non funzionare bene.  Se
 qualcuno suggerisce l'uso di `-trailers', si noti che � l'equivalente
 del sangue delle capre sacrificali.  Non sar� niente per risolvere il
 problema, ma se il problema si risolve da solo allora qualcuno pu�
 affermare una profonda conoscenza delle arti magiche.



 3.7.22.  Accesso a basso livello al dispositivo Ethernet

 Come posso accedere a basso livello al dispositivo Ethernet in Linux,
 senza passare attraverso TCP/IP e company?


 ______________________________________________________________________
         int s=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL));
 ______________________________________________________________________



 Questo consente di avere un socket che riceve qualsiasi tipo di
 protocollo. Si facciano chiamate recvfrom() a questo socket e lui
 riempir� sockaddr con il tipo di dispositivo nel campo sa_family e il
 nome del dispositivo nell'array sa_data. Non so chi abbia
 originariamente inventato SOCK_PACKET per Linux (c'� da anni) ma � una
 cosa superba.  Si pu� usare anche per inviare roba grezza attraverso
 chiamate sendto(). Naturalmente per fare entrambe le cose si deve
 avere l'accesso come root.


 4.  Suggerimenti per le prestazioni

 Ecco qua un po' di trucchi che si possono usare se si soffre di una
 basso throughput Ethernet o per guadagnare un po' di velocit� nei
 trasferimenti ftp.

 Il programma ttcp.c � un buon test per misurare la velocit� di
 throughput.  Un altro modo comunemente usato � di fare un ftp> get
 grosso_file /dev/null dove   grosso_file � >1MB e risiede nel buffer
 di Tx della macchina (si faccia il `get' almeno due volte, poich� la
 prima volta si appronter� la cache del buffer nella macchina di
 trasmissione).  Si deve mettere il file nella cache del buffer perch�
 non si � interessati ad includere nella misura la velocit� di accesso
 ai file dal disco.  Questo � anche il motivo per cui si inviano i dati
 in ingresso a /dev/null piuttosto che dentro il disco.


 4.1.  Concetti generali

 Anche una scheda a 8 bit � in grado di ricevere pacchetti back-to-back
 (uno dietro l'altro) senza alcun problema.  Le difficolt� nascono
 quando il computer non riesce a estrarre i pacchetti ricevuti dalla
 scheda abbastanza velocemente da far spazio ai pacchetti in arrivo.
 Se il computer non libera abbastanza velocemente la memoria della
 scheda dai pacchetti gi� ricevuti, la scheda non avr� spazio per
 mettere i nuovi pacchetti.

 In questo caso o si scartano (drop) i nuovi pacchetti oppure si
 scrivono sopra a quelli gi� ricevuti (overrun).  In entrambi i casi si
 interrompe seriamente il flusso regolare del traffico
 causando/richiedendo la ritramissione e degradando seriamente le
 prestazioni anche di un fattore 5!

 Le schede con a bordo pi� memoria possono fare la ``bufferizzazione''
 di pi� pacchetti e quindi gestire grossi picchi (burst) di pacchetti
 back-to-back senza perderne nessuno.  D'altra parte ci� significa che
 la scheda non necessita pi� di una bassa latenza dal computer riguardo
 all'estrazione dei pacchetti dal buffer per evitare la perdita di
 pacchetti.

 La maggior parte delle schede a 8 bit hanno un buffer da 8kB e la
 maggior parte di quelle a 16 ne hanno uno da 16kB.  La maggior parte
 dei driver di Linux riserva 3kB del buffer per due buffer Tx, quindi
 nel caso di una scheda a 8 bit rimangono solo 5kB di spazio per la
 ricezione. Questo spazio � sufficiente solo per tre pacchetti Ethernet
 a dimensione massima (1500 byte).


 4.2.  Schede ISA e velocit� del bus ISA

 Come menzionato in precedenza, se i pacchetti sono rimossi abbastanza
 velocemente dalla scheda allora la condizione di drop/overrun non
 avverr� anche se la dimensione del buffer per i pacchetti Rx �
 piccola.  Il fattore che determina la frequenza con la quale i
 pacchetti sono rimossi dalla scheda e messi nella memoria del computer
 � la velocit� del percorso dati che collega le due, ovvero la velocit�
 del bus ISA (se la CPU � un vecchio e lento 386sx-16 allora anche
 questo avr� la sua influenza).

 Il clock del bus ISA raccomandato � circa 8Mhz, ma molte schede madri
 e dispositivi periferici possono essere fatti funzionare a frequenze
 pi� elevate. La frequenza di clock per il bus ISA solitamente pu�
 essere impostata nel CMOS setup, selezionando un divisore della
 frequenza di clock della scheda madre/CPU.  Alcune schede madri ISA e
 PCI/ISA possono non avere questa opzione e quindi si � incastrati
 nelle impostazioni di fabbrica.

 Per esempio, ecco qui alcune velocit� di ricezione misurate dal
 programma TTCP su un 486 a 40Mhz, con una scheda a 8 bit WD8003EP, a
 diverse velocit� del bus ISA.


 ______________________________________________________________________
         Velocit� bus ISA (MHz)     Rx TTCP (kB/s)
         ----------------------    --------------
         6.7                       740
         13.4                      970
         20.0                      1030
         26.7                      1075
 ______________________________________________________________________



 Voglio vedere chi riesce a far meglio di 1075kB/s con una qualsiasi
 scheda Ethernet a 10Mb/s usando TCP/IP.  Comunque, non ci si aspetti
 che qualsiasi sistema funzioni a velocit� del bus ISA molto elevate.
 La maggior parte dei sistemi non funzioneranno correttamente a
 velocit� superiori a 13MHz (inoltre, in alcuni sistemi PCI la velocit�
 del bus ISA � fissata a 8 Mhz, cosicch� l'utente finale non ha la
 possibilit� di incrementarla).

 Oltre a una velocit� di trasferimento pi� elevata, si trarr� anche
 beneficio da una riduzione nell'uso della CPU dovuta alla durata
 minore dei cicli di memoria e di I/O (si noti che anche i dischi fissi
 e le schede video presenti nel bus ISA mostreranno solitamente un
 aumento delle prestazioni dovuto all'incremento della velocit� del bus
 ISA).

 Ci si assicuri di fare un back up dei propri dati prima di fare
 esperimenti con velocit� del bus ISA superiori agli 8Mhz e di
 controllare accuratamente che tutte le periferiche ISA funzionino
 correttamente dopo aver fatto qualsiasi incremento alla velocit� del
 bus.


 4.3.  Impostare la finestra TCP di ricezione (TCP Rx Window)


 Ancora una volta, le schede con poca memoria RAM a bordo e percorsi
 dati tra la scheda e la memoria del computer relativamente lenti
 avranno problemi.  L'impostazione predefinita per la finestra di
 ricezione TCP � di 32kB, il che significa che un computer veloce nella
 sottorete a cui appartiene la propria macchina, pu� scaricare in
 quest'ultima 32kB di dati senza fermarsi per controllare se tutti sono
 stati ricevuti correttamente.

 Le versioni recenti del comando route hanno la possibilit� di
 impostare al volo la dimensione di questa finestra.  Solitamente la
 riduzione della dimensione di questa finestra � necessaria solo per la
 rete locale, poich� i computer che sono dietro ad un paio di router e
 gateway sono abbastanza `bufferizzati' da non porre problemi.  Un
 esempio d'uso potrebbe essere:


 ______________________________________________________________________
         route add <qualcosa> ... window <dim_fin>
 ______________________________________________________________________



 dove dim_fin � la dimensione della finestra che si vuole usare (in
 byte).  Una scheda 3c503 a 8 bit su un bus ISA che va a 8Mhz o meno
 dovrebbe funzionare bene con una dimensione della finestra di circa
 4kB.  Una finestra troppo grande causer� drop e overrun dei pacchetti
 e una riduzione drastica del throughput.  Si pu� verificare lo stato
 operativo facendo cat /proc/net/dev che mostrer� tutte le situazioni
 di drop/overrun avvenute.


 4.4.  Incrementare le prestazioni NFS

 Alcuni hanno scoperto che l'uso di una scheda a 8 bit in client NFS
 causa prestazioni pi� povere di quelle che ci si aspetta, quando si
 usa la dimensione dei paccheti NFS di 8kB (nativa della Sun).

 Una possibile causa per questa cosa potrebbe essere la differente
 dimensione del buffer a bordo tra schede a 8 e 16 bit.  La dimensione
 massima di un pacchetto Ethernet � circa 1500 byte.  Affinch� arrivi
 un pacchetto NFS di 8kB ci vogliono circa sei pacchetti back to back
 Ethernet di dimensione massima.  Sia le schede a 8 bit che quelle a 16
 non hanno problemi a ricevere pacchetti back to back.  Il problema
 sorge quando la macchina non rimuove in tempo i pacchetti dal buffer
 della scheda e il buffer va in overflow.  E nemmeno il fatto che le
 schede a 8 bit necessitano di un ulteriore ciclo di bus ISA per ogni
 trasferimento aiuta.  Quel che si pu� fare se si ha una scheda a 8 bit
 � di impostare la dimensione del trasferimento NFS a 2kB (o anche 1kB)
 o provare a incrementare la velocit� del bus ISA per far s� che il
 buffer della scheda venga ripulito pi� velocemente. Ho scoperto che
 una vecchia scheda WD8003E a 8MHz (senza altro carico di sistema) pu�
 sostenere grosse ricezioni a dimensioni NFS di 2kB, ma non a 4kB, dove
 le prestazioni si degradano di un fattore tre.

 D'altra parte, se l'opzione predefinita di mount � di usare la
 dimensione di 1kB e si ha almeno una scheda isa a 16 bit, si trover�
 un incremento significativo nel passare a 4kB (o anche 8kB).


 5.  Informazioni specifiche su rivenditori, produttori e modelli

 Nel seguito sono elencate molte schede in ordine alfabetico per nome
 del rivenditore (produttore) e poi identificativo del prodotto.  Oltre
 all'ID di ciascun prodotto, ci potr� essere ``Supportata'', ``Semi
 supportata'' oppure ``Non supportata''.

 Supportata significa che esiste un driver per la scheda e molti lo
 stanno usando felicemente e sembra quindi abbastanza affidabile.

 Semi supportata significa che esiste un driver, ma � vera almeno una
 delle descrizioni seguenti: (1) Il driver e/o l'hardware ha dei bug
 che possono provocare prestazioni scadenti, fallimenti di connessione
 e persino crash.  (2) Il driver � nuovo e la scheda � poco comune e
 quindi il driver � stato poco usato/collaudato e il suo autore ha
 quindi ricevuto pochi riscontri. Ovviamente la (2) � preferibile alla
 (1) e la descrizione di ciascuna scheda/driver dovrebbe chiarire quale
 delle due valga.  In entrambi i casi, probabilmente sar� necessario
 rispondere `Y' (s�) alla domanda ``Prompt for development and/or
 incomplete code/drivers?'' quando si lancia make config.

 Non supportata significa invece che attualmente non � disponibile
 alcun driver per quella scheda.  Ci� pu� essere dovuto alla mancanza
 d'interesse nell'hardware che � raro/poco comune, o al fatto che il
 produttore non vuole rilasciare la documentazione sull'hardware
 necessaria per scrivere un driver.

 Si noti che la differenza tra ``Supportata'' e ``Semi supportata'' �
 abbastanza soggettiva ed � basata sui commenti degli utenti osservati
 nei messaggi inviati ai vari newsgroup e mailing list (dopo tutto, �
 impossibile per una persona sola collaudare tutti i driver con tutte
 le schede per ogni versione del kernel!!!).  Quindi si faccia
 attenzione perch� pu� succedere che si trovi una scheda segnata come
 semi-supportata, che nel proprio caso funziona perfettamente (il che �
 bene), oppure una scheda indicata come supportata, che in realt� d�
 una serie infinita di problemi (il che non � proprio bene).

 Dopo lo stato, c'� il nome che il driver ha nel kernel di Linux.
 Questo � anche il nome del modulo del driver che si potrebbe usare
 nella riga alias eth0 nome_driver presente nel file di configurazione
 dei moduli /etc/conf.modules.



 5.1.  3Com

 Se non si � sicuri di cosa sia la propria scheda, ma si pensa che sia
 una scheda 3Com, probabilmente lo si pu� scoprire dal numero di
 assemblaggio. La 3Com ha un documento `Identifying 3Com Adapters By
 Assembly Number' (ref 24500002) che molto probabilmente far� al
 proprio caso.  Si veda ``Informazioni tecniche dalla 3Com'' per
 maggiori informazioni su come ottenere documenti dalla 3Com.
 Si noti inoltre che la 3Com ha un sito FTP con diverse cose carine:
 ftp.3Com.com.

 Quelli che leggono questo documento tramite un browser WWW, possono
 provare a vedere anche nel sito WWW della 3Com.


 5.1.1.  3c501

 Stato: Semi supportata, Nome del Driver: 3c501

 Questa obsoleta scheda a 8 bit dell'et� della pietra � veramente
 troppo ``demente'' per poter essere usata.  La si eviti come la peste.
 Non si compri questa scheda, nemmeno per scherzo.  Le sue prestazioni
 sono orribili ed ha un sacco di problemi.

 Per quelli che non sono ancora convinti, la 3c501 pu� solamente fare
 una cosa alla volta: mentre sta rimuovendo un pacchetto dal buffer non
 pu� ricevere un altro pacchetto, nemmeno pu� riceverne uno mentre sta
 caricando un pacchetto trasmesso.  Questa cosa andava bene per le reti
 composte da computer basati su 8088 dove l'elaborazione di un
 pacchetto e la risposta richiedevano decine di millisecondi, ma le
 reti moderne inviano pacchetti back-to-back (uno dopo l'altro)
 praticamente per qualsiasi transazione.

 L'autoIRQ funziona, non � usato il DMA, l'autoprobe cerca solo a 0x280
 e a 0x300 e il livello di debug � impostato con il terzo argomento al
 momento del boot.

 Ancora una volta, l'uso della 3c501 � vivamente sconsigliato!  Ancora
 di pi� con un kernel con l'IP multicast, ci si inchioder� mentre si
 ascoltano tutti i pacchetti multicast.  Si vedano i commenti in cima
 al codice sorgente per ulteriori dettagli.


 5.1.2.  EtherLink II, 3c503, 3c503/16

 Stato: Supportata, Nome del driver: 3c503 (+8390)

 La 3c503 non ha un ``EEPROM setup'' e quindi non � necessario eseguire
 nessun programma di diagnostica/setup prima di usare la scheda con
 Linux.  L'indirizzo della memoria condivisa della 3c503 � impostato
 usando i ponticelli in comune con l'indirizzo della PROM di boot.  Ci�
 confonde molta gente che ha familiarit� con altre schede ISA, dove di
 solito si lascia sempre il ponticello impostato per ``disabilitare'' a
 meno che non si abbia una PROM di boot.

 Queste schede dovrebbero andare alla stessa velocit� delle WD80x3 a
 pari larghezza di bus, ma in realt� sono un po' pi� lente.  Queste
 schede Ethernet hanno anche un modalit� ad I/O programmato che non usa
 le funzionalit� offerte dal 8390 (gli ingegneri della 3Com hanno
 scoperto troppi bachi!).  Il driver 3c503 di Linux funziona anche con
 la 3c503 in modalit� I/O programmato, ma � pi� lento e meno affidabile
 rispetto alla modalit� a memoria condivisa.  Inoltre la modalit� ad
 I/O programmato non viene ben collaudata quando vengono aggiornati i
 driver.  Non si dovrebbe usare la modalit� in I/O programmato a meno
 che non se ne abbia bisogno per compatibilit� con MS-DOS.

 La linea IRQ della 3c503 � impostata nel software, con nessun
 suggerimento da parte della EEPROM.  Diversamente dal driver MS-DOS,
 quello per Linux ha la funzionalit� di autoIRQ: usa la prima linea IRQ
 libera fra {5,2/9,3,4}, selezionandola ogni volta che la scheda �
 configurata con ifconfig (versioni pi� vecchie del driver selezionano
 l'IRQ all'avvio).  La chiamata ioctl() in `ifconfig' restituir� EAGAIN
 se non c'� alcuna linea IRQ disponibile.

 Alcuni problemi comuni che la gente ha con la 503 sono discussi in
 ``Problemi con...''.

 Se si intende usare questo driver come modulo caricabile probabilmente
 si dovrebbe vedere ``Utilizzare i driver Ethernet come moduli'' per
 informazioni specifiche sui moduli.

 Si noti che alcune vecchie workstation diskless (senza dischi) 386
 hanno gi� una 3c503 (fatta dalla 3Com e venduta sotto nome diverso,
 come `Bull') ma l'ID di produzione non � un ID 3Com e quindi non sar�
 rilevata.  Maggiori dettagli possono essere trovati nel pacchetto
 Etherboot, di cui si avr� comunque bisogno per avviare queste macchine
 diskless.


 5.1.3.  Etherlink Plus 3c505

 Stato: Semi supportata, Nome del driver: 3c505

 � un driver che era stato scritto da Craig Southeren
 [email protected].  Queste schede usano anche il chip i82586.
 Non ci sono poi tante schede di questo tipo in giro.  � incluso nel
 kernel standard, ma viene dichiarato come driver alpha.  Si veda la
 sezione ``Driver alpha'' per importanti informazioni sull'uso con
 Linux di driver Ethernet in alpha-test.

 Se si ha intenzione di usare una di queste schede si dovrebbe leggere
 anche il file /usr/src/linux/drivers/net/README.3c505.  Contiene
 diverse opzioni che si possono abilitare o disabilitare.


 5.1.4.  Etherlink-16 3c507

 Stato: Semi supportata, Nome del driver: 3c507

 Questa scheda usa uno dei chip Intel e lo sviluppo del driver �
 strettamente legato allo sviluppo del driver per la Ether Express
 dell'Intel.  Il driver � incluso nel kernel standard, ma come driver
 sperimentale.  Si veda la sezione ``Driver alpha'' per importanti
 informazioni sull'uso con Linux di driver Ethernet in alpha-test.


 5.1.5.  Etherlink III, 3c509 / 3c509B

 Stato: Supportata, Nome del driver: 3c509

 Questa scheda � piuttosto economica e ha buone prestazioni per essere
 una ISA senza bus-master.  Gli svantaggi sono che la 3c509 originale
 richiede una latenza di interrupt molto bassa.  La 3c509B non dovrebbe
 soffrire dello stesso problema, poich� ha un buffer pi� grande (vedere
 sotto).  Queste schede usano i trasferimenti PIO, analogamente a una
 scheda ne2000 e quindi, in confronto, una scheda a memoria condivisa
 come una wd8013 sar� pi� efficiente.

 La 3c509 originale ha un buffer per i pacchetti piccolino (4kB totali,
 2kB Rx, 2k Tx), cosicch� qualche volta il driver perde dei pacchetti
 se gli interrupt sono mascherati troppo a lungo.  Per minimizzare
 questo problema, si pu� provare a non mascherare gli interrupt durante
 i trasferimenti dei dischi IDE (si veda man hdparm) e/o a incrementare
 la velocit� del proprio bus ISA cosicch� i trasferimenti dei dischi
 IDE terminino prima.

 Il pi� recente modello 3c509B ha 8kB sulla scheda e il buffer pu�
 essere diviso in 4/4, 5/3 o 6/2 per Rx/Tx.  Questa impostazione �
 modificabile con l'utilit� di configurazione DOS ed � salvata nella
 EEPROM.  Questo dovrebbe alleviare il suddetto problema della 3c509
 originale.

 Gli utilizzatori della 3c509B dovrebbero usare l'utilit� DOS fornita
 per disabilitare il supporto plug and play e per impostare il tipo di
 uscita di cui si ha bisogno.  Il driver per Linux attualmente non
 supporta la ``Autodetect media setting'', quindi si deve selezionare
 10Base-T, 10Base-2 oppure AUI.  Si noti che per disabilitare
 completamente il PnP, si dovrebbe fare un 3C5X9CFG /PNP:DISABLE e poi
 farlo seguire da un reset della macchina per assicurarsi che abbia
 avuto effetto.

 Alcuni chiedono delucidazioni sulle impostazioni ``Server or
 Workstation'' e ``Highest Modem Speed'' presenti nella utilit� di
 configurazione sotto DOS.  Donald scrive �Questi sono solo degli hint
 ai driver e il driver di Linux non usa questi parametri: ottimizza
 sempre per la massima velocit� di trasferimento piuttosto che per la
 bassa latenza (`Server').  La bassa latenza era di importanza critica
 per i vecchi throughput IPX non-windowed.  Per ridurre la latenza il
 driver MS-DOS per la 3c509 disabilita gli interrupt per alcune
 operazioni, bloccando gli interrupt per la porta seriale.  Da qui la
 necessit� dell'impostazione `modem speed'.  Il driver per Linux
 rimuove la necessit� di disabilitare gli interrupt per lunghi periodi
 di tempo operando solo su interi pacchetti, ad esempio non cominciando
 a trasmettere un pacchetto finch� non sia stato completamente
 trasferito nella scheda.�

 Si noti che il rilevamento della scheda ISA usa un metodo diverso
 rispetto a quello di molte schede.      In sostanza, si chiede alla
 scheda di rispondere inviando dati ad una ID_PORT (le porte da 0x100 a
 0x1ff con intervalli di 0x10).  Questo rilevamento implica che una
 scheda particolare sar� sempre rilevata per prima in una
 configurazione con pi� 3c509 ISA.  La scheda con il pi� basso
 indirizzo Ethernet hardware alla fin fine sar� sempre la eth0.  Questa
 cosa non dovrebbe preoccupare nessuno, tranne quelli che vogliono
 assegnare un indirizzo hardware da 6 byte a una particolare
 interfaccia.  Se si hanno pi� schede 3c509, la cosa migliore �
 aggiungere i comandi ether=0,0,ethN senza specificare la porta di I/0
 (ovvero si usi I/O=zero) e permettere al rilevamento di determinare
 quale scheda � la prima.  L'uso di un valore I/O non nullo assicura
 solamente che non saranno rilevate tutte le schede, quindi non lo si
 faccia.

 Se questa cosa veramente vi risulta noiosa, si dia un'occhiata
 all'ultimo driver di Donald, in quanto si pu� essere in grado di usare
 un valore 0x3c509 nei campi dell'indirizzo di memoria inutilizzati per
 ordinare il rilevamento ed adattarlo alle proprie necessit�.


 5.1.6.  3c515

 Stato: Supportata, Nome del driver: 3c515

 Questa scheda, nome in codice ``CorkScrew'', � la scheda a 100Mbps ISA
 offerta dalla 3COM.  Un driver relativamente nuovo di Donald � incluso
 nei kernel v2.2.  Per informazioni pi� aggiornate, probabilmente si
 dovrebbe guardare nella pagina relativa alla Vortex:

 Vortex <http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html>



 5.1.7.  3c523

 Stato: Semi supportata, Nome del driver: 3c523


 Questa scheda su bus MCA usa l'i82586. Chris Beauregard ha modificato
 il driver ni52 per farlo funzionare con queste schede.  Il driver pu�
 essere trovato nell'albero dei sorgenti dei kernel v2.2.

 Maggiori dettagli possono essere trovati nella pagina di MCA-Linux a
 http://glycerine.cetmm.uni.edu/mca/.


 5.1.8.  3c527

 Stato: Non supportata.

 S�, un'altra scheda MCA.  No, non risquote molto interesse.  Se si �
 impelagati con l'MCA maggior fortuna la si ha con la 3c529.


 5.1.9.  3c529

 Stato: Supportata, Nome del driver: 3c509

 Questa scheda in realt� usa lo stesso chipset della 3c509.  Molto
 prima che il supporto MCA fosse aggiunto al kernel, Donald ha messo un
 hook nel driver della 3c509 che cerca le schede MCA dopo aver provato
 a rilevare quelle EISA e prima di cercare le ISA.  Il codice di
 rilevamento richiesto � incluso nel driver distribuito con i kernel
 v2.2.  Maggiori dettagli nella pagina di MCA-Linux a

 http://glycerine.cetmm.uni.edu/mca/


 5.1.10.  3c562

 Stato: Supportata, Nome del driver: 3c589 (distribuito separatamente)

 Questa scheda PCMCIA � la combinazione di una scheda Ethernet 3c589B
 con un modem.  All'utente finale il modem appare come un modem
 normalissimo.  La sola difficolt� � far s� che i due driver di Linux
 condividano lo stesso interrupt.  C'� il supporto per alcuni nuovi
 registri e un po' per la condivisione degli interrupt hardware.  Si
 deve usare un kernel v.2.0 o pi� recenti che ha il supporto per la
 condivisione degli interrupt.


 Grazie ancora a Cameron per aver fornito a David Hinds un campione di
 questo prodotto e la documentazione.  Il supporto lo si cerchi nel
 pacchetto PCMCIA di David.

 Si veda la sezione ``Supporto PCMCIA'' per maggiori informazioni sui
 chipset PCMCIA, abilitatori di socket, ecc.


 5.1.11.  3c575

 Stato: Sconosciuto.

 � in sviluppo un driver per questa scheda PCMCIA e si spera che in
 futuro sia incluso nel pacchetto PCMCIA di David.  Per sapere lo stato
 attuale � meglio controllare nel pacchetto PCMCIA.



 5.1.12.  3c579

 Stato: Supportata, Nome del driver: 3c509


 La versione EISA della 509.  La versione EISA attuale usa lo stesso
 chip a 16 bit invece che un interfaccia a 32 bit, quindi l'incremento
 di prestazioni non � meraviglioso.  Ci si assicuri che la scheda sia
 configurata per la modalit� di indirizzamento EISA.  Si legga la
 sezione precedente sulla 3c509 per informazioni sul driver.


 5.1.13.  3c589 / 3c589B

 Stato: Semi-supportata, Nome del driver: 3c589

 Molti stanno usando questa scheda PCMCIA da un po' di tempo.  Si noti
 che il supporto non � (al momento) incluso nell'albero dei sorgenti
 del kernel.  La ``B'' nel nome significa la stessa cosa che nel caso
 della 3c509.

 Sono disponibili dei driver nel sito ftp di Donald e nel pacchetto
 PCMCIA di David Hinds.  Sar� necessario avere anche un controller
 PCMCIA supportato.  Si veda la sezione ``Supporto PCMCIA'' per
 maggiori informazioni su driver, chipset, abilitatori di socket
 PCMCIA, ecc.


 5.1.14.  3c590 / 3c595

 Stato: Supportate, Nome del driver: 3c59x

 Queste schede ``Vortex'' sono per macchine a bus PCI: '590 � l'offerta
 3Com per i 10Mbps mentre la '595 � l'offerta per i 100Mbs.  Si noti
 inoltre che si pu� usare la '595 come una '590 (cio� in modalit� a
 10Mbps).  Il driver � incluso nei sorgenti del kernel v2.0, ma �
 continuamente aggiornato.  Se si hanno problemi con il driver nel
 kernel v2.0, si pu� trovare un driver pi� aggiornato partendo dall'URL
 seguente:

 Vortex <http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html>

 Si noti che in giro si sono due diverse schede 3c590: i primi modelli
 con 32kB di memoria sulla scheda e gli ultimi modelli che hanno solo
 8kB di memoria.  � possibile che non si sar� in grado di trovare una
 nuova 3c59x sul mercato ancora per molto, poich� � stata sostituita
 con la 3c90x.  Se si vuole comprarne una usata da qualcuno, si provi a
 trovare la versione con 32kB.  La 3c595 ha 64kB, in quanto non si pu�
 andare molto lontano con soli 8kB a 100Mbps!

 Un ringraziamento a Cameron Spitzer e Terry Murphy della 3Com per aver
 inviato schede e documentazione a Donald cosicch� ha potuto scrivere
 il driver.

 Donald ha messo su una mailing list per il supporto al driver Vortex.
 Per unirsi alla lista, si faccia semplicemente:

 echo subscribe | /bin/mail [email protected]



 5.1.15.  3c592 / 3c597

 Stato: Supportate, Nome del driver: 3c59x

 Queste sono le versioni EISA della serie di schede 3c59x.  Le
 3c592/3c597 (altrimenti note come Demon) dovrebbero funzionare con il
 driver vortex discusso in precedenza.



 5.1.16.  3c900 / 3c905 / 3c905B

 Status: Supportate, Nome del driver Name: 3c59x

 Queste schede (altrimenti note come `Boomerang' o EtherLink III XL)
 sono state realizzate per prendere il posto delle schede 3c590/3c595.

 Il supporto per la revisione `B' (Cyclone) � stato aggiunto solo di
 recente.  Per usare questa scheda con i vecchi kernel v2.0, si deve
 ottenere il driver 3c59x.c aggiornato dal sito di Donald a:

 Vortex-Page <http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html>

 Per qualsiasi dubbio si veda la pagina WWW suddetta.  Donald ha messo
 su una mailing list per il supporto del driver Vortex, annunci, ecc.
 Per unirsi alla lista, si faccia semplicemente:

 echo subscribe | /bin/mail [email protected]


 5.1.17.  3c985

 Stato: Supportata, Nome del driver: acenic

 Questo driver di Jes Sorensen � disponibile nei kernel v2.2.  Supporta
 diverse altre schede Gigabit oltre al modello 3Com.


 5.2.  Accton



 5.2.1.  Accton MPX

 Stato: Supportata, Nome del driver: ne (+8390)

 Non ci si faccia ingannare dal nome.  Questa � una scheda compatibile
 con la NE2000 e dovrebbe funzionare con il driver ne2000.


 5.2.2.  Accton EN1203, EN1207, EtherDuo-PCI

 Stato: Supportata, Nome del driver: de4x5, tulip

 Questa � un'altra implementazione del chip PCI 21040 della DEC.  La
 scheda EN1207 ha il 21140 e ha pure un connettore 10Base-2, che si �
 dimostrato causare un po' di problemi a qualcuno nella selezione di
 quel mezzo.  Per altri ha funzionato bene usando la scheda con 10Base-
 T e 100Base-T.  Quindi come per qualsiasi acquisto, la si dobrebbe
 provare assicurandosi di poterla restituire nel caso non funzioni.

 Si veda ``DEC 21040'' per maggiori informazioni su queste schede e la
 situazione attuale del driver.


 5.2.3.  Accton EN2209 Parallel Port Adaptor (EtherPocket)

 Stato: Semi supportata, Nome del driver: ?

 � disponibile un driver per questi adattatori su porta parallela ma
 non fa ancora parte dei sorgenti del kernel 2.0 e 2.1.  Si deve
 scaricare il driver da:

 http://www.unix-ag.uni-siegen.de/~nils/accton_linux.html


 5.2.4.  Accton EN2212 PCMCIA Card

 Stato: Semi supportata, Nome del driver: ?

 David Hinds stava lavorando su un driver per questa scheda e quindi
 per conoscere lo stato attuale la cosa migliore � quindi quella di
 controllare l'ultima release del suo pacchetto PCMCIA.


 5.3.  Allied Telesyn/Telesis



 5.3.1.  AT1500

 Stato: Supportata, Nome del driver: lance

 Questa � una serie di schede Ethernet a bassa costo che usa la
 versione 79C960 del chip LANCE dell'AMD. Sono schede bus-master e
 quindi fra le pi� veloci schede Ethernet per bus ISA disponibili.

 Informazioni sulla selezione del DMA e la numerazione del chip possono
 essere trovate in ``AMD LANCE''.

 Informazioni tecniche aggiuntive sulle schede Ethernet basate su AMD
 LANCE possono essere trovate nella sezione ``Note su AMD...''.


 5.3.2.  AT1700

 Stato: Supportata, Nome del driver: at1700

 Si noti che per accedere a questo driver durante il make config si
 deve ancora rispondere `Y' alla domanda iniziale ``Prompt for
 development and/or incomplete code/drivers?''.  Ci� � dovuto
 semplicemente allo scarso responso avuto sulla stabilit� del driver a
 causa della relativa rarit� della scheda.  Se si hanno problemi con il
 driver distribuito assieme al kernel, pu� interessare un driver
 alternativo reperibile a:

 http://www.cc.hit-u.ac.jp/nagoya/at1700/

 La serie di schede Ethernet AT1700 della Allied Telesis sono basate
 sul chip MB86965 della Fujitsu.  Questo chip usa un'interfaccia ad I/O
 programmato e una coppia di buffer di trasmissione di dimensione
 fissa.  Ci� permette l'invio back-to-back di piccoli gruppi di
 pacchetti, con una breve pausa durante lo scambio dei buffer.

 Una caratteristica unica � l'abilit� di pilotare un cavo STP (Shielded
 Twisted Pair - doppino intrecciato schermato) da 15 Ohm comunemente
 utilizzato per il Token Ring, oltre ai cavi UTP (unshielded twisted
 pair - doppino intrecciato non schermato) da 100 Ohm del 10baseT.
 Della scheda ne esiste pure una versione per fibra ottica (AT1700FT).

 Il chip Fujitsu utilizzato nella AT1700 ha un difetto di
 progettazione: pu� essere reinizializzato completamente solo operando
 un ciclo completo di alimentazione della macchina.  Premendo solamente
 il pulsante di reset non si inizializza l'interfaccia.  Questo non
 sarebbe tanto male, tranne per il fatto che pu� essere rilevata in
 modo affidabile solo quando � stata reinizializzata.  La
 soluzione/work-around � di spegnere la macchina se il kernel ha
 problemi a rilevare l'AT1700.




 5.3.3.  AT2450

 Stato: Supportata, Nome del driver: pcnet32

 Questa � la versione PCI della AT1500 e non soffre dei problemi cha ha
 la scheda PCI 79c970 della Boca.  Informazioni sulla selezione del DMA
 e la numerazione del chip possono essere trovate nella sezione ``AMD
 LANCE''.

 Ulteriori informazioni tecniche sulle schede Ethernet basate sul LANCE
 dell'AMD possono essere trovate nella sezione ``Note su AMD...''.


 5.3.4.  AT2500

 Stato: Semi supportata, Nome del driver: rtl8139

 Questa scheda usa il chip 8139 della RealTek.  Si veda la sezione
 ``RealTek 8139''.


 5.3.5.  AT2540FX

 Stato: Semi supportata, Nome del driver: eepro100

 Questa scheda usa il chip i82557 e quindi pu�/potrebbe funzionare con
 il driver eepro100.  Se la si prova si � invitati ad inviare un
 rapporto cosicch� queste informazioni possano essere aggiornate.


 5.4.  AMD / Advanced Micro Devices


 Carl Ching dell'AMD � stato talmente gentile da fornire descrizioni
 molto dettagliate su tutti i pi� importati prodotti Ethernet dell'AMD
 che mi hanno aiutato a chiarire un po' questa sezione.


 5.4.1.  AMD LANCE (7990, 79C960/961/961A, PCnet-ISA)

 Stato: Supportata, Nome del driver: lance

 In realt� non ci sono schede Ethernet dell'AMD.  Probabilmente si sta
 leggendo questa sezione perch� le sole cose che si possono leggere
 sopra la propria scheda dicono AMD e uno dei numeri suddetti.  Il 7990
 � il chip `LANCE' originale, ma molte cose (tra cui questo documento)
 fanno riferimento a tutti questi chip simili come chip `LANCE'
 (...incorrettamente potrei aggiungere).

 Questi numeri fanno riferimento a chip dell'AMD che sono il cuore di
 molte schede Ethernet.  Per esempio la AT1500 della Allied Telesis (si
 veda la sezione ``AT1500'') e la NE1500/2100 (si veda la sezione
 ``NE1500'') usano questi chip.

 Il 7990/79c90 � stato da tempo rimpiazzato da nuove versioni.  Il
 79C960 (detto anche PCnet-ISA) essenzialmente contiene il nucleo della
 79c90, assieme a tutto l'altro hardware di supporto, che permette una
 soluzione Ethernet in un unico chip.  Il 79c961 (PCnet-ISA+) � una
 versione Plug and Play senza ponticelli della '960.  L'ultimo chip
 della serie ISA � il 79c961A (PCnet-ISA II), che aggiunge piene
 funzionalit� full duplex.  Tutte le schede con uno di questi chip
 dovrebbero funzionare con il driver lance.c, ad eccezione di quelle
 veramente vecchie che usano il 7990 originale in una configurazione a
 memoria condivisa.  Queste vecchie schede possono essere identificate
 dalla mancanza di jumper per il canale DMA.

 Un problema comune � la ricezione del messaggio `busmaster arbitration
 failure'.  Questo � mostrato quando il driver LANCE non pu� accedere
 al bus dopo che � passato un ragionevole intervallo di tempo (5us).
 Solitamente indica che l'implementazione del bus-master della scheda
 madre ha problemi o qualche altro dispositivo sta intasando il bus,
 oppure c'� un canale DMA in conflitto.  Se il proprio BIOS ha
 l'opzione GAT (che sta per Guaranteed Access Time -- tempo di accesso
 garantito) si provi ad attivare/alterare questa impostazione per
 vedere se � di qualche aiuto.

 Si noti inoltre che il driver cerca una scheda valida solo in questi
 indirizzi: 0x300, 0x320, 0x340, 0x360 e qualsiasi indirizzo fornito
 con l'argomento di boot ether= � ignorato silenziosamente (questa cosa
 verr� corretta).  Quindi per ora ci si assicuri che la propria scheda
 sia configurata per uno dei suddetti indirizzi I/O.

 Il driver dovrebbe funzionare ancora bene anche se sono installati pi�
 di 16 MB di memoria, in quanto, quando serve, sono usati i `bounce-
 buffer' in memoria bassa (i.e. qualsiasi dato sopra il 16 MB � copiato
 dentro un buffer sotto il 16 MB prima di essere dato alla scheda
 perch� lo trasmetta).

 Il canale DMA pu� essere impostato con i bit meno significativi
 dell'altrimenti inutilizzato valore di dev->mem_start (PARAM_1) (si
 veda ``PARAM_1'').  Se non impostato � rilevato abilitando a turno
 tutti i canali DMA liberi e controllando se l'inizializzazione ha
 successo.

 La scheda HP-J2405A � un eccezione: con questa scheda � facile leggere
 i valori impostati nella EEPROM per IRQ e DMA.

 Si veda la sezione ``Note su AMD...'' per maggiori informazioni su
 questi chip.


 5.4.2.  AMD 79C965 (PCnet-32)

 Stato: Supportata, Nome del driver: pcnet32

 Questa � la PCnet-32: una versione bus-master a 32 bit del chip LANCE
 originale per sistemi VL-bus e local bus.  Sebbene questi chip possano
 funzionare con il driver lance.c standard, � disponibile anche una
 versione a 32 bit (pcnet32.c) che non si preoccupa mai delle
 limitazioni ai 16 MB associati con il bus ISA.


 5.4.3.  AMD 79C970/970A (PCnet-PCI)

 Stato: Supportata, Nome del driver: pcnet32

 Questa � la PCnet-PCI: simile alla PCnet-32, ma progettata per i
 sistemi basati su bus PCI.  Si vedano le informazioni sulla PCnet-32.
 Si noti che � necessario compilare un kernel abilitando il supporto
 per il PCI.  La '970A aggiunge al progetto originale della '970 il
 supporto per il full duplex oltre ad altre caratteristiche.

 Si noti che l'implementazione Boca della 79C970 fallisce su macchine
 Pentium veloci.  � un problema hardware, in quanto affligge anche gli
 utenti DOS.  Si veda la sezione sulla Boca per maggiori dettagli.


 5.4.4.  AMD 79C971 (PCnet-FAST)

 Stato: Supportata, Nome del driver: pcnet32


 Questo � il chip a 100Mbit per sistemi PCI della AMD, che supporta
 anche le operazioni full duplex.  � stato introdotto nel giugno 1996.


 5.4.5.  AMD 79C972 (PCnet-FAST+)

 Stato: Sconosciuto, Nome del driver: pcnet32

 Questa dovrebbe funzionare proprio come la '971 ma la cosa non �
 ancora stata confermata.


 5.4.6.  AMD 79C974 (PCnet-SCSI)

 Stato: Supportata, Nome del driver: pcnet32

 Questa � la PCnet-SCSI, che in pratica viene trattata come una '970
 dal punto di vista Ethernet.  Si vedano anche le informazioni
 precedenti.  Non mi si chieda se � supportata la parte SCSI del chip:
 questo � Ethernet-HowTo, non lo SCSI-HowTo.


 5.5.  Ansel Communications



 5.5.1.  AC3200 EISA

 Stato: Semi-supportata, Nome del driver: ac3200

 Si noti che per accedere a questo driver durante il make config si
 deve ancora rispondere `Y' alla domanda iniziale ``Prompt for
 development and/or incomplete code/drivers?''.  Questa cosa �
 semplicemente dovuta allo scarso responso da parte degli utenti sulla
 stabilit� del driver a causa della relativa rarit� della scheda.

 Questo driver � incluso nel kernel attuale con un driver in alpha
 test.  � basata sul comune chip NS8390 usato nelle schede ne2000 e
 wd80x3.  Si veda la sezione ``Driver sperimentali'' in questo
 documento per importanti informazioni riguardanti i driver
 sperimentali.

 Se la si usa, lo si faccia sapere ad uno di noi, poich� il riscontro
 da parte degli utenti � stato basso, anche se il driver � nel kernel
 gi� a partire dalla versione 1.1.25.

 Se si intende utilizzare questo driver come modulo caricabile
 probabilmente si dovrebbe vedere la sezione ``Usare i driver Ethernet
 come moduli'' per informazioni specifiche sui moduli.


 5.6.  Apricot



 5.6.1.  Apricot Xen-II On Board Ethernet

 Stato: Semi supportata, Nome del driver: apricot

 Questa scheda Ethernet on board usa un chip i82596 bus-master.  Pu�
 essere solo all'indirizzo I/O 0x300.  Guardando nei sorgenti del
 driver, sembra anche che l'IRQ sia fissato via hardware al 10.

 Le prime versioni di questo driver avevano la tendenza a pensare che
 qualsiasi cosa presente a 0x300 fosse una NIC apricot.  Da allora
 l'indirizzo hardware � verificato per evitare questi falsi rilievi.
 5.7.  Arcnet

 Stato: Supportata, Nome del driver: arcnet (arc-rimi, com90xx,
 com20020)

 Con il costo ormai veramente basso e le migliori prestazioni di
 Ethernet, � possibile che molti posti diano via gratis il loro
 hardware Arcnet, il che risulta in un sacco di sistemi domestici con
 Arcnet.

 Un vantaggio di Arcnet � che tutte le schede hanno la medesima
 interfaccia cosicch� un unico driver funziona per tutte.  Hanno pure
 una gestione degli errori e quindi si pu� supporre che non perdano mai
 pacchetti (bellissimo per il traffico UDP!).

 Il driver arcnet di Avery Pennarun � nel kernel dalla versione 1.1.80.
 Il driver arcnet usa `arc0' come nome invece del solito `eth0' dei
 dispositivi Ethernet.  Segnalazioni di bug e racconti di successo
 possono essere inviati a:

 [email protected]

 Nel kernel standard ci sono file d'informazioni sull'impostazione dei
 ponticelli e suggerimenti generali.

 Si pu� supporre che il driver funzioni anche con le schede ARCnet a
 100Mbs!


 5.8.  AT&T


 Si noti che la StarLAN della AT&T � una tecnologia orfana, come la
 LattisNet della SynOptics e non pu� essere usata in un ambiente
 10Base-T standard, senza un hub che le `parla' entrambe.


 5.8.1.  AT&T T7231 (LanPACER+)

 Stato: Non supportata.

 Queste schede StarLAN usano un interfaccia simile a quella del chip
 i82586.  Ad un certo punto Matthijs Melchior
 ([email protected]) si era messo a giocare con il driver
 3c507 e quasi aveva qualcosa di funzionante.  Non ho sentito pi�
 niente da allora.


 5.9.  Boca Research


 S�, fanno molto pi� che solo schede seriali multiporta. :-)


 5.9.1.  Boca BEN (ISA, VLB, PCI)

 Stato: Supportata, Nome del driver: lance, pcnet32

 Questa schede sono basate sui chip PCnet dell'AMD.  Gli acquirenti
 accorti dovrebbero essere avvisati che molti utenti hanno avuto un
 sacco di problemi con queste schede VLB/PCI.  Sono stati colpiti
 specialmente i possessori di sistemi Pentium veloci.  Si noti che
 questo non � un problema del driver, in quanto colpisce anche gli
 utenti DOS/Win/NT.  Il numero del supporto tecnico della Boca � (407)
 241-8088 e pu� essere raggiunto anche a [email protected].  Le
 vecchie schede ISA non sembra soffrano dello stesso problema.
 Donald ha fatto un test comparativo tra una scheda PCI della Boca e
 una implementazione PCnet/PCI simile della Allied Telsyn e ha rilevato
 che i problemi dipendono dall'implementazione Boca del chip PCnet/PCI.
 Si pu� accedere ai risultati di questi test nel server www di Don.

 Linux at CESDIS <http://cesdis.gsfc.nasa.gov/linux/>

 La Boca sta offrendo una `warranty repair' (ripazione in garanzia) per
 i possessori di tali schede che consiste nell'aggiunta di un
 condensatore, ma sembra che la cosa non funzioni al 100% per molte
 persone, sebbene aiuti un po'.

 Se ancora si � convinti di comprare una di queste schede, allora
 almeno si provi ad ottenere una garanzia incondizionata di
 restituzione entro 7 giorni, cosicch� se non funziona bene nel proprio
 sistema, la si pu� sempre restituire.

 Per ulteriori infomazioni generali sui chip della AMD si veda ``AMD
 LANCE''.

 Informazioni tecniche ulteriori sulle schede Ethernet AMD LANCE
 possono essere trovate nella sezione ``Note su AMD...''.


 5.10.  Cabletron


 Donald scrive: �S�, un'altra di quelle compagnie che non vuole
 rilasciare le sue informazioni per la programmazione.  Hanno aspettato
 mesi prima di confermare che tutte le loro informazioni erano
 proprietarie, sprecando deliberatamente il mio tempo.  Se si pu� si
 evitino queste schede come la peste.  Si noti che ad alcuni che hanno
 telefonato alla Cabletron sono state dette cose del tipo `un certo D.
 Becker sta lavorando su un driver per Linux' -- facendo sembrare che
 io lavori per loro.  Questo NON � vero.�


 Apparentemente la Cabletron ha cambiato la sua politica riguardo le
 informazioni per la programmazione (come la Xircom) da quando Donald
 ha fatto quei commenti parecchi anni fa: si mandi una email a
 [email protected] se si vuole verificare questa cosa o chiedere le
 infomazioni per la programmazione.  Comunque, a questo punto, c'� una
 richiesta minima per driver modificati/aggiornati per le vecchie
 schede E20xx e E21xx.


 5.10.1.  E10**, E10**-x, E20**, E20**-x

 Stato: Semi supportate, Nome del driver: ne (+8390)

 Queste sono praticamente dei cloni delle NEx000 che si dice funzionino
 con i driver standard NEx000, grazie a un controllo specifico durante
 il rilevamento.  Se ci sono dei problemi, difficilmente possono essere
 risolti, poich� non sono disponibili le informazioni per la
 programmazione.


 5.10.2.  E2100

 Stato: Semi supportata, Nome del driver: e2100 (+8390)

 Ancora, non si pu� fare molto quando le informazioni per la
 programmazione sono proprietarie.  Le E2100 ha un pessimo progetto.
 Ogniqualvolta mappa la sua memoria condivisa durante un trasferimento
 di pacchetti, la mappa dentro un'intera regione di 128K!  Ci�
 significa che in quella regione non si pu� usare con sicurezza un
 altro dispositivo gestito a memoria condivisa, nemmeno un'altra E2100.
 Funzioner� per maggior parte del tempo, ma tutto un tratto non lo far�
 pi� (s�, questo problema pu� essere evitato disabilitando gli
 interrupt mentre si trasferiscono i pacchetti, ma quasi certamente si
 perderanno colpi di clock).  Inoltre, se si mal programma la scheda o
 si ferma la macchina proprio al momento sbagliato, nemmeno il bottone
 di reset sar� utile. Si deve spegnere la macchina e lasciarla spenta
 per almeno 30 secondi.

 La selezione del mezzo � automatica, ma volendo lo si pu� imporre con
 i bit meno significativi del parametro dev->mem_end.  Se veda
 ``PARAM_2''.  Gli utilizzatori dei moduli possono specificare un
 valore xcvr=N come options nel file /etc/conf.modules.

 Inoltre, non si scambi la E2100 per un clone della NE2100.  La E2100 �
 un NetSemi DP8390 a memoria a condivisa, ``rozzamente'' simile alla
 demente della WD8013, mentre la NE2100 (e la NE1500) usano un AMD
 LANCE con bus-mastering.

 Nel kernel standard � incluso un driver per la E2100.  Comunque,
 poich� non sono disponibili informazioni per la programmazione, non si
 aspettino le correzioni di eventuali bachi.  Non se ne usi una a meno
 che non la si possegga gi�.

 Se si ha intenzione di usare questo driver come modulo caricabile
 probabilmente si dovrebbe vedere la sezione ``Usare i driver Ethernet
 come moduli'' per infomazioni specifiche sui moduli.


 5.10.3.  E22**

 Stato: Semi supportata, Nome del driver: lance

 Secondo le infomazioni in un bollettino tecnico della Cabletron,
 queste schede usano il chip PC-Net dell'AMD (si veda ``AMD PC-Net'') e
 dovrebbero quindi funzionare con il driver lance generico.


 5.11.  Cogent


 Ecco come e dove possono essere raggiunti:


         Cogent Data Technologies, Inc.
         175 West Street, P.O. Box 926
         Friday Harbour, WA 98250, USA.

         Cogent Sales
         15375 S.E. 30th Place, Suite 310
         Bellevue, WA 98007, USA.

         Supporto tecnico:
         Telefono (360) 378-2929 tra le 8 e 17 PST
         Fax (360) 378-2882
         Compuserve GO COGENT
         Bulletin Board Service (360) 378-5405
         Internet: [email protected]




 5.11.1.  EM100-ISA/EISA

 Stato: semi supportata, Nome del driver: smc9194

 Queste schede usano il chip SMC 91c100 e potrebbero funzionare con il
 driver per SMC 91c92, ma la cosa non � ancora stata verificata.


 5.11.2.  Cogent eMASTER+, EM100-PCI, EM400, EM960, EM964

 Stato: Supportate, Nome del driver: de4x5, tulip

 Queste sono un'altra implementazione del DEC 21040 che quindi dovrebbe
 funzionare tranquillamente con il driver standard per il 21040.

 La EM400 e la EM964 sono schede a quattro porte che usano un bridge
 DEC 21050 e 4 chip 21040.

 Si veda ``DEC 21040'' per maggiori informazioni su queste schede e la
 situazione attuale.


 5.12.  Compaq


 La Compaq non � veramente in affari per la costruzione di schede
 Ethernet, ma un sacco di loro sistemi hanno controller Ethernet
 integrati nella scheda madre.


 5.12.1.  Compaq Deskpro / Compaq XL (Embedded AMD Chip)

 Stato: Supportati, Nome del driver: pcnet32

 Le macchine come quella della serie XL hanno un chip PCI 79c97x
 dell'AMD nella scheda madre che pu� essere usato con il driver LANCE
 standard.  Ma prima di usarlo, si devono utilizzare alcuni trucchetti
 per far s� che il BIOS PCI si metta in un posto dove Linux lo possa
 vedere.  Frank Maas � stato cos� gentile da fornire i dettagli
 operativi:

 �Il problema con questa macchina Compaq � che la directory PCI �
 caricata in memoria alta, in un punto che il kernel di Linux non pu�
 (non vuole) raggiungere.  Risultato: la scheda non � mai rilevata e
 nemmeno usabile (altro effetto: non funziona nemmeno il mouse).  Il
 workaround (come descritto approfonditamente in http://www-
 c724.uibk.ac.at/XL/) � di caricare MS-DOS, lanciare un piccolo driver
 che ha scritto la Compaq e poi caricare il kernel di Linux usando
 LOADLIN.  Ok, vi do il tempo per dire `yuck, yuck', ma per ora questo
 � il solo metodo che conosco.  Il driver semplicemente sposta la
 directory PCI nel posto dov'� di solito (e dove Linux la pu�
 trovare).�

 Ulteriori informazioni generali sui chip AMD possono essere trovate in
 ``AMD LANCE''.


 5.12.2.  Compaq Nettelligent/NetFlex (Embedded ThunderLAN Chip)

 Stato: Supportata, Nome del driver: tlan

 Questi sistemi usano un chip ThunderLAN della Texas Instruments.
 Informazioni sul driver ThunderLAN possono essere trovare in
 ``ThunderLAN''.


 5.13.  Danpex



 5.13.1.  Danpex EN9400

 Stato: Supportata, Nome del driver: de4x5, tulip

 Ecco un'altra scheda basata sul chip 21040 della DEC, che si dice
 funzioni bene e che costa relativamente poco.

 Si veda ``DEC 21040'' per maggiori informazioni su queste schede e
 l'attuale situazione del driver.


 5.14.  D-Link



 5.14.1.  DE-100, DE-200, DE-220-T, DE-250

 Stato: Supportata, Nome del driver: ne (+8390)

 Alcune delle prime schede D-Link non avevano la firma (signature) 0x57
 nella PROM, ma il driver ne2000 ne � conscio.  Per quanto riguarda le
 schede configurabili via software, si pu� scaricare il programma di
 configurazione da www.dlink.com.  Le schede DE2** erano le
 maggiormente segnalate per avere errori spuri di mismatch
 nell'indirizzo di trasferimento con le prime versioni di Linux.  Si
 noti che esistono anche schede della Digital (DEC) chiamate DE100 e
 DE200, ma la somiglianza finisce qui.


 5.14.2.  DE-520

 Stato: Supportata, Nome del driver: pcnet32

 Questa � una scheda PCI che usa la versione PCI del chip LANCE
 dell'AMD.  Informazioni sulla selezione del DMA e la numerazione del
 chip possono essere trovate nella sezione ``AMD LANCE''.

 Ulteriori informazioni tecniche sulle schede Ethernet basate sul LANCE
 dell'AMD le si pu� trovare nella sezione ``Note su AMD...''.


 5.14.3.  DE-528

 Stato: Supportata, Nome del driver: ne, ne2k-pci (+8390)

 Apparentemente la D-Link ha cominciato a fare anche cloni PCI della
 NE2000.



 5.14.4.  DE-530

 Stato: Supportata, Nome del driver: de4x5, tulip

 Questa � un'implementazione del chip DEC 21040 ed � riportato che
 funziona con il driver generico tulip per il 21040.

 Si veda la sezione ``DEC 21040'' per maggiori informazioni su queste
 schede e sullo stato attuale del driver.


 5.14.5.  DE-600

 Stato: Supportata, Nome del driver: de600


 Ai possessori di un portatile e a tutti quelli che vorrebbero un
 metodo veloce per mettere il loro computer su Ethernet piacer� usare
 questa schede.  Il driver � incluso nei sorgenti del kernel standard.

 Il driver � stato scritto da Bjorn Ekwall [email protected].  Ci si
 aspetti una velocit� di trasferimento di circa 180kb/s da questa
 scheda attraverso la porta parallela.  Si dovrebbe leggere il file
 README.DLINK nell'albero dei sorgenti del kernel.

 Si noti che il nome del device da passare a ifconfig ora � eth0 e non
 pi� il dl0 usato in precedenza.

 Se la propria porta parallela non � all'indirizzo standard 0x378
 allora si deve ricompilare.  Bjorn scrive: �Poich� il driver DE-620
 prova a spremere anche l'ultimo microsecondo dal ciclo, ho reso l'irq
 e l'indirizzo delle costanti piuttosto che delle variabili.  Questo
 consente di ottenere una velocit� usabile, ma significa anche che non
 si possono modificare questi assegnamenti p.es. da lilo; si _deve_
 ricompilare...�.  Si noti inoltre che alcuni portatitili implementano
 la porta parallela on board a 0x3bc che � dove erano/sono le porte
 parallele sulle schede monocromatiche.


 5.14.6.  DE-620

 Stato: Supportata, Nome del driver: de620

 Analoga alla DE-600, con solo due formati d'uscita.   Bjorn ha scritto
 un driver per questo modello per le versioni del kernel pari e
 superiori alla 1.1.  Si vedano le informazioni precedenti sulla
 DE-600.


 5.14.7.  DE-650

 Stato: Semi supportata, Nome del driver: de650 (?)

 Alcuni hanno usato questa scheda PCMCIA per abbastanza tempo nei loro
 computer portatili.  In pratica � un 8390, come una NE2000.  Si
 suppone che anche la scheda PCMCIA LinkSys e la IC-Card Ethernet siano
 dei cloni della DE-650.  Si noti che al momento questo driver non �
 parte del kernel standard, e quindi si devono applicare alcune patch.

 Si veda ``Supporto PCMCIA'' in questo documento e, se si pu�, si dia
 un'occhiata a:

 Don's PCMCIA Stuff <http://cesdis.gsfc.nasa.gov/linux/pcmcia.html>


 5.15.  DFI



 5.15.1.  DFINET-300 e DFINET-400

 Stato: Supportate, Nome del driver: ne (+8390)

 Ora queste schede sono rilevate (sin dal 0.99pl15) grazie a Eberhard
 Moenkeberg [email protected] che ha notato che usano `DFI' nei primi 3
 byte della PROM, invece di usare 0x57 nei byte 14 e 15, che � quello
 che fanno tutte le schede NE1000 e NE2000 (la 300 � un pseudo-clone
 della NE1000 a 8 bit e la 400 lo � della NE2000).




 5.16.  Digital / DEC



 5.16.1.  DEPCA, DE100/1, DE200/1/2, DE210, DE422

 Stato: Supportate, Nome del driver: depca

 Nel file sorgente `depca.c' � inclusa della documentazione, che
 comprende informazioni su come usare pi� di una di queste schede in
 una macchina.  Si noti che la DE422 � una scheda EISA.  Queste schede
 sono tutte basate sul chip LANCE dell'AMD.  Si veda la sezione ``AMD
 LANCE'' per maggiori informazioni.  Possono essere usate sino ad un
 massimo di due schede ISA, perch� possono essere impostate solamente
 per gli indirizzi di I/O base 0x300 e 0x200.  Se si intende farlo, si
 leggano le note nel file sorgente del driver depca.c nell'albero dei
 sorgenti del kernel standard.

 Questo driver funzioner� anche sulle macchine basate su CPU Alpha e ci
 sono diverse ioctl() con le quali l'utente pu� giocare.


 5.16.2.  Digital EtherWorks 3 (DE203, DE204, DE205)

 Stato: Supportata, Nome del driver: ewrk3

 Queste schede usano un chip proprietario della DEC, invece del chip
 LANCE utilizzato nelle prime schede come la DE200.  Queste schede
 supportano sia la memoria condivisa che l'I/O programmato, sebbene
 raggiungano una calo di prestazioni del 50% se si usa la modalit� PIO.
 La dimensione della memoria condivisa pu� essere impostata a 2kB, 32kB
 o 64kB, ma con questo driver sono state testate solamente le prime due
 dimensioni.  David dice che le prestazioni sono virtualmente identiche
 tra il modo a 2kB e quello a 32kB.  Maggiori informazioni (tra cui
 l'uso del driver come modulo caricabile) sono presenti all'inizio del
 file sorgente ewrk3.c e anche nel file README.ewrk3.  Ambedue i file
 sono nella distribuzione standard del kernel.  Questo driver ha il
 supporto per le CPU Alpha, come il depca.c.

 Il driver standard ha diverse chiamate ioctl() interessanti che
 possono essere usate per ottenere ed azzerare le statistiche sui
 pacchetti, leggere/scrivere la EEPROM, cambiare l'indirizzo hardware e
 cose cos�.  Gli smanettoni possono vedere il codice sorgente per
 maggiori informazioni su queste possibilit�.

 David ha scritto anche un programma di configurazione per questa
 scheda (sulla falsa riga del programma DOS NICSETUP.EXE) assieme con
 altri strumenti.  Possono essere trovati in praticamente tutti i siti
 FTP di Linux nella directory /pub/Linux/system/Network/management (si
 cerchi il file ewrk3tools-X.XX.tar.gz).


 5.16.3.  DE425 EISA, DE434, DE435, DE500

 Stato: Supportate, Nome del driver: de4x5, tulip

 Queste schede si basano sul chip 21040 menzionato sotto.  La DE500 usa
 il chip 21140 per fornire connessioni Ethernet a 10/100Mbs.  Si deve
 leggere la sezione sul 21040 qui sotto per ulteriori informazioni.  Ci
 sono alcuni opzioni da passare in compilazione per le schede non DEC
 che usano questo driver.  Si veda il file README.de4x5 per i dettagli.

 Tutte le schede Digital rileveranno automaticamente il mezzo (tranne,
 temporaneamente, la DE500 a causa di un brevetto).


 Questo driver � pronto anche per le CPU Alpha e pu� essere caricato
 come modulo.  Gli utenti possono raggiungere l'interno del driver
 attraverso chiamate ioctl. Si vedano gli strumenti 'ewrk3' e il
 sorgente de4x5.c per informazioni su come farlo.


 5.16.4.  DEC 21040, 21041, 2114x, Tulip

 Stato: Supportate, Nome del driver: de4x5, tulip

 Il DEC 21040 � una soluzione Ethernet bus-mastering in un unico chip,
 simile al chip PCnet dell'AMD.  Il 21040 � progettato specificatamente
 per l'architettura di bus PCI.  La nuova scheda PCI EtherPower della
 SMC usa questo chip.  Per le schede basate su questo chip � possibile
 scegliere tra due driver.  C'� il driver DE425 discusso in precedenza
 e driver generico `tulip' per il 21040.

 Attenzione: Sebbene la propria scheda possa essere basata su questo
 chip, nel proprio caso i driver potrebbero non funzionare.  David C.
 Davies scrive:

 �Non c'� alcuna garanzia che il `tulip.c' o il `de4x5.c' funzionino
 con una qualsiasi scheda basata sui DC2114x oltre a quelle per cui
 sono stati scritti.  PERCH�??  Perch� c'� un registro, il General
 Purpose Register (CSR12) che (1) nel DC21140A � programmabile da
 qualsiasi produttore e tutti lo fanno in modo differente (2) nei
 DC21142/3 c'� ora un registro di controllo SIA (a la DC21041).  Il
 solo piccolo raggio di speranza � che riusciamo a decodificare la SROM
 per aiutare l'impostazione nel driver.  Comunque, questa non � una
 soluzione garantita in quanto alcuni produttori (per esempio la scheda
 SMC 9332) non seguono le raccomandazioni Digital Semiconductor sul
 formato di programmazione della SROM.�

 In termini meno tecnici, ci� significa che se non si � sicuri che una
 scheda sconosciuta con un chip DC2114x funzioner� con i driver per
 Linux, allora ci si assicuri di porterla restituire dove la si �
 comprata prima di pagare.

 Nella maggior parte delle ultime schede EtherPower della SMC al posto
 del 21040 si pu� trovare il pi� aggiornato chip 21041.  Il 21140 � per
 supportare il 100Base-? e funziona con i driver per Linux per il chip
 21040.  Per usare il driver de4x5 di David con una scheda non DEC, si
 deve guardare il file README.de4x5 per i dettagli.

 Donald ha usato le schede EtherPower-10/100 della SMC per sviluppare
 il driver `tulip'.  Si noti che il driver presente nel albero standard
 dei sorgenti al momento non � la versione pi� aggiornata.  Se si hanno
 problemi con questo driver, ci si dovrebbe procurare la versione pi�
 nuova dal sito ftp/WWW di Donald.

 Tulip Driver <http://cesdis.gsfc.nasa.gov/linux/drivers/tulip.html>

 Questo URL contiene anche un elenco (non esaustivo) delle diverse
 schede/vendor che usano il chip 21040.

 Si noti inoltre che il driver tulip al momento � ancora considerato un
 driver sperimentale (si veda la sezione ``Driver sperimentali'') e
 dovrebbe essere trattato come tale.  Per usarlo, si dovr� modificare
 il file arch/i386/config.in e decommentare la riga per il supporto
 CONFIG_DEC_ELCP.

 Donald ha messo su anche una mailing list per gli annunci sul driver
 tulip, ecc.  Per unirsi alla lista si digiti:

 echo subscribe | /bin/mail [email protected]

 5.17.  Farallon

 La Farallon vende gli adattatori e i transceiver EtherWave.  Questo
 dispositivo permette di mettere in daisy chain diversi dispositivi
 10baseT.


 5.17.1.  Farallon Etherwave

 Stato: Supportato, Nome del driver: 3c509

 � riportato che questo driver sia un clone del 3c509 che include il
 transceiver EtherWave.  La gente l'ha usata con successo con Linux e
 l'attuale driver 3c509.  Sono troppo costose per l'uso comune, ma sono
 una grande opzione in casi speciali.  I prezzi degli hublet partono da
 $125, e la Etherwave aggiunge $75-$100 al prezzo della scheda


 5.18.  Fujitsu


 Diversamente da molti costruttori di chip di rete, la Fujitsu ha fatto
 e venduto anche alcune schede di rete basate sui loro chip.


 5.18.1.  Fujitsu FMV-181/182/183/184

 Stato: Supportato, Nome del driver: fmv18x

 Secondo quel che afferma il driver, queste schede sono semplicemente
 un'implementazione del MB86965 della Fujitsu, il che le rende molto
 simili alle schede AT1700 della Allied Telesis.


 5.19.  Hewlett Packard


 Le schede 272** usano l'I/O programmato, similmente alle schede
 NE*000, ma la porta del trasferimento dei dati pu� essere `spenta'
 quando non vi si accede, evitando problemi con i driver che fanno
 l'autorilevamento.

 Grazie a Glenn Talbott per l'aiuto fornito nel chiarire la confusione
 in questa sezione a proposito dei numeri di versione dell'hardware HP.


 5.19.1.  27245A

 Stato: Supportata, Nome del diver: hp (+8390)

 Una 10BaseT a 8 Bit basata sul 8390, non � raccomandata per tutte
 quelle ragioni delle 8 bit. � stata riprogettata un paio di anni fa
 per essere altamente integrata e ci� ha causato alcune modifiche nei
 tempi di inizializzazione che affliggono solo i programmi di test, non
 i driver LAN (la nuova scheda non � `pronta' subito dopo si entra ed
 esce dalla modalit� loopback).

 Se si intende usare questo driver come modulo caricabile probabilmente
 si dovrebbe vedere la sezione ``Usare i driver Ethernet come modulo''
 per informazioni specifiche sui moduli.


 5.19.2.  HP EtherTwist, PC Lan+ (27247, 27252A)

 Stato: Supportate, Nome del driver: hp+ (+8390)

 La HP PC Lan+ � diversa dalla scheda HP PC Lan standard.  Questo
 driver � stato aggiunto all'elenco dei driver del kernel standard
 durante il ciclo di sviluppo del v1.1.x.  Pu� essere fatta funzionare
 in modalit� PIO come una ne2000, o in modalit� a memoria condivisa
 come una wd8013.

 La 47B � una scheda a 16 bit 10BaseT con AUI a 16 Bit basata su 8390 e
 la 52A � una 16 bit ThinLan con AUI basata su 8390.  Queste schede
 hanno una RAM da 32K per la bufferizzazione dei pacchetti da
 trasmettere/ricevere invece dei soliti 16KB e entrambe offrono il
 rilievo automativo del connettore LAN.

 Se si intende usare questo driver come modulo caricabile probabilmente
 si dovrebbe vedere la sezione ``Usare i driver Ethernet come modulo''
 per informazioni specifiche sui moduli.


 5.19.3.  HP-J2405A

 Stato: Supportata, Nome del driver: lance

 Queste schede costano meno e sono un po' pi� veloci delle
 27247/27252A, ma mancano di alcune caratteristiche quali AUI, la
 connettivit� ThinLAN e il boot PROM socket.  Sono una versione del
 LANCE abbastanza generica, ma piccole diversit� nel progetto le
 rendono incompatibili con il driver `NE2100' generico.  Il supporto
 speciale per queste schede (comprensivo della lettura del canale DMA
 dalla scheda) � incluso grazie alle informazioni fornite da Glenn
 Talbott dell'HP.

 Ulteriori informazioni tecniche sulle schede basate su LANCE possono
 essere trovate nella sezione ``Note su AMD...''


 5.19.4.  HP-Vectra On Board Ethernet

 Stato: Supportata, Nome del driver: lance

 L'HP-Vectra ha un chip PCnet dell'AMD sulla piastra madre.
 Informazioni sulla selezione del DMA e la numerazione del chip possono
 essere trovate nella sezione ``AMD LANCE''.

 Ulteriori informazioni tecniche sulle schede basate su LANCE possono
 essere trovate nella sezione ``Note su AMD...''


 5.19.5.  Schede HP 10/100 VG Any Lan (27248B, J2573, J2577, J2585,
 J970, J973)

 Stato: Supportate, Nome del driver: hp100

 Questo driver supporta anche alcuni dei prodotti VG della Compex.
 Poich� il driver supporta schede ISA, EISA e PCI, quando si esegue
 make config sui sorgenti del kernel lo si trova nella sezione relativa
 alle schede ISA.


 5.19.6.  HP NetServer 10/100TX PCI (D5013A)

 Stato: Supportata, Nome del driver: eepro100

 Apparentemente queste sono semplicemente delle schede EtherExpress Pro
 10/100B dell'Interl rimarchiate.  Si veda la sezione su Intel per
 maggiori informazioni.


 5.20.  IBM / International Business Machines



 5.20.1.  IBM Thinkpad 300

 Stato: Supportato, Nome del driver: znet

 � compatibile con la Z-note della Zenith basata su Intel.  Si veda
 ``Z-note'' per maggiori informazioni.

 Suppongo che questo sito abbia un esauriente elenco di cosette utili
 per le nuove versioni del ThinkPad.  Ancora non l'ho verificato
 personalmente.

 Thinkpad-info <http://peipa.essex.ac.uk/html/linux-thinkpad.html>

 Quelli che non possono usare un browser WWW, provino a
 peipa.essex.ac.uk:/pub/tp750/


 5.20.2.  IBM Credit Card Adaptor for Ethernet

 Stato: Semi-supportato, Nome del driver: ? (distribuito separatamente)

 Molti stanno usando questa scheda PCMCIA con Linux.  Valgono le solite
 cose, come la necessit� di avere nel proprio portatile un chipset
 PCMCIA supportato e che si deve applicare una patch al kernel standard
 per il supporto PCMCIA.

 Si veda ``Supporto PCMCIA'' in questo documento e se si pu� si dia
 un'occhiata a:

 Don's PCMCIA Stuff <http://cesdis.gsfc.nasa.gov/linux/pcmcia.html>



 5.20.3.  IBM Token Ring

 Stato: Semi supportata, Nome del driver: ibmtr

 Il supporto per il token ring richiede molto pi� che la sola scrittura
 di un driver per i dispositivi.  Richiede anche la scrittura delle
 routine di instradamento per il token ring.  � nella scrittura di
 queste ultime che si perde la maggior parte del tempo.

 Peter De Schrijver ha speso un po' di tempo sul Token Ring.  Ha
 lavorato con schede Token Ring ISA e MCA dell'IBM.

 L'attuale codice per il token ring � stato incluso all'inizio dello
 sviluppo dei kernel della serie 1.3.x.

 Peter dice che � stato originariamente testato su schede MCA 16/4
 Megabit Token Ring, ma dovrebbe funzionare con altre schede basate sul
 chip Tropic.


 5.21.  Schede Ethernet ICL



 5.21.1.  ICL EtherTeam 16i/32

 Stato: Supportata, Nome del driver: eth16i


 Questo driver l'ha scritto Mika Kuoppala ([email protected]) ed �
 stato introdotto verso il kernel 1.3.4x.  Usa il chip MB86965 della
 Fujitsu, usato anche nelle schede at1700.


 5.22.  Schede Ethernet Intel

 Si noti che la nomenclatura delle diverse schede Intel � ambigua e
 confusa al massimo.  Se si hanno dubbi, si veda il numero i8xxxx sul
 chip principale della scheda oppure, per le schede PCI, si usino le
 informazioni sul PCI nella directory /proc e poi si confronti con i
 numeri elencati qui.


 5.22.1.  Ether Express

 Stato: Supportata, Nome del driver: eexpress

 Questa scheda usa il i82586 dell'Intel.  Le prime versioni di questo
 driver (nei kernel v1.2) erano classificate come sperimentali e non
 funzionavano bene per la maggior parte della gente.  Quelli che
 l'hanno provato dicono che il driver nei kernel v2.0 sembra funzionare
 molto meglio, sebbene il driver sia ancora sperimentale e un po'
 problematico sulle macchine pi� veloci.

 I commenti all'inizio del sorgente del driver elencano alcuni problemi
 (e correzioni!) associati con queste schede.  Il trucchetto di
 rimpiazzare nel driver tutti gli outb con outb_p si dice abbia
 funzionato per pi� di un utente.


 5.22.2.  Ether Express PRO/10

 Stato: Supportata, Nome del driver: eepro

 Bao Chau Ha ha scritto un driver per queste schede incluso nei primi
 kernel v1.3.x.  Pu� funzionare anche con alcuni sistemi Ethernet
 integrati della Compaq basati sul chip i82595.


 5.22.3.  Ether Express PRO/10 PCI (EISA)

 Stato: Semi supportata, Nome del driver: ? (distribuito separatamente)

 John Stalba ([email protected]) ha scritto un driver per la versione
 PCI.  Queste schede usano il chip d'interfaccia PLX9036 PCI con un
 chip i82596 LAN controller della Intel.  Se la propria scheda ha il
 chip i82557, allora non si possiede questa scheda ma piuttosto la
 versione discussa dopo e quindi si deve usare il driver EEPro100.

 Si pu� ottenere il driver sperimentale per la propria scheda PCI
 PRO/10 assieme alle instruzioni per usarlo a:

 EEPro10 Driver <http://www.ultranet.com/~stalba/eep10pci.html>

 Se si ha una scheda EISA, probabilmente si dovr� lavorare un po' sul
 driver per tener conto delle differenze (PCI vs. EISA) nei meccanismi
 di rilievo usati nei due casi.



 5.22.4.  Ether Express PRO 10/100B

 Stato: Supportata, Nome del driver: eepro100


 Si noti che questo driver non funzioner� con le vecchie schede 100A.
 I numeri dei chip elencati nel driver sono i82557/i82558.  Per
 aggiornamenti del driver e/o supporto sul driver, si veda

 EEPro-100B Page
 <http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html>

 Per iscriversi alla mailing list relativa a questo driver, si faccia:

 echo subscribe | /bin/mail [email protected]

 Apparentemente Donald ha firmato un accordo di non-disclosure che dice
 che lui non pu� effettivamente rivelare il codice sorgente del driver!
 Che cosa dire di questa insulsaggine da parte di Intel?



 5.23.  Kingston


 La Kingston fa diverse schede, tra cui schede basate su NE2000+, AMD
 PCnet e DEC tulip.  La maggior parte di queste schede dovrebbero
 funzionare bene con i rispetti driver.  Si veda la pagina web della
 Kingston <http://www.kingston.com>

 La KNE40 basata sul 21041 tulip della DEC si dice funzioni bene con il
 driver tulip generico.



 5.24.  LinkSys


 La LinkSys ha fatto una manciata di diversi cloni NE2000, alcuni sono
 schede ISA semplici, altre ISA plug-and-play e altri ancora sono cloni
 PCI della ne2000 basati su uno dei chip PCI ne2000 supportati.
 Semplicemente ci sono troppi modelli per elencarli tutti qui.

 Le LinkSys sono ``Linux-friendly'' e c'� pure una pagina WWW specifica
 per il supporto di Linux e hanno anche la parola Linux stampata sulla
 scatola di alcuni dei loro prodotti.  Si veda:

 http://www.linksys.com/support/solution/nos/linux.htm



 5.24.1.  Schede LinkSys Etherfast 10/100.

 Stato: Supportate, Nome del driver: tulip

 Si noti che queste schede sono state sottoposte a parecchie
 `revisioni' (ovvero sono stati usati diversi chip) tutte sotto lo
 stesso nome.  La prima usava il chip della DEC.  La seconda revisione
 usava il PNIC 82c168 PCI della Lite-On e il supporto per questo era
 stato aggiunto al supporto per il driver tulip standard (dalla
 versione 0.83).  Ulteriori informazioni sul PNIC sono disponibili a:

 http://cesdis.gsfc.nasa.gov/linux/drivers/pnic.html

 Altre informazioni sulle diverse versioni di queste schede possono
 essere trovate nella pagina WWW della LinkSys menzionata in
 precendenza.




 5.24.2.  LinkSys Pocket Ethernet Adapter Plus (PEAEPP)

 Stato: Supportata, Nome del driver: de620

 Questo � un clone (o supposto tale) nel DE-620 e si dice funzioni bene
 con quel driver.  Si veda ``DE-620'' per maggiori informazioni.


 5.24.3.  LinkSys PCMCIA Adaptor

 Stato: Supportato, Nome del driver: de650 (?)

 Questa � una versione rimarchiata del DE-650.  Si veda ``DE-650'' per
 maggiori informazioni.


 5.25.  Microdyne



 5.25.1.  Microdyne Exos 205T

 Stato: Semi supportata, Nome del driver: ?

 Un'altra scheda basata sul chip i82586. Dirk Niggemann dirk-
 [email protected] ha scritto un driver che lui classifica come ``pre-
 alpha'' e vorrebbe che la gente testasse.  Gli si scriva per maggiori
 dettagli.


 5.26.  Mylex


 La Mylex pu� essere raggiunta ai seguenti numeri, nel caso qualcuno
 voglia chiedere qualcosa.


         MYLEX CORPORATION, Fremont
         Sales:  800-77-MYLEX, (510) 796-6100
         FAX:    (510) 745-8016.



 Hanno anche un sito web: Mylex WWW Site <http://www.mylex.com>


 5.26.1.  Mylex LNE390A, LNE390B

 Stato: Supportata, Nome del driver: lne390 (+8390)

 Queste sono delle schede EISA piuttosto vecchie che fanno uso di
 un'implementazione a memoria condivisa simile alla wd80x3.  Nella
 serie attuale 2.1.x del kernel � presente un driver per queste schede.
 Ci si assicuri di impostare l'indirizzo della memoria condivisa sotto
 il primo MB o oltre il pi� alto indirizzo della memoria RAM
 fisicamente installata nella macchina.


 5.26.2.  Mylex LNP101

 Stato: Supportata, Nome del driver: de4x5, tulip

 Questa � una scheda PCI basata sul chip 21040 della DEC.  �
 selezionabile con uscita 10BaseT, 10Base2 e 10Base5.  Si � verificato
 che la scheda LNP101 funziona con il driver 21040 generico.

 Si veda la sezione sul chip 21040 (``DEC 21040'') per maggiori
 informazioni.


 5.26.3.  Mylex LNP104

 Stato: Semi supportata, Nome del driver: de4x5, tulip

 La LNP104 usa il chip 21050 della DEC per gestire quattro porte
 10BaseT indipendenti.  Dovrebbe funzionare con i driver 21040 recenti
 che sanno come condividere gli IRQ, ma nessuno ha ancora riportato di
 averci provato (a quanto ne so).


 5.27.  Novell Ethernet, NExxxx e cloni associati


 Il prefisso `NE' viene da Novell Ethernet.  La Novell ha seguito il
 progetto pi� economico del databook della National Semiconductor e
 vende i diritti di produzione Eagle, solo per immettere sul mercato
 schede Ethernet a prezzi ragionevoli (la ormai ubiqua scheda NE2000).


 5.27.1.  NE1000, NE2000

 Stato: Supportata, Nome del driver: ne (+8390)

 La ne2000 � ora il nome generico del progetto base fatto attorno al
 chip 8390 della NatSemi.  Usano l'I/O programmato piuttosto che la
 memoria condivisa, il che comporta maggiore facilit� di installazione
 ma prestazioni un po' pi� basse e un po' di problemi.  Alcuni dei
 problemi pi� comuni che capitano con le schede NE2000 sono elencati in
 ``Problemi con...''.

 Alcuni cloni della NE2000 usano il chip `AT/LANTic' 83905 della
 National Semiconductor, che offre una modalit� a memoria condivisa
 simile a quella della wd8013 e la configurazione via software della
 EEPROM.  La modalit� a memoria condivisa permette un minor utilizzo
 della CPU (cio� � pi� efficiente) rispetto alla modalit� ad I/O
 programmato.

 In generale non � una buona idea mettere un clone della NE2000
 all'indirizzo I/O 0x300 perch� praticamente tutti i driver di
 dispositivo cercano l� al boot.  Alcuni cloni NE2000 ``poveri'' non la
 prendono bene ad essere rilevati in aree sbagliate e risponderanno
 bloccando la macchina.  Inoltre anche 0x320 non va bene perch� i
 driver SCSI rilevano a 0x330.

 Donald ha scritto un progamma di diagnostica per NE2000 (ne2k.c) che
 va bene per tutte le schede ne2000.  Si veda la sezione ``Programmi
 diagnostici'' per maggiori informazioni.

 Se si intende usare questo driver con modulo caricabile probabilmente
 si dovrebbe vedere la sezione ``Usare i driver Ethernet come moduli''
 per informazioni specifiche sui moduli.


 5.27.2.  NE2000-PCI (RealTek/Winbond/Compex)

 Stato: Supportata, Nome del driver: ne, ne2k-pci (+8390)

 S�, che ci si creda o no, la gente sta facendo schede PCI basate su
 progetto dell'interfaccia dell'ne2000 che ha ormai pi� di 10 anni.  Al
 momento praticamente tutte queste schede sono basate sul chip 8029
 della RealTek, o sul chip 89c940 della Winbond.  Anche le schede
 Compex, KTI, VIA e Netvin apparentemente usano questi chip, ma hanno
 un diverso ID PCI.

 L'ultimo kernel v2.0 ha il supporto per rilevare automaticamente tutte
 queste schede ed usarle (se si sta usando un kernel v2.0.34 o pi�
 vecchio, lo si dovrebbe aggiornare per assicurarsi che la propria
 scheda sia rilevata).  Ora ci sono due driver tra cui scegliere:
 l'originale driver ISA/PCI ne.c o quello relativamente nuovo solo PCI
 ne2k-pci.c.

 Per usare il driver ISA/PCI originale si deve rispondere `Y'
 all'opzione `Other ISA cards' quando si lancia make config perch� in
 realt� si sta usando lo stesso driver NE2000 che usano le schede ISA
 (la qual cosa dovrebbe suggerire che queste schede non sono cos�
 intelligenti come pu� essere, ad esempio, una PCNet-PCI o una DEC
 21040...).

 Il nuovo driver solo PCI differisce dal driver ISA/PCI nel fatto che
 tutto il supporto per le vecchie schede a 8 bit NE1000 � stato rimosso
 e che i dati sono spostati da e nella scheda in blocchi pi� grandi,
 senza alcuna pausa tra un'operazione e l'altra che le vecchie NE2000
 ISA richiedono per operare in maniera affidabile.  Il risultato � un
 driver pi� efficiente, ma non ci si ecciti troppo in quanto le
 differenze non saranno cos� ovvie nel funzionamento normale (se si
 vuole veramente la massima efficenza assieme ad un basso utilizzo
 della CPU, allora una NE2000 PCI � semplicemente una scelta povera).
 Aggiornamenti del driver e ulteriori informazioni possono essere
 trovate a:

 http://cesdis.gsfc.nasa.gov/linux/drivers/ne2k-pci.html

 Se si possiede una scheda PCI NE2000 che non � rilevata dalla versione
 pi� recente del driver, si contatti il manutentore del driver NE2000
 citato nel file /usr/src/linux/MAINTAINERS e gli si spedisca l'output
 di cat /proc/pci e dmesg dimodoch� possa aggiungere il supporto per la
 scheda.

 Si noti inoltre che diversi prodottori di schede sono noti per
 attaccare l'etichetta `NE2000 Compatible' sulle scatole dei loro
 prodotti anche se sono completamente differenti (e.g. PCNet-PCI o
 RealTek 8139).  Se si � in dubbio si controlli il numero del chip
 principale con quelli in questo documento.


 5.27.3.  NE-10/100

 Stato: Non supportata.

 Queste sono delle schede ISA a 100Mbps basate sui chip DP83800 e
 DP83840 della National Semiconductor.  Attualmente non c'� alcun
 driver che le supporta n� nessuno ha ancora detto che sta lavorando su
 un driver.  Apparentemente non � disponibile la documentazione sul
 chip ad eccezione di un file PDF che non fornisce abbastanza dettagli
 per scrivere un driver.


 5.27.4.  NE1500, NE2100

 Stato: Supportate, Nome del driver: lance

 Queste schede usano il chip LANCE 7990 originale dell'AMD e sono
 supportate usando il driver lance di Linux.  I cloni NE2100 pi� nuovi
 usano il chip aggiornato PCnet-ISA dell'AMD.

 Alcune delle prime versioni del driver lance avevano problemi con la
 determinazione della linea IRQ attraverso l'autoIRQ     delle schede
 Novell/Eagle 7990.  Teoricamente questa cosa ora � stata corretta.  Se
 non lo fosse, allora si specifichi l'IRQ usando LILO e si renda noto
 che questo � ancora un problema.

 Informazioni sulla selezione del DMA e la numerazione del chip possono
 essere trovate nella sezione ``AMD LANCE''.

 Ulteriori informazioni tecniche sulle schede basate su LANCE si
 trovano nella sezione ``Note su AMD...''


 5.27.5.  NE/2 MCA

 Stato: Semi supportata, Nome del driver: ne2

 C'erano anche un po' di schede NE2000 microchannel fatte da diverse
 compagnie.  Questo driver, disponibile nei kernel v2.2, rilever� le
 seguenti schede MCS: Novell Ethernet Adapter NE/2, Compex ENET-16 MC/P
 e Arco Ethernet Adapter AE/2.


 5.27.6.  NE3200

 Stato: Non supportata

 Questa vecchia scheda EISA usa un 80186 a 8Mhz assieme con un i82586.
 Nessuno sta lavorando su un driver in quanto non ci sono n�
 informazioni disponibili sulla scheda n� una reale richiesta per un
 driver.


 5.27.7.  NE3210

 Stato: Supportata, Nome del driver: ne3210 (+8390)

 Questa scheda EISA � completamente diversa dalla NE3200, poich� usa un
 chip 8390 della Nat Semi.  Il driver pu� essere trovato nell'albero
 dei sorgenti del kernel v2.2.  Ci si assicuri si impostare l'indirizzo
 della memoria condivisa sotto il primo MB o superiore all'indirizzo
 pi� alto della RAM fisica installata nella macchina.


 5.27.8.  NE5500

 Stato: Supportata, Nome del driver: pcnet32

 Queste sono semplicemente delle schede con il chip PCnet-PCI ('970A)
 dell'AMD.  Maggiori informazioni sulle schede basate su LANCE/PCnet
 possono essere trovate nella sezione ``AMD LANCE''.



 5.28.  Proteon



 5.28.1.  Proteon P1370-EA

 Stato: Supportata, Nome del driver: ne (+8390)

 Apparentemente questa � un clone NE2000 e funziona bene con Linux.


 5.28.2.  Proteon P1670-EA

 Stato: Supportata, Nome del driver: de4x5, tulip

 Questa � un'altra scheda PCI basata sul chip Tulip della DEC.  Si dice
 funzioni bene con Linux.

 Si veda la sezione sul chip 21040 (``DEC 21040'') per maggiori
 informazioni sul driver.



 5.29.  Pure Data



 5.29.1.  PDUC8028, PDI8023

 Stato: Supportata, Nome del driver: wd (+8390)

 Le serie di schede PDUC8028 e PDI8023 della Pure Data si dice
 funzionino, grazie a uno speciale codice di rilevamento fornito da
 Mike Jagdis [email protected].  Il supporto � integrato con il
 driver WD.


 5.30.  Racal-Interlan


 La Racal Interlan pu� essere raggiunta via WWW a www.interlan.com.
 Credo che in passato fosse conosciuta anche come MiCom-Interlan.


 5.30.1.  ES3210

 Stato: Semi supportata, Nome del driver: es3210

 Questa � una scheda EISA a memoria condivisa basata su 8390.  Con il
 kernel v2.2 � distribuito un driver sperimentale e si dice funzioni
 bene, ma il rilevamento EISA dell'IRQ e dell'indirizzo della memoria
 condivisa non senbra funzionare bene con (almeno) le prime revisioni
 della scheda (comunque questo problema non � ristretto al solo mondo
 Linux...).  In quel caso, si devono fornire tali informazioni al
 driver.  Per esempio, per una scheda all'IRQ 5 e memoria condivisa a
 0xd0000 che usa un driver modulare, si aggiuga options es3210 irq=5
 mem=0xd0000 a /etc/conf.modules.  Oppure con il driver compilato nel
 kernel, all'avvio si passi ether=5,0,0xd0000,eth0.  L'I/O base �
 rilevato automaticamente e quindi dovrebbe essere usato il valore 0.


 5.30.2.  NI5010

 Stato: Semi supportata, Nome del driver: ni5010

 Solitamente ci si doveva procurare separatamente il driver per queste
 vecchie schede a 8 bit della MiCom-Interlan, ma ora � distribuito con
 i kernel v2.2 come driver sperimentale.


 5.30.3.  NI5210

 Stato: Semi supportata, Nome del driver: ni52

 Anche questa scheda usa uno dei chip dell'Intel.  Michael Hipp ha
 scritto un driver e ora � incluso nel kernel standard come driver
 `alpha'.  Michael vorrebbe sentire dei commenti dagli utenti che
 posseggono questa scheda.  Si veda ``Driver sperimentali'' per
 conoscere importanti informazioni sull'uso dei driver Ethernet
 sperimentali.

 5.30.4.  NI6510 (non EB)

 Stato: Semi supportata, Nome del driver: ni65

 C'� anche un driver per la NI6510 basata su LANCE ed � sempre stato
 scritto da Michael Hipp.  Anche questo � un driver sperimentale.  Per
 qualche ragione questa scheda non � compatibile con il driver LANCE
 generico.  Si veda ``Driver sperimentali'' per conoscere importanti
 informazioni sull'uso dei driver Ethernet sperimentali.


 5.30.5.  EtherBlaster (aka NI6510EB)

 Stato: Supportata, Nome del driver: lance

 Dal kernel 1.2.23, al driver LANCE generico � stato aggiunto un
 controllo per la firma 0x52, 0x44 specifica della NI6510EB.  Comunque
 alcuni hanno riportato che questa firma non � la stessa per tutte le
 schede NI6510EB, il che fa s� che il driver LANCE non rilevi la
 scheda.  Se questo succede, si pu� cambiare il controllo (verso la
 riga 322 in lance.c) a printk() cosicch� stampi i valori per la
 propria scheda e poi usarli come default invece di 0x52, 0x44.

 Usando il driver lance, probabilmente le schede dovrebbero essere
 usate in modalit� ad `alte prestazioni' e non in compatibilit� NI6510.


 5.31.  RealTek



 5.31.1.  Adattatore pocket RealTek RTL8002/8012 (AT-Lan-Tec)

 Stato: Supportato, Nome del driver: atp

 Questo � un adattatore pocket generico e a basso costo, venduto dalla
 AT-Lan-Tec e (probabilmente) da molti altri fornitori.  Nel kernel
 standard � presente un driver.  Si noti che le informazioni pi�
 importanti sono contenute nel file sorgente del driver `atp.c'.

 Si noti che nelle prime versioni di questo driver il nome di device da
 passare a ifconfig non era eth0 bens� atp0.


 5.31.2.  RealTek 8009

 Stato: Supportata, Nome del driver: ne (+8390)

 Questa � un clone ISA della NE2000 e si dice funzioni bene con il
 driver NE2000 di Linux.  Dal sito WWW della RealTek
 (http://www.realtek.com.tw) o via FTP dallo stesso sito pu� essere
 scaricato il programma rset8009.exe.


 5.31.3.  RealTek 8019

 Stato: Supportata, Nome del driver: ne (+8390)

 Questa � la versione Plug and Pray della scheda precedente.  Si usi il
 software per DOS per disabilitare il Pnp ed abilitare la
 configurazione senza ponticelli; si configuri la scheda ad un
 indirizzo I/O ed a un'IRQ ragionevoli e si dovrebbe essere pronti per
 partire (se si usa il driver come modulo, non si dimentichi di
 aggiungere l'opzione io=0xNNN a /etc/conf.modules).  Dal sito WWW
 della RealTek (http://www.realtek.com.tw) o via FTP dallo stesso sito
 pu� essere scaricato il programma rset8009.exe.
 5.31.4.  RealTek 8029

 Stato: Supportata, Nome del driver: ne, ne2k-pci (+8390)

 Questa � una impletazione PCI a singolo chip di un clone NE2000.
 Diversi vendor adesso vendono schede con questo chip.  Si veda la
 sezione ``NE2000-PCI'' per informazioni sull'uso di una qualsiasi di
 queste schede.  Si noti che questo � un progetto di pi� di 10 anni fa
 semplicemente adattato al bus PCI.  Le prestazioni non saranno molto
 migliori rispetto a quelle dell'eqivalente modello ISA.


 5.31.5.  RealTek 8129/8139

 Stato: Semi-supportate, Nome del driver: rtl8139

 Una soluzione Ethernet PCI a chip singolo della RealTeak.  Un driver
 per le schede basate su questo chip � stato incluso nella release
 v2.0.34 di Linux.  Al momento nei kernel v2.2 se si vuole avere
 accesso a questo driver si deve rispondere `Y' quando viene chiesto se
 si vogliono i driver sperimentali.  Per maggiori informazioni si veda:

 http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html



 5.32.  Sager



 5.32.1.  Sager NP943

 Stato: Semi supportata, Nome del driver: 3c501

 Questa � semplicemente un clone della 3c501, con un diverso prefisso
 S.A. nella PROM.  Suppongo che sia talmente demente quanto la 3c501
 originale.  Il driver cerca l'ID della NP943 e poi la tratta
 semplimente come un 3c501.  Si veda la sezione ``3Com 3c501'' per
 tutte le ragioni per le quali veramente non si deve usare una di
 queste schede.


 5.33.  Schneider & Koch



 5.33.1.  SK G16

 Stato: Supportata, Nome del driver: sk_g16

 Questo driver � stato incluso nei kernel v1.1 ed � stato scritto da
 PJD Weichmann e SWS Bern.  Sembra che la SK G16 sia simile alla
 NI6510, per il fatto che � basata sulla prima edizione del chip LANCE.
 Ancora una volta, sembra che pure questa scheda non funzioni con il
 driver LANCE generico.


 5.34.  SEEQ



 5.34.1.  SEEQ 8005

 Stato: Supportata, Nome del driver: seeq8005


 Questo driver � stato incluso nei primi kernel v1.3 ed � stato scritto
 da Hamish Coleman.  Nel driver sono incluse pochissime informazioni
 sulla scheda e quindi ci sono pure poche informazioni da mettere qui.
 Se si hanno domande, probabilmente la cosa migliore � di scrivere a
 [email protected].


 5.35.  SMC (Standard Microsystems Corp.)


 La divisione Ethernet della Western Digital � stata acquisita dalla
 SMC molti anni fa, quando la wd8003 e wd8013 erano i prodotti di
 punta.  Da allora la SMC ha continuato a fare schede ISA basate
 sull'8390 (Elite16, Ultra, EtherEZ) e ha aggiunto alla gamma anche
 diversi prodotti PCI.

 Informazioni per contattare la SMC:

 SMC / Standard Microsystems Corp., 80 Arkay Drive, Hauppage, New York,
 11788, USA.  Supporto tecnico telefonico: 800-992-4762 (USA) o
 800-433-5345 (Canada) o 516-435-6250 (Altri nazioni).  Richieste di
 documentazione: 800-SMC-4-YOU (USA) o 800-833-4-SMC (Canada) o
 516-435-6255  (Altre nazioni).  Supporto tecnico via E-mail:
 [email protected]. Sito FTP: ftp.smc.com.  Sito WWW: SMC
 <http://www.smc.com>.


 5.35.1.  WD8003, SMC Elite

 Stato: Supportate, Nome del driver: wd (+8390)

 Queste sono le versioni ad 8 bit della scheda.  Il chip 8003 a 8 bit �
 leggermente meno costoso, ma vale solo se destinato ad un uso leggero.
 Si noti che alcune schede senza EEPROM (cloni con i ponticelli o
 schede we8003 veramente vecchie) non hanno modo di riportare la linea
 IRQ utilizzata.  In questo caso, � usato auto-irq e se fallisce, il
 driver assegna l'IRQ 5 senza dire niente.  Dal sito FTP della SMC si
 possono scaricare i dischetti di configurazione/driver.  Si noti che
 alcune delle versioni pi� recenti del rpogramma `SuperDisk' della SMC
 falliranno nel rilevare le veramente vecchie schede senza EEPROM.  Il
 file SMCDSK46.EXE sembra essere una buona scelta a tutto tondo.
 Inoltre le impostazioni dei ponticelli per tutte le loro schede si
 possono trovare in un file testo ASCII nel summenzionato archivo.
 L'ultima (migliore?) versione pu� essere ottenuta da ftp.smc.com.

 Poich� questo sono in pratica analoghe alle loro controparti a 16 bit
 (WD8013 / SMC Elite16), si dovrebbe vedere la sezione successiva per
 maggiori informazioni.



 5.35.2.  WD8013, SMC Elite16

 Stato: Supportate, Nome del driver: wd (+8390)

 Negli anni sono stati aggiunti al progetto altri registri e una EEPROM
 (le prime schede wd8003 sono apparse circa 10 anni fa!).  I cloni
 solitamente vanno sotto il nome `8013' e tipicamente usano un progetto
 senza EEPROM (con i ponticelli).  Gli ultimi modelli delle schede SMC
 montano un chip 83c690 della SMC invece dell'originale DP8390 della
 National presente nelle prime schede.  Il progetto a memoria condivisa
 rende queste schede un po' pi� veloci delle schede PIO, specialmente
 con pacchetti pi� grossi.  Pi� importante, dal punto del vista del
 driver, si evitano cos� un po' di bachi nella modalit� ad I/O
 programmato dell'8390, permettendo accessi multi-thread sicuri al
 buffer dei pacchetti e non si ha il registro dati dell'I/O programmato
 che pianta la macchina durante il controllo al boot.

 Le schede non EEPROM che non possono leggere l'IRQ selezionato
 proveranno a fare l'auto-irq e se falliscono assegneranno
 silenziosamente l'IRQ 10 (le versioni a 8 bit assegnano l'IRQ 5).

 Le schede con a bordo dimensioni di memoria non standard la possono
 specificare all'avvio (o come opzione in /etc/conf.modules se si usano
 i moduli).  La dimensione standard della memoria � di 8kB per le
 schede a 8 bit e 16kB per quelle a 16 bit.  Per esempio, le schede pi�
 vecchie WD8003EBT potevano essere impostate attraverso i ponticelli
 per 32kB di memoria.  Per usare appieno questa RAM, si dovrebbe usare
 qualcosa di simile a (con I/O=0x280 e IRQ 9):

 ______________________________________________________________________
         LILO: linux ether=9,0x280,0xd0000,0xd8000,eth0
 ______________________________________________________________________



 Si veda anche ``Problemi dell'8013'' per alcuni dei problemi pi�
 comuni e le risposte alle domande pi� frequenti.

 Se si intende usare questo driver come modulo caricabile probabilmente
 si dovrebbe vedere la sezione ``Usare i driver Ethernet come modulo''
 per informazioni specifiche sui moduli.


 5.35.3.  SMC Elite Ultra

 Stato: Supportata, Nome del driver: smc-ultra (+8390)

 Questa scheda Ethernet � basata sul chip 83c790 della SMC che ha un
 po' di nuove caratteristiche rispetto al 83c690.  Sebbene possieda una
 modalit� simile alle schede SMC pi� vecchie, non � completamente
 compatibile con i vecchi driver WD80*3-  Comunque in questa modalit�
 condivide la maggior parte del codice con gli altri driver 8390 anche
 se funziona leggermente pi� veloce rispetto ad un clone WD8013.

 Poich� parte della Ultra sembra una 8013, il controllo per la Ultra si
 suppone trovi una Ultra prima che il controllo per la wd8013 abbia la
 possibilit� di indentificarla in maniera errata.

 Donald ha riferito che � possibile scrivere un driver separato per la
 modalit� `Altego' della Ultra che permette di concatenare la
 trasmissione al costo di un uso inefficiente dei buffer di ricezione,
 ma probabilmente ci� non avverr�.

 Gli utilizzatori di adattatori host SCSI bus master prendano nota: Nel
 manuale distribuito con Interactive UNIX, � riportato che un bug nella
 SMC Ultra causer� corruzione dei dati con dischi SCSI utilizzati
 attraverso un adattatore host aha-154X. Questa cosa affligge
 probabilmente anche le schede aha-154X compatibili, come le schede
 BusLogic e gli adattatori host AMI-Fastdisk SCSI.

 La SMC ha riconosciuto che il problema si presenta con Interactive e
 con vecchie versioni dei driver per Windows NT.  � un conflitto
 hardware con le prime versioni della scheda che pu� essere aggirato
 nel progetto del driver.  Il driver Ultra attuale protegge da questo
 abilitando la memoria condivisa solo durante il trasferimento con la
 scheda.  Ci si assicuri che la propria versione del kernel sia almeno
 1.1.84 e che la versione riportata dal driver al boot sia almeno smc-
 ultra.c:v1.12, altrimenti si � vulnerabili.

 Se si intende usare questo driver come modulo caricabile probabilmente
 si dovrebbe vedere la sezione ``Usare i driver Ethernet come modulo''
 per informazioni specifiche sui moduli.


 5.35.4.  SMC Elite Ultra32 EISA

 Stato: Supportata, Nome del driver: smc-ultra32 (+8390)

 Questa scheda EISA ha molto in comune con la sua controparte ISA.  Un
 driver funzionante (e stabile) � incluso sia nei kernel v2.0 che
 v.2.2.  Grazie a Leonard Zubkoff per aver acquistato alcune di queste
 schede dimodoch� sia stato possibile aggiungerne il supporto per
 Linux.


 5.35.5.  SMC EtherEZ (8416)

 Stato: Supportata, Nome del driver: smc-ultra (+8390)

 Questa scheda usa il chip 83c795 della SMC e supporta le specifiche
 Plug 'n Play.  Ha anche una modalit� SMC Ultra compatibile, che le
 permette di essere usata con il driver Ultra per Linux. Per migliori
 risultati si usi il programma fornito dalla SMC (disponibile nel loro
 sito www/ftp) per disabilitare il PnP e configurarla per la modalit� a
 memoria condivisa.  Si vedano le informazioni precedenti per alcune
 note sul driver Ultra.

 Per i kernel v1.2, la scheda ha dovuto essere configurata per l'uso a
 memoria condivisa.  Comunque i kernel v2.0 possono usare la scheda in
 modalit� a memoria condivisa o I/O programmato.  La modalit� a memoria
 condivisa � leggermente pi� veloce e usa anche meno risorse di CPU.


 5.35.6.  SMC EtherPower PCI (8432)

 Stato: Supportata, Nome del driver: de4x5, tulip

 NB: La EtherPower II � una scheda completamente diversa. Si veda
 sotto!  Queste schede sono un'implementazione base del 21040 della
 DEC, cio� un unico grosso chip e una coppia di transceiver.  Donald ha
 usato una di queste schede per lo sviluppo del driver 21040 generico
 (meglio noto come tulip.c).  Grazie a Duke Kamstra, ancora una volta,
 per aver fornito una scheda sulla quale fare lo sviluppo.

 Alcune delle ultime revisioni di questa scheda usano il pi� recente
 chip 21041 della DEC, che pu� causare problemi con versioni pi�
 vecchie del driver tulip. Se si hanno problemi ci si assicuri di usare
 l'ultima versione del driver, che potrebbe non essere ancora stata
 inclusa nell'attuale albero dei sorgenti del kernel.

 Si veda ``DEC 21040'' per ulteriori dettagli sull'uso di una di queste
 schede e sullo stato attuale del driver.

 Apparentemente, l'ultima revisione delle scheda, la EtherPower-II usa
 il chip 9432.  Al momento non � chiaro se questa funzioner� con il
 driver attuale.  Come sempre, se non si � sicuri, si verifichi di
 poter restituire la scheda se non funziona con il driver per Linux
 prima di pagarla.


 5.35.7.  SMC EtherPower II PCI (9432)

 Stato: Semi supportata, Nome del driver: epic100

 Queste schede, basate sul chip 83c170 della SMC, sono completamente
 differenti da quelle basate sul TULIP.  Un nuovo driver � stato
 incluso nei kernel v2.0 e v2.2 per supportare queste schede.  Per
 ulteriori dettagli si veda:

 http://cesdis.gsfc.nasa.gov/linux/drivers/epic100.html



 5.35.8.  SMC 3008

 Stato: Non supportata.

 Queste schede a 8 bit sono basate sul Fujitsu MB86950, che � un'antica
 versione del MB86965 usato dal driver at1700 per Linux.  Russ dice che
 probabilmente si pu� metter su un driver guardando il codice at1700.c
 e il suo packet driver DOS per la scheda Tiara (tiara.asm). Non sono
 molto comuni.


 5.35.9.  SMC 3016

 Stato: Non Supportata.

 Queste sono scheda 8390 a 16 bit ad I/O mappato, molto simili ad una
 generica scheda NE2000.  Se si riescono ad ottenere le specifiche
 dalla SMC, allora il porting del driver NE2000 probabilmente sar�
 abbastanza facile.  Non sono molto comuni.


 5.35.10.  SMC-9000 / SMC 91c92/4

 Stato: Supportata, Nome del driver: smc9194

 La SMC9000 � una scheda VLB basata sul chip 91c92.  Il 91c92 sembra
 essere presente anche su un po' di schede di altre marche, ma �
 abbastanza poco comune.  Erik Stahlman ([email protected]) ha scritto questo
 driver presente nei kernel v2.0, ma non nei pi� vecchi kernel v1.2.
 Si dovrebbe essere in grado di mettere il driver nell'albero dei
 sorgenti v1.2 con poche difficolt�.


 5.35.11.  SMC 91c100

 Stato: Semi supportata, Nome del driver: smc9194

 Si pensa che il driver SMC 91c92 funzioni per le schede basate su
 questo chip 100Base-T, ma al momento la cosa non � stata verificata.


 5.36.  Texas Instruments



 5.36.1.  ThunderLAN

 Stato: Supportata, Nome del driver: tlan

 Questo driver gestisce i molti dispositivi Ethernet built-in della
 Compaq, compresi i gruppi NetFlex e Netelligent.  Supporta anche i
 prodotti Olicom 2183, 2185, 2325 e 2326.


 5.37.  Thomas Conrad





 5.37.1.  Thomas Conrad TC-5048


 Questa � un'altra scheda PCI basata sul chip 21040 della DEC.

 Si veda la sezione sul chip 21040 (``DEC 21040'') per maggiori
 informazioni.


 5.38.  VIA


 Probabilmente non si vedr� mai una scheda di rete VIA, in quanto la
 VIA costruisce diversi chip usati da altri per costruire le loro
 schede Ethernet.  Hanno un sito WWW a:

 http://www.via.com.tw/


 5.38.1.  VIA 86C926 Amazon

 Stato: Supportato, Nome del driver: ne, ne2k-pci (+8390)

 Questo chip � quanto offre la VIA come PCI-NE2000.  Si pu� scegliere
 tra il driver ne.c per ISA e PCI o il driver solo per PCI ne2k-pci.c.
 Si veda la sezione sul PCI-NE2000 per ulteriori informazioni.


 5.38.2.  VIA 86C100A Rhine II (and 3043 Rhine I)

 Stato: supportato, Nome del driver: via-rhine

 Questo driver relativamente nuovo pu� essere trovato negli attuali
 kernel 2.0 e 2.1.  � un miglioramento rispetto al chip NE2000 86C926
 nel fatto che supporta i trasferimenti bus master, ma gli stretti
 requisiti sull'allineamento al bit 32 del buffer limitano i benefici
 guadagnati da ci�.  Per maggiori dettagli e driver aggiornati si veda:

 http://cesdis.gsfc.nasa.gov/linux/drivers/via-rhine.html



 5.39.  Western Digital


 Si veda la sezione ``SMC'' per informazioni sulle schede SMC (la SMC
 ha comprato la divisione delle schede di rete della Western Digital
 molti anni fa).


 5.40.  Winbond


 La Winbond in realt� non costruisce e vende schede complete al
 pubblico, piuttosto costruisce soluzioni Ethernet su un unico chip che
 altre compagnie comprano e mettono nelle loro schede PCI con il loro
 nome che poi vendono nei negozi.


 5.40.1.  Winbond 89c840

 Stato: Semi supportato, Nome del driver: winbond-840

 Questo driver attualmente non � distribuito con il kernel, poich� � in
 fase di test.  � disponibile a:

 http://cesdis.gsfc.nasa.gov/linux/drivers/test/winbond-840.c


 5.40.2.  Winbond 89c940

 Stato: Supportato, Nome del driver: ne, ne2k-pci (+8390)

 Questo chip � uno dei due pi� comunemente presenti sulle schede ne2000
 PCI a basso costo vendute da un sacco di costruttori.  Si noti che
 questo � sempre un progetto vecchio di dieci anni adattato ad un bus
 PCI.  Le prestazioni non saranno tanto migliori rispetto a quelle
 dell'equivalente modello ISA.


 5.41.  Xircom


 Per lungo tempo, la Xircom non ha voluto rilasciare la informazioni di
 programmazione necessarie per scrivere un driver, a meno che non si
 firmasse per averle.  Apparentemente abbastanza utenti Linux li hanno
 subbissati di richieste di supporto per il driver (affermano di
 supportate tutti i pi� popolari sistemi operativi di rete...) e quindi
 hanno cambiato la loro politica e hanno permesso il rilascio di
 documentazione senza dover firmare un accordo di non rivelazione.  Ad
 alcuni hanno detto che avrebbero rilasciato il codice sorgente del
 driver SCO, mentre ad altri hanno detto che non forniscono pi�
 informazioni su prodotti `obsoleti' come i primi modelli PE.  Se si �
 interessati e si vogliono verificare da s� queste cose, si pu�
 contattare la Xircom al 1-800-874-7875, 1-800-438-4526 o
 +1-818-878-7600.


 5.41.1.  Xircom PE1, PE2, PE3-10B*

 Stato: Non supportate.

 Non per dare tante speranze, ma se si ha uno di questi adattatori per
 porta parallela, si pu� riuscire ad usarlo nell'emulatore DOS con i
 driver per DOS forniti dalla Xircom.  Si deve permettere a DOSEMU di
 accedere alla propria porta parallela e probabilmente si dovr� giocare
 un po' con SIG (Silly Interrupt Generator di DOSEMU).


 5.41.2.  Schede PCMCIA Xircom

 Stato: Semi-supportate, Nome del driver: ????

 Per alcune delle schede PCMCIA della Xircom esistono dei driver
 disponibili nel pacchetto PCMCIA di David Hinds.  Si veda in questo
 per informazioni pi� aggiornate.


 5.42.  Zenith



 5.42.1.  Z-Note

 Stato: Supportata, Nome del driver: znet

 L'adattatore di rete built-in Z-Note � basato su un i82593 dell'Intel
 ed usa due canali DMA.  Esiste un driver (sperimentale?)  nell'attuale
 versione del kernel.   Come tutti gli adattatori pocket e per
 notebook, quando si esegue make config lo si trova nella sezione
 `Pocket and portable adaptors'.  Si noti che il ThinkPad 300 dell'IBM
 � compatibile con Z-Note.
 5.43.  Znyx



 5.43.1.  Znyx ZX342 (DEC 21040 based)

 Stato: Supportata, Nome del driver: de4x5, tulip

 Si ha la scelta fra due driver per le schede basate su questo chip.
 C'� un driver DE425 scritto da David e il driver generico per 21040
 che ha scritto Donanld.

 Si noti che dal 1.1.91, David ha aggiunto una opzione di compilazione
 che pu� permettere alle schede non DEC (come quella della Znyx) di
 funzionare con il suo driver.  Si veda il file README.de4x5 per i
 dettagli.

 Si veda la sezione ``DEC 21040'' per maggiori informazioni su queste
 schede e la situazione attuale del driver.


 5.44.  Identificare una scheda sconosciuta


 Bene, e cos� l'amico del vicino del cugino di vostro zio ha un
 fratello che ha trovato una vecchia scheda Ethernet ISA in un case AT
 che usava come gabbia per criceti di suo figlio.  In qualche modo
 questa scheda vi � capitata tra le mani e la volete  usare con Linux,
 ma nessuno ha idea di che scheda sia e non c'� alcuna documentazione.

 Per prima cosa, si cerchi un qualsiasi numero del modello che potrebbe
 essere un indizio.  Qualsisi numero di modello che contiene 2000
 potrebbe essere un clone della NE2000.  Qualsiasi scheda con 8003 o
 8013 da qualche parte sar� una scheda Western/Digital WD80x3 o una SMC
 Elite o un clone di una di esse.


 5.44.1.  Identificare il Network Interface Controller

 Si cerchi il chip pi� grosso nella scheda. Sar� il network controller
 (NIC) e la maggior parte pu� essere identificata dal numero.  Se si sa
 quale NIC c'� sulla scheda, quanto segue pu� aiutare ad scoprire che
 scheda �.

 Probabilmente il NIC ancora pi� comune � il DP8390 della National
 Semiconductor, noto anche come NS32490, DP83901, DP83902, DP83905 e/o
 DP83907.  E questi sono solo quelli fatti dalla National! Altre
 compagnie, come la Winbond e la UMC, costruiscono cloni del DP8390 e
 del DP83905, come il Winbond 89c904 (clone del DP83905) e l'UMC 9090.
 Se la scheda ha su una qualche forma di 8390, allora � possibile che
 sia un clone della ne1000 o della ne2000.  Le seconde schede pi�
 comuni basate su 8390 sono le schede wd80x3 e cloni.  Le schede con un
 DP83905 possono essere configurate come una ne2000 o come una wd8013.
 Le versioni pi� nuove delle schede wd80x3 genuine e delle SMC Elite
 hanno un 83c690 al posto del DP8390 originale.  Le schede SMC Ultra
 hanno un 83c790 ed usano un driver leggermente diverso dalle schede
 wd80x3.  Le schede SMC EtherEZ hanno un 83c795 ed usano lo stesso
 driver della SMC Ulta.  Tutte le schede con BNC basate su una qualche
 versione di 8390 o di un suo clone solitamente avranno un chip DIP a
 16 pin 8392 (o un 83c692, o un ???392) molto vicino al connettore BNC.

 Un altro NIC comune presente sulle schede pi� vecchie � l'Intel
 i82586.  Le schede che hanno questo NIC includono le 3c505, 3c507,
 3c523, Intel EtherExpress-ISA, Microdyne Exos-205T e la Racal-Interlan
 NI5210.

 Il NIC LANCE originale dell'AMD era numerato AM7990 e le revisioni pi�
 nuove includono i 79c960, 79c961, 79c965, 79c970 e 79c974.  La maggior
 parte delle schede con uno di questi funzioner� con il driver LANCE di
 Linux, ad eccezione delle vecchie schede Racal-Interlan NI6510 che
 hanno il loro driver apposito.

 Le schede PCI pi� nuove che hanno un DEC 21040, 21041, 21140 o un
 numero simile sul NIC dovrebbero essere in grado di usare il driver
 tulip o il de4x5.

 Altre schede PCI che hanno un grosso chip marchiato RTL8029 o 89C940 o
 86C926 sono cloni ne2000 e il driver nelle versioni di Linux 2.0 e
 superiori dovrebbe automaticamente rilevarle al boot.


 5.44.2.  Identificare l'indirizzo Ethernet

 Ogni scheda Ethernet ha il suo indirizzo personale ed unico a sei
 byte.  I primi tre byte di quell'indirizzo sono gli stessi per ogni
 scheda fatta da un particolare costruttore.  Per esempio tutte le
 schede SMC partono con 00:00:c0.  Gli ultimi tre sono assegnati dal
 costruttore univocamente ad ogni scheda che produce.

 Se la propria scheda ha un etichetta che d� tutti i 6 byte del suo
 indirizzo si pu� risalire al costruttore dai primi tre.  Comunque �
 pi� comune vedere solo gli ultimi tre byte stampati su un'etichetta
 attaccata alla PROM che non dir� niente.

 Si pu� determinare a quale rivenditore � stato assegnato un
 determinato indirizzo dall'RFC 1340.  Apparentemente in giro ci sono
 anche elenchi pi� aggiornati.  Si provi a fare una ricerca WWW o FTP
 di EtherNet-codes o Ethernet-codes e qualcosa si trover�.


 5.44.3.  Suggerimenti per provare ad usare una scheda sconosciuta


 Se non si � ancora sicuri di che scheda sia ma si � un po' ristretta
 la cerchia delle possibilit�, allora si pu� compilare un kernel con
 una serie di driver al suo interno e vedere se uno di essi rileva
 automaticamente la scheda al boot.

 Se il kernel non rileva la scheda, potrebbe essere che la scheda non �
 configurata ad uno degli indirizzi che i driver controllano quando
 cercano una scheda.  Se questo � il caso, si pu� provare a scaricare
 scanport.tar.gz da un sito ftp di Linux e vedere se pu� scoprire a che
 indirizzo � configurata.  Scansiona lo spazio I/O ISA da 0x100 a 0x3ff
 cercando dispositivi che non sono registrati in /proc/ioports.  Se
 trova un dispositivo sconosciuto ad un qualche indirizzo particolare,
 si pu� esplicitamente indirizzare il controllo a quell'indirizzo con
 un comando ether= al boot.

 Se si � riusciti a far rilevare la scheda, allora solitamente si pu�
 scoprire cosa fanno i ponticelli combiandone uno alla volta e vedendo
 a quale I/O base e IRQ la scheda viene poi rilevata.  Le impostazioni
 dell'IRQ possono essere determinate anche seguendo le tracce sul retro
 della scheda da dove sono saldati i ponticelli.  Contando i contatti
 dorati nel retro della scheda partendo dalla parte della scheda con la
 linghetta di metallo si troveranno gli IRQ 9, 7, 6, 5, 4, 3, 10, 11,
 12, 15, 14 rispettivamente nei contatti 4, 21, 22, 23, 24, 25, 34, 35,
 36, 37, 38.  Le schede a 8 bit hanno solo fino al contatto 31.

 I ponticelli che sembra non facciano niente solitamente servono per
 selezionare l'indirizzo di memoria della ROM di boot opzionale.  Altri
 ponticelli posizionati nei pressi dei connettorei BNC o RJ-45 o AUI
 solitamente servono per selezionare il mezzo d'uscita.  Tipicamente
 questi sono anche vicino allo `scatolotto nero' del convertitore di
 tensione marchiato YCL, Valor o Fil-Mag.

 Un bella collezione di impostazioni di ponticelli per diverse schede
 pu� essere trovata a:

 Ethercard Settings <http://www.slug.org.au/NIC/>



 5.45.  Driver per i dispositivi non Ethernet


 Ci sono alcuni altri driver nei sorgenti di Linux che si presentano ai
 programmi di rete come dispositivi simil-Ethernet, anche se non sono
 veramente Ethernet.  Per completezza sono qui brevemente elencati.

 dummy.c -- Lo scopo di questo driver � di fornire un dispositivo al
 quale far puntare un instradamento, ma che non trasmette realmente
 pacchetti.

 eql.c -- Load Equalizer (Equalizzatore di carico), schiavizza pi�
 dispositivi (solitamente modem) e bilancia il carico di trasmissione
 tra essi presentandoli come un unico dispositivo ai programmi di rete.

 ibmtr.c -- IBM Token Ring, che non � veramente Ethernet.  Broken-Ring
 necessita dell'instramento source e di altre brutte cose.

 loopback.c -- Dispositivo loopback al quale vanno tutti i pacchetti
 destinati alla macchina e partenti da questa.  Essenzialmente sposta
 semplicemente il pacchetto dalla coda TX nella coda RX.

 pi2.c -- Interfacce PI e PI2 dell'Ottawa Amateur Radio Club.

 plip.c - Parallel Line Internet Protocol, permette a due computer di
 inviarsi pacchetti attraverso le porte parallele connesse in maniera
 point-to-point (punto a punto).

 ppp.c -- Point-to-Point Protocol (RFC1331), per la trasmissione dei
 datagrammi multiprotocollo su una connessione Point-to-Point Link
 (solitamente modem).

 slip.c -- Serial Line Internet Protocol, permette a due computer di
 inviarsi pacchetti attraverso le porte seriali (solitamente via modem)
 connesse in maniera point-to-point (punto a punto).

 tunnel.c -- Fornisce un tunnel IP attraverso il quale si pu�
 incanalare il traffico di rete in maniera trasparente tra le
 sottoreti.

 wavelan.c -- Un transceiver radio tipo Ethernet controllato da un
 coprocessore Intel 82586 usato su altre schede Ethernet come la Intel
 EtherExpress.


 6.  Cavi, coassiali, doppini intrecciati

 Se si sta mettendo su una nuova rete, si dovr� decidere se usare thin
 Ethernet (cavo coassiale RG58 con connettori BNC) o 10baseT (cavi tipo
 telco a doppini intrecciati con connettori `telefonici' RJ-45 a otto
 vie).  La vecchia thick Ethernet, con cavi RG-5 a N connettori, �
 obsoleta e si vede poco in giro.

 Si veda ``Tipi di cavi...'' per una panoramica introduttiva ai cavi.
 Si noti inoltre che la FAQ di comp.dcom.lans.ethernet contiene un
 sacco di informazioni utili sui cavi e robe simili.  Si faccia FTP a
 rtfm.mit.edu e si cerchi nella directory /pub/usenet-by-hierarchy/ la
 FAQ di quel newsgroup.


 6.1.  Thin Ethernet (thinnet)


 Il cavo thin Ethernet � abbastanza economico.  Se si vuole farsi da
 soli i cavi, l'RG58A a solid-core costa $0.27/m mentre l'RG58AU
 stranded  � a $0.45/m.  I connettori BNC twist-on costano meno di due
 dollari l'uno e altri pezzi vari sono attrettanto economici.  �
 essenziale terminare correttamente ciascun capo del cavo con
 terminatori da 50 Ohm, che costano due dollari alla coppia.  �
 altrettanto vitale che il cavo non sia formato da pi� spezzoni: il
 connettore a `T' dev'essere attaccato direttamente alle schede
 Ethernet.

 Ci sono due svantaggi principali ad usare la thinnet.  Il primo � che
 � limitata a 10Mb/sec: i 100Mb/sec richiedono il doppino intrecciato.
 Il secondo svantaggio che se si ha un grande anello di macchine
 connesse assieme e qualche testone interrompe l'anello staccando un
 cavo da un connettore a T, l'intera rete va gi� perch� vede
 un'impedenza infinita (circuito aperto) invece dei 50 Ohm richiesti
 come terminazione.  Si noti che si pu� rimuovere la T stessa dalla
 scheda senza uccidere l'intera sottorete, purch� non si stacchino i
 cavi dalla T.  Naturalmente questa cosa disturber� la macchina dalla
 quale si � tolto il connettore a T 8-) Se se si sta facendo una
 piccola rete di due macchine, sono ancora necessari sia il connettore
 a T che i terminatori da 50 Ohm: non si pu� semplicemente connettere
 le due macchine assieme!


 Ci sono anche dei simpatici sistemi di cavi che apparentemente
 sembrano un unico cavo, ma in realt� il cavo fa un giro da parte a
 parte dentro il rivestimento esterno, dando al cavo quella tipica
 sezione ovale.  Nel punto dove torna indietro l'anello � messo un
 connettore BNC che si pu� connettere alla propria scheda.   Quindi si
 ha l'equivalente di due cavi e un BNC a T, ma in questo caso �
 impossibile per l'utilizzatore rimuovere un cavo da un lato della T e
 disturbare la rete.



 6.2.  Doppino intrecciato (twisted pair)


 Le reti a doppini intrecciati necessitano di hub (concentratori)
 attivi, che costano attorno ai $50 e il costo reale del semplice cavo
 pu� essere pi� alto di quello necessario per la thinnet.  Si pu�
 tranquillamente ignorare quelli che dicono che si pu� usare il
 cablaggio telefonico gi� esistente visto che dove c'� � una rara
 installazione.

 D'altra parte, tutte le specifiche Ethernet a 100Mb/sec usano doppini
 intrecciati e sono usati pure nella maggior parte delle nuove
 installazioni.  Inoltre, Russ Nelson aggiunge che �Le nuove
 installazioni dovrebbero usare cavi di categoria 5.  Qualsiasi altra
 cosa spreca il proprio tempo, in quanto un 100Base-qualsiasi
 richieder� cavi categoria 5.�

 Se si sta solamente connettendo macchine, � possibile evitare l'uso di
 un hub, scambiando le coppie Rx e Tx (1-2 e 3-6).

 Se si guarda il connettore RJ-45 (come se lo si stesse connettendo
 nella propria bocca) con il gancetto di bloccaggio in alto, allora i
 pin sono numerati da 1 a 8 da sinistra verso destra.  L'uso dei pin �
 il seguente:


         Numero Pin              Assegnamento
         ----------              ------------
         1                       Output Data (+)
         2                       Output Data (-)
         3                       Input Data (+)
         4                       Riservato per l'uso telefonico
         5                       Riservato per l'uso telefonico
         6                       Input Data (-)
         7                       Riservato per l'uso telefonico
         8                       Riservato per l'uso telefonico



 Se si vuole fare un cavo, quanto segue vi torner� utile.  Le coppie di
 segnali differenziali devono essere nella stessa coppia intrecciata
 per ottenere la minima impendenza/perdita richiesta di un cavo UTP.
 Se si guarda la tabella precedente, si vedr� che 1+2 e 3+6 sono i due
 insiemi di coppie di segnali differenziali.  Non 1+3 e 2+6!!!!!!  A
 10MHz e basse distanze, si pu� ancora far qualcosa con questi errori.
 Ma non ci si pensi nemmeno lontanamente a 100Mhz.

 Per un normale cavo con terminazioni `A' e `B', si deve usare la
 mappatura diretta pin a pin, con l'ingresso e l'uscita che usano
 ciascuna una coppia di doppini intrecciati (per esigenze di
 impedenza). Questo significa che 1A va a 1B, 2A a 2B, 3A a 3B e 6A a
 6B. I cavetti che collegano 1A-1B e 2A-2B devono essere un doppino
 intrecciato. Ed anche i cavetti che collegano 3A-3B e 6A-6B devono
 essere un'altro doppino intrecciato.

 Ora se non si ha un hub e si vuole fare un `null cable', quel che si
 deve fare � rendere l'ingresso di `A' l'uscita di `B' e l'uscita di
 `A' l'ingresso di `B', senza cambiare la polarit�. Questo significa
 connettere 1A a 3B (out+ di A a in+ di B) e 2A a 6B (out- A a in- B).
 Queste due connessioni devono essere un doppino intrecciato.
 Trasportano quel che la scheda/spina `A' considera l'uscita e quel che
 � visto come ingresso dalla scheda/spina `B'. Poi si connetta 3A a 1B
 (in+ A a out+ B) e si connetta anche 6A a 2B (in- A a out- B). Anche
 queste due connessioni devono essere un doppino intrecciato.
 Trasportano quel che la scheda/spina `A' considera ingresso e quel che
 la scheda/spina `B' considera uscita.

 Quindi se si considera un normale cavo per avere un cavo `null', si
 tagli via uno dei capi, si scambino di posto i doppini intrecciati di
 Rx e Tx nella nuova spina e la si chiuda. Niente di complicato. Si
 deve semplicemente portare il segnale Tx di una scheda nel Rx
 dell'altra e viceversa.

 Si noti che prima che il 10BaseT fosse ratificato come standard,
 c'erano altri formati di rete che usavano connettori RJ-45 e lo stesso
 schema di connessione appena visto.  Esempi sono la LattiNet della
 SynOptics e la StarLAN dell'AT&T.  In alcuni casi (come con le prime
 schede 3c503) si potevano impostare dei ponticelli per far s� che la
 scheda dialogasse con hub di diverso tipo, ma la maggior parte delle
 schede progettate per questi vecchi tipi di reti non funzioneranno con
 le reti/hub 10BaseT (si noti che se la scheda ha anche una porta AUI,
 allora non c'� alcuna ragione per non usarla assieme con un
 transceiver da AUI a 10BaseT).


 6.3.  Thick Ethernet

 La thick Ethernet � praticamente obsoleta e solitamente � usata solo
 per mantenere la compatibilit� con un'installazione preesistente.  Si
 pu� fare uno strappo alle regole e connettere thick e thin Ethernet
 assieme con un connettore passivo N-to-BNC da 3 dollari, spesso la
 miglior soluzione per espandere una thicknet gi� esistente.  In questo
 caso una soluzione corretta (ma pi� costosa) sarebbe di usare un
 ripetitore (repeater).

 7.  Configurazione del software e diagnotici


 In molti casi, se la configurazione viene fatta via software e salvata
 poi in una EEPROM, si dovr� avviare DOS e usare il programma per DOS
 fornito dal rivenditore per impostare IRQ, I/O, indirizzo di memoria e
 altre robette della scheda.  D'altra parte � auspicabile che questa
 sia una cosa che si dovr� fare solo una volta.  Se non si ha il
 software per DOS della propria scheda, si provi a guardare nel sito
 WWW del produttore.  Se non si conosce il nome del sito si provi ad
 indovinarlo, per esempio `www.produttore.com' dove `produttore' � il
 nome del produttore della propria scheda.  Questa cosa funziona per la
 SMC, la 3Com e molti molti altri produttori.

 Per alcune schede esistono le versioni Linux delle utilit� di
 configurazione e sono qui elencate.  Donald ha scritto alcuni piccoli
 programmi per Linux di diagnostica per le schede.  La maggior parte di
 questi sono il prodotto finale di strumenti di debug che ha creato
 durante la scrittura dei diversi driver.  Non ci si aspettino
 interfacce a menu carine.  Per poterli usare nella maggioranza dei
 casi sar� necessario leggere il codice sorgente.  Anche se per la
 propria particolare scheda non esiste un diagnostico, si possono
 ottenere comunque alcune informazioni digitando semplicemente cat
 /proc/net/dev (assumendo che all'avvio la propria scheda sia stata
 almeno rilevata).

 In tutti i casi, si dovr� usare la maggior parte di questi programmi
 come root (per permettere l'I/O nelle porte) e prima di farlo �
 consigliabile disattivare la scheda Ethernet usando ifconfig eth0
 down.


 7.1.  Programmi di configurazione per le schede Ethernet



 7.1.1.  Schede WD80x3


 Per quanti hanno schede wd80x3, c'� il programma wdsetup che pu�
 essere trovato nel file wdsetup-0.6a.tar.gz nei siti ftp su Linux.
 Non � mantenuto attivamente e non � aggiornato da un po' di tempo.  Se
 nel proprio caso funziona, allora bene; se non funziona, si usi la
 versione DOS che si dovrebbe aver ricevuto con la scheda.  Se non si
 ha la versione DOS, si sar� felici di sapere che i dischetti
 aggiornati di configurazione e dei driver possono essere scaricati dal
 sito ftp della SMC.  Natualmente, si deve possedere una scheda con la
 EEPROM per usare questo programma.  Le vecchie, ma proprio vecchie,
 schede wd8003 e alcuni cloni del wd8013 per configurare la scheda
 usano dei ponticelli.


 7.1.2.  Schede Digital/DEC


 La scheda Digital EtherWorks 3 pu� essere configurata in maniera
 simile che con il programma DOS NICSETUP.EXE.  David C. Davies ha
 scritto, assieme al driver, questo progrmma e altri strumenti per la
 EtherWorks 3.  Si cerchi nella directory
 /pub/linux/system/Network/management nel sito FTP su Linux pi� vicino,
 il file chiamato ewrk3tools-X.XX.tar.gz.


 7.1.3.  Schede NE2000+ o AT/LANTIC


 Alcune implementazioni del DP83905 della National Semiconductor (come
 le AT/LANTIC e le NE2000+) sono configurabili via software (si noti
 che queste schede emulano anche una wd8013!).  Per configurare queste
 schede si pu� scaricare il file /pub/linux/setup/atlantic.c dal server
 ftp di Donald, cesdis.gsfc.nasa.gov.  Inoltre, con tutte queste schede
 sembra funzionare anche il programma per le schede DP83905 della
 Kingston, poich� non fa controlli sul tipo di rivenditore prima di
 permetterne l'uso.  Si segua l'URL seguente: Kingston Software
 <http://www.kingston.com/download/etherx/etherx.htm> e si scarichi
 20XX12.EXE e INFOSET.EXE.

 Si faccia attenzione quando si configurano schede NE2000+, poich�
 alcune impostazioni errate possono causare problemi.  Un esempio
 tipico � l'abilitazione accindentale della ROM di boot nella EEPROM
 (anche se la ROM non � installata) con una impostazione che va in
 conflitto con la scheda VGA.  Il risultato � che il computer
 semplicemente fa beep quando lo si accende e sullo schermo non succede
 niente.

 Solitamente si pu� risolvere questa situazione nel modo seguente.  Si
 rimuova la scheda dalla macchina e poi si riavvii e si entri nel menu
 di configurazione del BIOS.  Si cambi la voce `Display Adapter' in
 `Not Installed' e si imposti il disco di avvio di default in `A:' (il
 proprio lettore di floppy).  Si cambi anche la voce `Wait for F1 if
 any Error' in `Disabled'.  In questo modo, il computer dovrebbe
 avviarsi senza l'intervento dell'utente.  Ora si crei un dischetto DOS
 avviabile (`format a: /s /u') e si copi dentro il floppy il programma
 default.exe dell'archivio 20XX12.EXE suddetto.  Poi si digiti echo
 default > a:autoexec.bat in modo tale che il programma che reimposta i
 valori predefiniti della scheda sia eseguito automaticamente quando si
 avvia da questo dischetto.  Si spenga la macchina, si reinstalli la
 scheda ne2000+, si inserisca il nuovo dischetto di boot e la si
 riaccenda.  Probabilmente far� ancora beep, ma alla fine si dovrebbe
 vedere la lucetta del floppy che si accende quando finalmente fa il
 boot.  Si aspetti un paio di minuti che il floppy si fermi, il che
 indica che ha finito di eseguire il programma default.exe e poi si
 spenga il computer.  Dopo lo si riaccenda ancora e teoricamente si
 dovrebbe avere ancora un display che funziona, permettendo cos� di
 risistemare le impostazioni del BIOS e modificare i valori della
 EEPROM della scheda come si vuole.

 Si noti che se non si ha DOS sotto mano, si pu� fare tutto quello
 sopra con un dischetto di avvio di Linux che lancia automaticamente il
 programma atlantic di Donald (con le giuste opzioni d'avvio) invece
 che con un dischetto di avvio di DOS che lancia automaticamente il
 programma default.exe.


 7.1.4.  Schede 3Com


 La famiglia di schede Etherlink III della 3Com (p.es. 3c5x9) pu�
 essere configurata usando un'altra utilit� di configurazione di
 Donald.  Per configurarle si pu� scaricare il file
 /pub/linux/setup/3c5x9setup.c dal server ftp di Donald,
 cesdis.gsfc.nasa.gov (si noti che il programma DOS di configurazione
 3c5x9B pu� avere pi� opzioni pertinenti alla nuova serie ``B'' della
 famiglia Etherlink III).


 7.2.  Programmi diagnostici per schede Ethernet


 Tutti i programmi diagnostici scritti da Donald possono essere
 ottenuti da questo URL:

 Ethercard Diagnostics
 <ftp://cesdis.gsfc.nasa.gov/pub/linux/diag/index.html>

 Allied Telesis AT1700: si cerchi il file /pub/linux/diag/at1700.c su
 cesdis.gsfc.nasa.gov.

 Cabletron E21XX: si cerchi il file /pub/linux/diag/e21.c su
 cesdis.gsfc.nasa.gov.

 P PCLAN+: si cerchi il file /pub/linux/diag/hp+.c su
 cesdis.gsfc.nasa.gov.

 Intel EtherExpress: si cerchi il file /pub/linux/diag/eexpress.c su
 cesdis.gsfc.nasa.gov.

 Schede NE2000: si cerchi il file /pub/linux/diag/ne2k.c su
 cesdis.gsfc.nasa.gov.  C'� ancora una versione PCI per gli ormai
 comuni cloni della NE2000-PCI.

 RealTek (ATP) Pocket adaptor: si cerchi il file /pub/linux/diag/atp-
 diag.c su cesdis.gsfc.nasa.gov.

 Tutte le altre schede: si provi a digitare cat /proc/net/dev e dmesg
 per vedere quali informazioni utili possiede il kernel sulla scheda in
 oggetto.


 8.  Informazioni tecniche

 Queste informazioni saranno utili a quanto vogliono capire un po'
 meglio come funziona la loro scheda, oppure vogliono giocare con il
 driver o anche provare a fare il loro driver personale per una scheda
 che attualmente non � supportata.  Se non si cade in queste categorie,
 allora si pu� pure saltare questa sezione.


 8.1.  I/O programmato, memoria condivisa e DMA a confronto

 Se gi� si ricevono e inviano pacchetti back-to-back (NdT letteralmente
 ``uno dopo l'altro''), non si possono mettere altri bit nel cavo.
 Ogni scheda Ethernet moderna pu� ricevere pacchetti back-to-back.  I
 driver per Linux per DP8390 (wd80x3, SMC-Ultra, 3c503, ne2000, ecc.)
 arrivano abbastanza vicino all'invio di pacchetti back-to-back (il
 limite � dato dalla reale latenza degli interrupt) e l'hardware 3c509
 e AT1500 non ha problemi ad inviare automaticamente pacchetti back-to-
 back.

 Il bus ISA pu� fare 5.3MB/sec (42Mb/sec), che sembra pi� che
 sufficiente per una Ethernet a 10Mbps.  Nel caso di schede a 100Mpbs,
 chiaramente � necessario un bus pi� veloce per sfruttare la larghezza
 di banda della rete.


 8.1.1.  I/O programmato (Programmed I/O) (es. NE2000, 3c509)

 Pro: Non usa nessuna risorsa di sistema riservata, solo alcuni
 registri di I/O e non ha il limite dei 16M.

 Contro: Solitamente pi� bassa � la velocit� di trasferimento, pi� la
 CPU attende senza far niente, e l'accesso ai pacchetti interleaved �
 solitamente difficile se non impossibile.


 8.1.2.  Memoria condivisa (Shared memory) (es. WD80x3, SMC-Ultra,
 3c503)

 Pro: Pi� veloce e semplice dell'I/O programmato e inoltre permette
 l'accesso casuale ai pacchetti. Dove possibile, i driver per Linux
 calcolano il checksum dei pacchetti IP in ingresso non appena sono
 copiati fuori dalla scheda. Tale cosa risulta in un'ulteriore
 riduzione dell'uso della CPU rispetto ad una equivalente scheda PIO.

 Contro: Usa maggiore spazio di memoria (molto grande per gli utenti
 DOS, essenzialmente non problematico sotto Linux) e usa ancora
 parecchio la CPU.


 8.1.3.  Accesso diretto alla memoria (DMA) di tipo slave (normale)
 (non per Linux!)

 Pro: Libera la CPU durante il reale trasferimento dei dati.

 Contro: Il controllo delle condizioni al contorno, l'allocazione di
 buffer contigui e la programmazione dei registri DMA la rende la
 tecnica pi� lenta fra tutte.  Inoltre satura facilmente un canale DMA
 e richiede buffer allineati in memoria bassa.


 8.1.4.  Accesso diretto alla memoria (DMA) di tipo bus master (es.
 LANCE, DEC 21040)

 Pro: Libera la CPU durante il trasferimento dei dati, pu� legare
 assieme i buffer, nel bus ISA pu� richiede una piccola (nulla) perdita
 del tempo di CPU. La maggior parte dei driver per Linux bus-master
 usano lo schema `copybreak' nel quale i grossi pacchetti sono messi
 direttamente dalla scheda nel buffer di rete del kernel, e i pacchetti
 piccoli sono copiati invece dalla CPU che li carica in cache per le
 eleborazioni successive.

 Contro: (Applicabile solamente alle schede per bus ISA) Per la scheda
 sono necessari buffer in memoria bassa e di canali DMA. Qualsiasi
 dispositivo bus-master avr� problemi con altri dispositivi non bus-
 master che si appropriano del bus, come alcuni primitivi adattatori
 SCSI. Alcuni chipset delle schede madri mal progettati hanno problemi
 con il bus-master. Una ragione per non usare alcun tipo di dispositivo
 DMA � un processore 486 progettato come rimpiazzo di un 386: questi
 processori devono scaricare la loro cache ad ogni ciclo di DMA (fra
 questi ci sono Cx486DLC, Ti486DLC, Cx486SLC, Ti486SLC, ecc.)


 8.2.  Scrivere un driver


 La sola cosa che serve per usare una scheda Ethernet con Linux � il
 driver appropriato.  Per questo � essenziale che i costruttori
 rilascino le informazioni tecniche di programmazione al pubblico senza
 che qualcuno debba vendersi per vita per averle.  Un buon esempio
 sulla possibilit� di ottenere documentazione (oppure se non si sta
 scrivendo codice, sulla possibilit� che qualcun'altro scriver� quel
 driver di cui si ha veramente bisogno) � la disponibilit� del packet
 driver Crynwr (nato Clarkson). Russ Nelson guida questa operazione ed
 � stato molto d'aiuto nel supportare lo sviluppo dei driver per Linux.
 I net-surfer possono provare questo URL per vedere il software di
 Russ.


 Russ Nelson's Packet Drivers <http://www.crynwr.com/crynwr/home.html>

 Avuta la documentazione si pu� scrivere un driver per la propria
 scheda e usarlo per Linux (almeno in teoria).  Si tenga presente che
 alcuni dei vecchi hardware che erano stati pensati per macchine di
 tipo XT non funzioneranno molto bene in un ambiente multitasking come
 Linux.  L'uso di uno di questi comporter� non pochi problemi se la
 propria rete deve sostenere un traffico ragionevole.

 La maggior parte delle schede ha dei driver per le interfacce MS-DOS
 come NDIS o ODI, ma questi sono inutili per Linux.  Molti hanno
 suggerito di fare il link direttamente di questi o utilizzare una
 traduzione automatica, ma queste sono cose praticamente impossibili.
 I driver MS-DOS si aspettano di essere in modalit� a 16 bit e si
 basano su `interrupt software', cose che sono entrambe incompatibili
 con il kernel di Linux.  Questa incompatibilit� � in realt� una
 caratteristica di Linux, in quanto alcuni driver per Linux sono spesso
 decisamente migliori delle loro controparti MS-DOS. La serie `8390'
 dei driver, per esempio usa un buffer di trasmissione ping-pong, che
 ora � stato introdotto anche nel mondo MS-DOS.

 (Buffer Tx di tipo ping-pong significa usare almeno due buffer di
 pacchetti per i pacchetti da trasmettere.  Uno � caricato mentre la
 scheda sta trasmettendo l'altro.  Il suo contenuto viene poi trasmesso
 non appena � conclusa la trasmissione dell'altro e cos� via.  In
 questo modo, la maggior parte delle schede sono in grado di inviare
 continuamente pacchetti back-to-back nel cavo.)

 OK. Quindi si � deciso che si vuole scrivere un driver per la scheda
 Ethernet CippaLippa, poich� si possiedono le informazioni di
 programmazione e nessuno l'ha ancora fatto (... queste sono le due
 condizioni principali ;-) Si dovrebbe partire dallo scheletro per un
 driver di rete fornito assieme ai sorgenti di Linux.  Pu� essere
 trovato nel file /usr/src/linux/drivers/net/skeleton.c in tutti i
 kernel recenti.  Si dia un'occhiata anche alla Kernel Hackers Guide, a
 questo indirizzo: KHG
 <http://www.redhat.com:8080/HyperNews/get/khg.html>



 8.3.  Interfaccia dei driver verso il kernel


 Ecco alcune note sulle funzioni che si dovranno scrivere se si crea un
 nuovo driver.  Si leggano queste cose assieme allo scheletro del
 driver citato prima per aiutarsi a chiarire un po' le cose.


 8.3.1.  Probe (rilevamento)


 � chiamata all'avvio per controllare l'esistenza della scheda.  Meglio
 se si pu� farlo non intrusivamente leggendo dalla memoria, ecc.  Pu�
 anche leggere dalle porte I/O.  La scrittura iniziale nelle porte di
 I/O durante il probe non � una buona cosa in quanto pu� uccidere un
 altro dispositivo.  Una parte dell'inizializzazione del dispositivo �
 fatta qui (allocando lo spazio I/O, IRQ, riempendo i campi di
 dev->???, ecc).  Si deve sapere a quali porte di I/O o zone di memoria
 pu� essere configurata la scheda, come abilitare la memoria condivisa
 (se usata), come selezionare/abilitare la generazione degli interrupt,
 ecc.





 8.3.2.  Interrupt handler (gestore dell'interrupt)


 � chiamato dal kernel quando la scheda genera un interrupt.  Ha il
 compito di determinare perch� la scheda lo ha generato e comportarsi
 di conseguenza.  Le usuali condizioni di interrupt sono la ricezione
 di dati, il completamento della trasmissione, la segnalazione di
 condizioni d'errore.  Si deve conoscere ogni bit di stato
 dell'interrupt di una qualche importanza in modo da portersi
 comportare di conseguenza.


 8.3.3.  Funzione transmit


 � collegata a dev->hard_start_xmit() ed � chiamata dal kernel quando
 ci sono alcuni dati che il kernel vuole depositare nel dispositivo.
 Mette i dati nella scheda e avvia la trasmissione.  Si deve sapere
 come raccogliere i dati, come metterli dentro la scheda (copia della
 memoria condivisa, trasferimento PIO, DMA?) e il posto giusto dove
 metterli.  Poi si deve sapere come dire alla scheda di inviare i dati
 nel cavo e (possibilmente) sollevare un interrupt quando ha fatto.
 Quando l'hardware non pu� accettare ulteriori pacchetti dovrebbe
 impostare il flag dev->tbusy.  Quando � disponibile dello spazio,
 solitamente durante un interrupt per il completamento della
 trasmissione, dev->tbusy dovrebbe essere liberato e i livelli pi�
 elevati informati con mark_bh(INET_BH).


 8.3.4.  Funzione receive


 � chiamata dall'interrupt handler del kernel quando ci sono dei dati
 nella scheda.  Toglie i dati dalla scheda, li impacchetta in un
 sk_buff e informa il kernel che i dati sono l�, dimodoch� questo possa
 fare una netif_rx(sk_buff).  Si deve sapere come abilitare la
 generazione di un interrupt sulla ricezione di dati, come controllare
 qualsiasi bit di stato della ricezione e come togliere i dati dalla
 scheda (ancora memoria condivisa, PIO, DMA, ecc.).


 8.3.5.  Funzione open


 � collegata a dev->open ed � chiamata dagli strati di rete quando
 qualcuno fa ifconfig eth0 up per attivare il dispositivo ed abilitarlo
 per la Rx/Tx di dati.  Qualsiasi inizializzazione speciale che non
 viene fatta nella sequenza di probe (abilitare la generazione degli
 IRQ, ecc.) dovrebbe andare qui.


 8.3.6.  Funzione close (opzionale)


 Questa mette la scheda in uno stato decente quando qualcuno fa
 ifconfig eth0 down.  Dovrebbe liberare gli IRQ e i canali DMA se
 l'hardware lo permette e disabilitare qualsiasi cosa che possa far
 risparmiare corrente (come il transceiver).


 8.3.7.  Funzioni varie


 Cose come una funzione di reinizializzazione, cosicch� se le cose
 vanno male, il driver pu� provare, come ultima risorsa, a ripristinare
 la scheda.  Solitamente � fatto quando una trasmissione va in time out
 o cose simili.  Pu� essere utile anche una funzione per leggere i
 registri di statistica delle scheda (se ce li ha).


 8.4.  Informazioni tecniche dalla 3Com


 Se si � interessati a lavorare su un driver per una scheda 3Com, si
 possono ottenere informazioni tecniche direttamente dalla 3Com.
 Cameron � stato talmente gentile da spiegarci come averle:

 �Gli adattatori Ethernet della 3Com sono documentati per chi vuole
 scrivere un driver nei nostri `Technical Reference' (TR).  Questi
 manuali descrivono le interfacce di programmazione delle schede ma non
 parlano della diagnostica, programmi d'installazione, ecc. tutte
 quelle cose che interessano all'utilizzatore finale.

 I TR sono distribuiti dal dipartimento di marketing della Network
 Adapter Division.  Per far funzionare le cose in maniera efficiente,
 la distribuzione � centralizzata in una cosa detta `CardFacts'.
 CardFacts � un sistema telefonico automatizzato.  Se lo si chiama con
 un telefono a toni pu� inviare fax dove si richiede.  Per ottenere un
 TR, si chiami CardFacts al 408-727-7021.  Gli si chieda il
 ``Developer's Order Form'' (modulo d'ordine per sviluppatori),
 documento numero 9070.  Si tenga sotto mano il proprio numero di fax
 quando si chiama.  Si compili il modulo d'ordine e lo si invii via fax
 al 408-764-5004.  I manuali sono spediti con il servizio ``2nd Day''
 della Federal Express.

 Alcuni pensano che diamo via troppo facilmente i manuali e cercano
 prove per dire il sistema � troppo costoso e che occupa troppo tempo e
 sforzi.  Da tempo, i nostri clienti sono sempre stati contenti di
 questa cosa e non ci sono mai stati problemi nonostante le quantit� di
 richieste che riceviamo.  Abbiamo bisogno della loro continua
 cooperazione e riserbo per mantenere le cose cos�.�


 8.5.  Note sulle schede basate su PCnet / LANCE di AMD


 Il chip LANCE (Local Area Network Controller for Ethernet) era
 l'offerta originale dell'AMD e da allora � stato rimpiazzato dal chip
 `PCnet-ISA', noto anche come 79C960.  Si noti che il nome `LANCE' �
 stuck e alcuni ancora fanno riferimento ai nuovi chip con il vecchio
 nome.  Dave Roberts della Network Products Division di AMD � stato
 talmente gentile da fornire le seguenti informazioni riguardo questo
 chip:

 �Funzionalmente, � equivalente a una NE1500. L'insieme dei registri �
 indentico a quello del vecchi LANCE con le aggiunte dell'architettura
 1500/2100.  I vecchi driver per 1500/2100 funzioneranno anche con il
 PCnet-ISA.  L'architettura degli NE1500 e degli NE2100 in pratica � la
 stessa.  Inizialmente la Novell l'ha chiamata 2100, ma hanno poi
 provato a distinguere tra le schede per il coassiale e le 10Base-T.
 Qualsiasi cosa che era solamente 10Base-T � stata numerata
 nell'intervallo 1500.  Questa � la sola differenza.

 Molte compagnie offrono prodotti basati su PCnet-ISA, incluse HP,
 Racal-Datacom, Allied Telesis, Boca Research, Kingston Technology,
 ecc.  Le schede in pratica sono le stesse se non per il fatto che
 alcuni costruttori hanno aggiunte le caratteristiche `jumperless'
 (senza ponticelli) che permettono la configurazione via software.  La
 maggior parte non l'ha fatto.  L'AMD offre un progetto standard per
 una scheda che usa il chip PCnet-ISA e molti costruttori usano il
 nostro progetto senza modifiche.  Questo significa che chiunque voglia
 scrivere dei driver per la maggior parte delle schede basate su PCnet-
 ISA pu� semplicemente prendere il data-sheet dall'AMD.  Si chiami il
 nostro centro di distribuzione della documentazione al (800)222-9323 e
 si chieda del data sheet per il Am79C960, il chip PCnet-ISA.  �
 gratis.

 Un modo veloce per capire se la scheda � una di quelle basate sul
 progetto standard, � quello di osservarla.  Se � una standard,
 dovrebbe avere un grosso chip, un cristallo, una piccola PROM
 d'indirizzo IEEE, probabilmente un socket per una ROM di boot e un
 connettore (1, 2 o 3 a seconda dei mezzi supportati).  Si noti che se
 � una scheda per cavo coassiale, avr� anche un po' di roba per il
 trasceiver, ma dovrebbe essere nei pressi del connettore e ben
 distante dal PCnet-ISA.�

 Una nota per gli aspiranti hacker � che differenti implementazioni del
 LANCE effettuano il `restart' (riavvio) in modi diversi.  Alcune
 riprendono da dove sono state interrotte, mentre altre ripartono
 dall'inizio, come se fossero state inizializzate.


 8.6.  Multicast e modalit� promiscua


 Un'altra delle cose a cui ha lavorato Donald � l'implementazione degli
 ``agganci'' (hook) per il multicast e la modalit� promiscua
 (promiscuous mode). Tutti i driver ISA rilasciati (cio� non ALPHA) ora
 supportano la modalit� promiscua.

 Donald scrive: �Inizierei con il parlare della modalit� promiscua, che
 concettualmente � facile da implementare.  Per la maggior parte
 dell'hardware semplicemente si deve impostare un bit di registro e da
 allora si riceveranno tutti i pacchetti che passano su quel cavo.
 Beh, non � proprio cos� facile: per alcune schede si deve disabilitare
 la scheda (potenzialmente perdendo alcuni pacchetti), riconfigurarla e
 poi riabilitarla.  OK, visto che questo � facile, adesso passo a
 qualcosa che non � proprio cos� ovvia: il multicast.  Pu� essere fatto
 in due modi:


 1. Usando la modalit� promiscua e un filtro di pacchetti come il
    Berkeley packet filter (BPF).  Il BPF � un linguaggio stack di
    pattern matching (ricerca delle corrispondenze), dove si scrive un
    programma che raccoglie gli indirizzi ai quali si � interessati.
    Il suo vantaggio � che � molto generale e programmabile.  Lo
    svantaggio � che non c'� un metodo generale per il kernel per
    evitare di attivare la modalit� promiscua e far passare ogni
    pacchetto che attraversa il cavo su ognuno dei filtri di pacchetti
    registrati.  Si veda ``Il Berkeley Packet Filter'' per maggior
    informazioni.

 2. Usare il filtro multicast su scheda che hanno la maggior parte
    delle schede.

 Immagino che dovrei elencare quel poco che mettono a disposizione le
 schede o i chip:



 Chip/scheda  Promiscua  Filtro multicast
 -----------------------------------------
 Seeq8001/3c501  S�     Filtro binario (1)
 3Com/3c509      S�     Filtro binario (1)
 8390            S�     Hash a sei bit con Autodin II (2) (3)
 LANCE           S�     Hash a sei bit con Autodin II (2) (3)
 i82586          S�     Hash a sei bit con Hidden Autodin II (2) (4)

 1. Queste schede affermano di avere un filtro, ma � un semplice s�/no:
    �accetta tutti i pacchetti multicast� o �non accettare i pacchetti
    multicast�.

 2. AUTODIN II � il polimonio di CRC (codice ciclico a ridonadanza)
    standard di Ethernet.  In questo schema, degli indirizzi multicast
    viene calcolata l'hash e vengono poi ricercati in una tabella hash.
    Se � abilitato il bit corrispondente del pacchetto, allora questo �
    accettato.  I pacchetti Ethernet sono progettati in modo che
    l'hardware per fare questa cosa sia banale: semplicemente si
    memorizzano i sesti bit del circuito CRC (comunque necessario per
    il controllo degli errori) dopo i primi sei otteti (l'indirizzo di
    destinazione) e li si usa per indicizzare nella tabella hash (sei
    bit: una tabella a 64 bit).

 3. Questi chip usano la hash a sei bit e la tabella dev'essere
    calcolata e caricata dall'host.  Questo significa che il kernel
    deve contenere il codice per il CRC.

 4. Il 82586 usa la hash a sei bit internamente, ma calcola da solo la
    tabella di hast dall'elenco degli indirizzi multicast da accettare.

 Si noti che nessuno di questi chip fa un filtraggio perfetto e c'�
 ancora bisogno di un modulo a livello intermedio per fare il
 filtraggio finale.  Si noti pure che in tutti i casi si deve mantenere
 un'elenco completo degli indirizzi multicast accettati per ricalcolare
 la tabella di hash quando cambia.


 8.7.  Berkeley Packet Filter (BPF)

 L'idea diffusa fra gli sviluppatori � che le funzionalit� BPF non
 dovrebbero essere fornite dal kernel, ma dovrebbero essere in una
 libreria di compatibilit� (si spera poco usata).

 Per quelli che non lo conoscono, il BPF (Berkeley Packet Filter --
 filtro dei pacchetti di Berkeley) � un meccanismo per specificare agli
 strati di rete del kernel i pacchetti ai quali si � interessati. �
 implementato come un interprete specializzato di un linguaggio stack
 costruito dentro il codice di rete a basso livello. Un'applicazione
 passa un programma scritto in questo linguaggio al kernel ed il kernel
 esegue il programma su ciascun pacchetto in ingresso. Se il kernel ha
 pi� applicazioni BPF, ogni programma � eseguito su ogni pacchetto.

 Il problema � che � difficile dedurre dal programma di filtraggio dei
 pacchetti a quale tipo di pacchetti l'applicazione � veramente
 interessata, e quindi la soluzione generale � di eseguire sempre il
 filtro. Si immagini un programma che registra un programma BPF per
 raccogliere il flusso a bassa velocit� inviato ad un indirizzo
 multicast. La maggior parte delle schede hanno un filtro hardware per
 indirizzi multicast implementato come una tabella di hash a 64 voci
 che ignora i pacchetti multicast maggiormente non voluti. Quindi c'�
 la possibilit� di rendere questa operazione poco costosa. Ma con il
 BPF il kernel deve passare l'interfaccia in modalit� promiscua,
 ricevere _tutti_ i pacchetti e farli passare attraverso il filtro.
 Questa cosa funziona, ma quel che � difficile � darne conto al
 processo che ha richiesto i pacchetti.


 9.  Networking con computer portatili

 Ci sono diversi modi per mettere il proprio portatile in una rete. Si
 pu� usare il codice di SLIP (e andare alla velocit� delle porte
 seriali); si pu� prendere un portatile con gi� al suo interno uno slot
 PCMCIA; si pu� prendere un portatile con una docking station e
 attaccarci una scheda Ethernet ISA; oppure si pu� usare un adattatore
 Ethernet su porta parallela.


 9.1.  Usare SLIP

 Questa � la soluzione pi� economica, ma considerevoltemente la pi�
 difficoltosa. Inoltre non permetter� velocit� di trasmissione molto
 elevate. Poich� lo SLIP non centra con le schede Ethernet non sar�
 discusso ulteriormente qui. Si veda il NET-2 HOWTO.


 9.2.  Supporto PCMCIA

 Si provi a determinare esattamente l'hardware che si possiede (cio�
 costruttore della scheda, costruttore del chip del controller PCMCIA)
 e poi si chieda nel canale LAPTOPS. Non ci si aspetti che le cose sia
 poi cos� semplici.  Si dovranno fare un po' di cose a mano, applicare
 patch al kernel, ecc.  Forse un giorno si sar� in grado di scrivere
 semplicemente `make config' 8-)

 Al momento, i due chipset PCMCIA supportati sono il Databook TCIC/2 e
 l'Intel i82365.

 A tsx-11.mit.edu ci sono diversi programmi nella directory
 /pub/linux/packages/laptops/ che potrebbero tornare utili. Si va da
 driver per schede Ethernet PCMCIA a programmi che comunicano con il
 chip del controller PCMCIA. Si noti che questi driver sono solitamente
 legati ad uno specifico chip PCMCIA (l'Intel 82365 e il TCIC/2)

 Per le schede compatibili con NE2000, alcuni hanno avuto successo
 semplicemente configurando la scheda sotto DOS e poi avviando Linux
 dalla riga di comando del DOS con loadlin.

 La situazione sembra buona per quelli che vogliono il supporto PCMCIA,
 in quanto sono stati fatti dei progressi sostanziali. Il pioniere in
 questi sforzi � David Hinds. Il suo ultimo pacchetto per il supporto
 PCMCIA pu� essere ottenuto da:

 PCMCIA Package <ftp://cb-iris.stanford.edu/pub/pcmcia>

 Si cerchi un file tipo pcmcia-cs-X.Y.Z.tgz dove X.Y.Z sar� il numero
 dell'ultima versione. Questo sar� probabilmente depositato anche nel
 sito FTP tsx-11.mit.edu.

 Si noti che l'abilitatore PCMCIA di Donald funziona come processo a
 livello utente mentre quella di David Hinds � una soluzione a livello
 kernel. Si sar� meglio serviti dal pacchetto di David in quanto �
 maggiormente usato e in continuo sviluppo.


 9.3.  Schede Ethernet ISA nella docking station

 Le docking station per i portatili costano circa 250 dollari e
 forniscono due slot ISA a piena grandezza, due porte seriali e una
 porta parallela. La maggior parte delle docking station sono
 alimentate direttamente dalle batterie del portatile e solo alcune
 permettono l'aggiunta di batterie addizionali se si usano schede ISA
 corte. Si pu� cos� aggiungere una scheda Ethernet poco costosa e
 gioire delle prestazioni di una Ethernet a piena velocit�.


 9.4.  Adattatori pocket (su porta parallela)

 Anche gli adattori Ethernet `pocket' possono soddisfare le proprie
 necessit�. Si noti che la velocit� di trasferimento non sar� affatto
 elevata (forse picchi di 200kB/s?) a causa delle limitazioni
 dell'interfaccia su porta parallela.

 Inoltre ci si deve collegare alla presa di alimentazione sulla parete.
 Qualche volta si pu� evitare di attaccare l'adattatore alla presa,
 comprando o facendosi un cavo per prendere l'alimentazione dalla porta
 per la tastiera del portatile (si veda ``alimentazione dalla
 tastiera'').

 Si veda ``DE-600 / DE-620'' e ``RealTek'' per due adattatori pocket
 supportati.



 10.  Miscellanea


 Tutta quella roba che non ci stava bene da nessun'altra parte � stata
 messa qui.  Potrebbe non essere rilevante e potrebbe non essere
 d'interesse generale, ma � comunque qui.


 10.1.  Passare al kernel argomenti Ethernet


 Ci sono due comandi generici che possono essere passati al kernel al
 momento del boot: ether e reserve.  Questa cosa pu� essere fatta con
 LILO, loadlin o qualsiasi altra utilit� di boot che accetta argomenti
 opzionali.

 Per esempio, se il comando fosse `blah' e si aspettasse 3 argomenti
 (diciamo 123, 456 e 789) allora, con LILO, si potrebbe usare:

 LILO: linux blah=123,456,789

 Per maggiori informazioni sugli argomenti di boot (e un elenco
 completo) si veda il BootPrompt-HOWTO
 <http://metalab.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html>.


 10.1.1.  Il comando ether


 L'argomento ether= � usato in congiunzione a driver direttamente
 compilati dentro al kernel.  Non ha assolutamente alcun effetto su
 driver compilati come moduli.  Nella sua forma pi� generale, pu�
 essere qualcosa di simile:


      ether=IRQ,IND_BASE,PARAM_1,PARAM_2,NOME


 Tutti gli argomenti sono opzionali.  Il primo argomento non numerico �
 intrepretato come NOME.

 IRQ: ovvio.  Un valore di IRQ di `0' (solitamente il valore
 predefinito) significa autoIRQ.  � accidentale che l'impostazione
 dell'IRQ sia prima di quella dell'ind_base: questa cosa verr� corretta
 non appena cambier� qualcos'altro.

 IND_BASE: altrettanto ovvio.  Il valore `0' (solitamente quello
 predefinito) indica di rilevare una scheda nell'elenco di indirizzi
 spefici per quella scheda.

 PARAM_1: Originariamente usato come valore per ridefinire l'indirizzo
 iniziale della memoria per una scheda Ethernet a memoria condivisa,
 come la WD80*3.  Alcuni driver usano i 4 bit meno significativi di
 questo valore per impostare il livello dei messaggi di debug.  0:
 predefinito, 1-7: livello 1..7 (con 7 si ottiene il massimo della
 verbosit�), 8: livello 0 (nessun messaggio).  Inoltre, il driver LANCE
 usa i 4 bit meno significativi di questo valore per selezionare il
 canale DMA. Altrimenti usa auto-DMA.

 PARAM_2: Il driver 3c503 usa questo valore per selezionare tra il
 transceiver interno ed esterno.  0: predefinito/interno, 1: AUI
 esterno.  La scheda E21XX della Cabletron usa i 4 bit meno
 significativi di PARAM_2 per selezionare il mezzo d'uscita.
 Altrimenti lo rileva automaticamente.

 NOME: Seleziona il dispositivo di rete a cui fa rifemento il valore.
 Il kernel standard usa i nomi `eth0', `eth1', `eth2' e `eth3' per le
 schede Ethernet attaccate sul bus e `atp0' per gli adattatori Ethernet
 `pocket' su porta parallela.  Il driver arcnet come nome usa `arc0'.
 L'impostazione predefinita � per il rilevamento di un'unica scheda
 Ethernet, la `eth0'.  L'abilitazione di pi� schede � possibile
 solamente impostando esplicitamente il loro indirizzo base usando
 questi parametri di LILO.  Il kernel 1.0 trattava le schede Ethernet
 basate su LANCE in modo speciale.  Gli argomenti di LILO erano
 ignorati e alle schede LANCE erano sempre assegnati i nomi `eth<n>'
 partendo da `eth0'.   Ulteriori schede Ethernet non LANCE dovevano
 essere esplicitamente assegnate a `eth<n+1>', e il rilevamento
 standard di `eth0' doveva essere disabilitato con qualcosa di simile a
 `ether=0,-1,eth0' (s�, questo � un bug).


 10.1.2.  Il comando reserve


 Questo comando di lilo � usato proprio come il precedente `ether=',
 ovvero � accodato al nome di avvio selezionato in lilo.conf.


      reserve=IO-base,estensione{,IO-base,estensione...}


 In alcune macchine pu� essere necessario impedire ai driver di
 dispositivo di controllare la presenza di dispositivi (auto probing)
 in regioni specifiche.  Ci� pu� essere dovuto ad hardware mal
 progettato che causa il congelamento del boot (come alcune schede
 Ethernet), ad hardware che viene mal identificato, ad hardware il cui
 stato � cambiato da un rilevamento precedente, o semplicemente ad
 hardware che non vuole essere inizializzato dal kernel.

 L'argomento di boot reserve indirizza questo problema specificando la
 regione di una porta I/O che non dovrebbe essere controllata. Tale
 regione viene riservata nella tabella di registrazione delle porte del
 kernel come se vi si fosse gi� rilevato un dispositivo.  Si noti che
 questo meccanismo non dovrebbe essere necessario nella maggior parte
 della macchine.  Sar� necessario usare questo comando solo quando c'�
 un problema o un caso particolare.

 Le porte I/O nella regione specificata sono protette dai controlli dei
 dispositivi.  Questa cosa si � resa necessaria quando alcuni driver si
 piantavano su una NE2000 o mal identificavano altri dispositivi come
 propri.  Un driver di dispositivo corretto non dovrebbe controllare
 una regione riservata a meno che qualche altro argomento di boot non
 specifici esplicitamente di farlo.  La maggior parte dei driver ignora
 la tabella di registrazione delle porte se gli viene passato un
 indirizzo specifico.

 Per esempio, la riga di boot


      LILO: linux  reserve=0x300,32  ether=0,0x300,eth0


 impedisce a tutti i device driver, tranne a quelli della scheda
 Ethernet, di controllare la regione 0x300-0x31f.

 Come al solito, c'� un limite di 11 parametri come in tutti i comandi
 di boot, quindi si possono specificare solo 5 regioni riservate per
 ciascun comando keyword.  Possono essere specificati pi� reserve se si
 hanno richieste insolitamente complicate.


 10.2.  Usare un driver Ethernet come modulo


 La maggior parte delle distribuzioni di Linux utilizzano ora dei
 kernel con pochissi driver al loro interno.  I driver sono piuttosto
 forniti come gruppo di moduli indipendenti caricabili dinamicamente.
 Questi driver modulari sono tipicamente caricati dall'amministratore
 con il comando modprobe(8) o in alcuni casi sono automaticamente
 caricati dal kernel attraverso `kerneld' (nei 2.0) o `kmod' (nei 2.1)
 che a loro volta chiamano modprobe.

 La propria distribuzione pu� offrire uno strumento grafico carino per
 l'impostazione dei moduli Ethernet.  Se possibile prima si dovrebbe
 provare a usare quello.  La descrizione che segue fornisce le
 informazioni che stanno sotto a qualsiasi programma di configurazione
 e indica cosa quei programmi vanno a modificare.

 Le informazioni che controllano quali moduli sono usati e quali
 opzioni sono passate a ciascun modulo sono solitamente salvate nel
 file /etc/conf.modules.  Le due opzioni principali di interesse per le
 schede Ethernet che saranno usate in questo file sono alias e options.
 Il comando modprobe consulta questo file per le informazioni sui
 moduli.

 I moduli stessi sono tipicamente salvati in una directory chiamata
 /lib/modules/`uname -r`/net dove il comando uname -r restituisce la
 versione del kernel (e.g. 2.0.34).  Si pu� andare l� per vedere quale
 modulo corrisponde alla propria scheda.

 La prima cosa che ci deve essere nel proprio file conf.modules �
 qualcosa che dice a modprobe quale driver usare per l'interfaccia di
 rete eth0 (e per eth1 e per...).   Per questa cosa si dovr� usare il
 comando alias.  Per esempio, se si ha una scheda ISA EtherEZ della SMC
 che usa il modulo del driver smc-ultra.o, si deve creare alias per
 questo driver che corrisponda a eth0, aggiungendo la riga:


         alias eth0 smc-ultra



 L'altra cosa di cui si pu� aver bisogno � una riga options che indica
 quali opzioni devono essere usate con un particolare modulo (o alias
 di modulo).  Continuando con l'esempio di prima, se si usa solamente
 la riga alias con nessuna riga options, il kernel avviser� (si veda
 dmesg) che l'auto rilevamento di una scheda ISA non � una buona idea.
 Per venir a capo di questo problema, si aggiunga un'altra riga che
 dice al modulo a quale indirizzo I/O base � configurata la scheda, ad
 esempio l'indirizzo esadecimale 0x280.


         options smc-ultra io=0x280


 La maggior parte dei moduli ISA accettano parametri come io=0x340 e
 irq=12 sulla riga di comando di insmod. Fornire questi parametri �
 RICHIESTO o almeno CALDAMENTE CONSIGLIATO per evitare il rilevamento
 della scheda.  Diversamente dai dispositivi PCI e EISA, non c'� alcun
 modo sicuro per fare l'auto rilevamento della maggior parte dei
 dispositivi ISA e quindi lo si dovrebbe evitare quando si usa un
 driver come modulo.

 Un elenco di tutte le opzioni che ciascun modulo accetta pu� essere
 trovata nel file:

 /usr/src/linux/Documentation/networking/net-modules.txt

 Si raccomanda la sua lettura per trovare quali opzioni si possono
 usare con la propria scheda.  Si noti che alcuni moduli supportano un
 elenco di valori separati da virgola.  Solitamente questo � il caso di
 moduli che sono in grado di gestire pi� dispositivi con un unico
 modulo, come tutti i driver basati su 8390 e il driver PLIP.  Per
 esempio:


 ______________________________________________________________________
         options 3c503 io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1
 ______________________________________________________________________



 Con la riga precedente si avr� un unico modulo che controlla quattro
 schede 3c503, con la scheda 2 e 4 che usano il tranceiver esterno.
 Non si aggiungano spazi attorno a `=' o alle virgole.

 Si noti inoltre che un modulo occupato non pu� essere rimosso.  Ci�
 significa che si dovr� fare ifconfig eth0 down (disattivare la scheda
 Ethernet) prima di rimuovere il modulo.

 Il comando lsmod mostrer� quali moduli sono caricati e se sono in uso,
 mentre il comando rmmod pu� essere usato per rimuoverli.


 10.3.  Documentazione correlata


 La maggior parte dei queste informazioni provengono da messaggi che ho
 salvato dai gruppi comp.os.linux, che si sono dimostrati una
 insostituibile fonte di informazioni.  Altre informazioni utili
 provengono da un gruppo di piccoli file di Donald stesso.
 Naturalmente, se si sta impostando una scheda Ethernet, allora sar�
 bene leggere il NET-2 Howto in modo che si possa realmente configurare
 il software che la user�.  Inoltre, se ci si diverte a fare un po'
 l'hacker, si possono sempre trovare alcune informazioni addizionali
 nei file sorgente dei driver.  Solitamente prima che cominci il codice
 c'� sempre un paragrafo o due che descrive i punti importanti.

 A quanti cercano informazioni che non sono in alcun modo specifiche su
 Linux (per esempio, cos'� 10BaseT, cos'� AUI, cosa fa un hub, ecc.)
 suggerisco caldamente di rivolgersi a newsgroup come
 comp.dcom.lans.ethernet e/o comp.sys.ibm.pc.hardware.networking.  Gli
 archivi dei newsgroup come quelli a dejanews.com possono essere una
 insostituibile fonte di informazioni.  Si possono prendere le FAQ da
 RTFM (che conserva tutte le FAQ dei newsgroup) al l'URL seguente:

 Usenet FAQs <ftp://rtfm.mit.edu/pub/usenet-by-hierarchy/>

 Si pu� anche dare un'occhiata alla cosiddetta `Ethernet-HomePage', che
 � all'URL seguente:

 Ethernet-HomePage <http://wwwhost.ots.utexas.edu/ethernet/ethernet-
 home.html>



 10.4.  Liberatoria e copyright (in inglese)


 This document is not gospel. However, it is probably the most up to
 date info that you will be able to find. Nobody is responsible for
 what happens to your hardware but yourself. If your ethercard or any
 other hardware goes up in smoke (...nearly impossible!)  we take no
 responsibility. ie. THE AUTHORS ARE NOT RESPONSIBLE FOR ANY DAMAGES
 INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION INCLUDED IN
 THIS DOCUMENT.

 This document is Copyright (c) 1993-1997 by Paul Gortmaker.
 Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
 preserved on all copies.

 Permission is granted to copy and distribute modified versions of this
 document under the conditions for verbatim copying, provided that this
 copyright notice is included exactly as in the original, and that the
 entire resulting derived work is distributed under the terms of a
 permission notice identical to this one.

 Permission is granted to copy and distribute translations of this
 document into another language, under the above conditions for
 modified versions.

 A hint to people considering doing a translation.  First, translate
 the SGML source (available via FTP from the HowTo main site) so that
 you can then generate other output formats.  Be sure to keep a copy of
 the original English SGML source that you translated from! When an
 updated HowTo is released, get the new SGML source for that version,
 and then a simple diff -u old.sgml new.sgml will show you exactly what
 has changed so that you can easily incorporate those changes into your
 translated SMGL source without having to re-read or re-translate
 everything.

 If you are intending to incorporate this document into a published
 work, please make contact (via e-mail) so that you can be supplied
 with the most up to date information available. In the past, out of
 date versions of the Linux HowTo documents have been published, which
 caused the developers undue grief from being plagued with questions
 that were already answered in the up to date versions.


 10.5.  Chiusura


 Se in questo documento si � trovato un qualsiasi errore madornale o
 informazione non aggiornata, mi si mandi una e-mail.  � grande ed �
 facile non accorgersi di qualcosa.  Se si � inviata una mail per una
 modifica e non � stata inclusa nella versione successiva, non si esiti
 a scrivere ancora, in quanto potrebbe essersi persa tra la marea di
 SPAM e junk mail che ricevo.

 Grazie!

 Paul Gortmaker, [email protected]