Chapitre 8
Un exemple de arte reseau :
3Com 501
Dans le as d'Ethernet, la ouhe liaison est en grande partie mise en uvre au sein d'un
adaptateurouartereseau,l'unedesnombreusesartesinsereessurlaartemere(ommela
artegraphiqueoulaarteson).Ils'agitd'uneunitesemi-autonomequi reoitunpaquetdela
partdelaouhereseaudel'emetteur.Laartereseauenapsuleepaquetauseind'unetrame
etlatransmetausupportphysique.
Al'autreextremite,laartedudestinataireextraitlepaquet
delatrame,leplaequelquepartenmemoireviveetdelenheuneinterruptionmateriellepour
prevenirqu'unpaquet estarrive.
Laartereseaupeut^etreplusoumoinsperfetionnee. Ellepeutajouterlesbitsdedetetion
d'erreursenemissionetlesontr^olerenreeption.Leserviedetransportablepeutegalement
^
etre entierement mis en uvrea son niveau (notamment l'insertion de numeros de sequene,
l'ativation de temporisateurs et l'ehange d'aquittements). Elle peut supprimer des trames
reeptionneesontenantdeserreurssansenavertirl'h^ote.
L'une des premieres artes reseau onue par 3Com (l'entreprise reee par les inventeurs
d'Ethernet) pour lesmiro-ordinateurs ompatibles PC futla arte3Com 501,sortie en 1988.
C'estaussil'unedespremieresaavoiretepriseenompteparLinux.
94 CHAPITRE8. UN EXEMPLEDECARTERESEAU:3COM501
8.1 Desription de la arte
Nousn'allonspasdonnerdedesriptionphysiquedeettearteniommentl'installersurun
PC.Ils'agitdetoutefaond'uneartemaintenantanienne.Leselementspourlaprogrammation
deetteartesontderits,inompletement,dans[3Com501℄.
Cette arte est un ontr^oleur/transepteurpour les ompatibles PC qui est onforme a la
speiationEthernet,version1.0 du30septembre1980. Elleimplementelesouhesphysique
et liaisondumodele ISO.Elle omprendun ontr^oleurpourlaouhe liaison,appele8001ou
EDLCetuntampondetramede2Ko,suÆsantpourontenirunetrameEthernet,enemission
ouenreeption.Letamponpeutopereraveleontr^oleurdeDMA8237AdesompatiblesPC.
Leontr^oleurpeututiliserleontr^oleurd'interruption8259AdesompatiblesPC.
8.1.1 Interfae logiielle
L'adressedebase,ommeportd'entree-sortiedumiroproesseur,peut^etrehoisieparmiun
ertainnombredevaleursal'aidedeavaliers.
L'interfaelogiielle s'eetue a l'aidede 16 registres,aessiblesomme otetsa partirde
l'adressedebase.Ces registresportentlesnomssuivants,suivantqu'onlitouqu'onerit:
Dealage Leture
Eriture
0 Adresse de la station 0
1 Adresse de la station 1
2 Adresse de la station 2
3 Adresse de la station 3
4 Adresse de la station 4
5 Adresse de la station 5
6 Reeive Status Reeive Command
7 Transmit Status Transmit Command
8 GP Buffer Pointer [LSB℄ GP Buffer Pointer [LSB℄
9 GP Buffer Pointer [MSB℄ GP Buffer Pointer [MSB℄
A RCV Buffer Pointer [LSB℄ RCV Buffer Pointer Clear
B RCV Buffer Pointer [MSB℄
C Ethernet Address Prom Window
D
E Auxiliary Status (CSR) Auxiliary Command (CSR)
F Buffer Window Buffer Window
{ Le registreF,BuerWindow, permet d'aeder,eneritureommeenleture,aunotet
dutamponparmiles2Kpossibles,d'ou sonnomdefen^etre.
{ LepointeurGP(General Purpose buerpointer) ontientlapositiondeette fen^etredans
le tampon. Onabesoinde onzebits pourbalayerl'amplitude0a 2047.L'otetdepoids
faible onstitueleregistre8et l'otetde poidsfort(ave5bitsayantunevaleurnulle)le
registre9.Uneletureouuneerituredanslafen^etreinrementeautomatiquementGP.
{ LepointeurRP(Reeive Pointer)estegalementunpointeurdeonzebits.Ilestinremente
ahaquefoisquelaartereoitunotet.On peuten lirelavaleurgr^aeauxregistresA
et B(enleture)etleremettreazerogr^aeauregistreA(eneriture).
{ L'adresse MACdelaarteestentierementlibre,stokeeenmemoirePROM.Oneritses
sixotetsenutilisantlesregistres0a5.Onlitl'adresseatraversleregistreCdetailleun
otetenpositionnantlesbits0{2deGPpourindiquerl'otetquel'onveutlire.Laleture
{ Lesautresregistress'appellentRSR(Reeive StatusRegister),RCR(Reeive Command Re-
gister),TSR(TransmitStatusRegister),TCR(TransmitCommandRegister),ASR(Auxiliary
StatusRegister)etACR(AuxiliaryCommandRegister) aveunedenominationquirappelle
leurfontion.
8.1.2 Le registre de ommande d'emission: TCR
Lorsqu'onenvoieunpaquetalaarte3Com501pourqu'elleemetteunetrame,elle-iessaie
del'emettreetrenvoiel'undesdiagnostissuivants:emissionreussie('est-a-direquelatramea
quitteelaarte,maisonnesaitpassielleestparvenueadestination),ollision,seiziemeollision
oudepassementdeapaite.
Apreshaque ollision, lesdonnees demeurentdans le tampon mais le pilote doitremettre
GPazeroetredemarrerexpliitementl'emission.Leontr^oleurattendalorsledelaiapproprieet
essaied'emettreanouveau.
Apreslaseiziemeollision,l'essaid'emissiondoit^etreabandonned'apreslesreglesdustandard
Ethernet.
Le depassementde apaitesurvientlorsqu'onessaie d'emettre unetrame ave unmauvais
CRCoupouressayerdediagnostiquerquelquehose.
Lepilotepeuthoisird'ignoreroudedeteterhaundeesdiagnostis.Ill'indiquegr^aeau
TCR:
7 6 5 4 3 2 1 0
non utilises reussi ollision 16 ollision depassement
Un bit a1invite areveler lediagnostidans leTSR.Les raisonsdudepassementdeapaitea
deteter sont preiseesdansle registreACR.Si on veutqu'une interruptionsoit delenhee lors
deladetetiond'undeesdiagnostis,ilfaut lepreiserdansleregistreACR.
8.1.3 Le registre de statut d'emission: TSR
Leontr^oleurhangelavaleurduTSRapreshaqueessaid'emission.Lastruturedeeregistre
estlasuivante:
7 6 5 4 3 2 1 0
non utilises pr^et 16 ollisions ollision depassement
8.1.4 Le registre de ommande de reeption: RCR
Lepilotepeutprogrammerlaartepourqu'ellen'aeptequelestramesdeertaineslasses;
les autres trames sont alors ignorees automatiquement. Lorsqu'une trame est ignoree, RP est
remisazeroet leontr^oleurest pr^etareevoirlatramesuivante.
LastrutureduregistreRCRestlasuivante:
7 6 5 4 3 2 1 0
mode aepte EOF trop ourt trop lent CRC depassement
{ Lemoded'aeptationdesadresses(AddressMathMode)determinequellessontlestrames
quel'onveutaepterauvudeleuradressededestination:
{ 0{reeveurinhibe,nereoitauunetrame;
96 CHAPITRE8. UN EXEMPLEDECARTERESEAU:3COM501
{ 2{reoitl'adressedelastationet ladiusion generale;
{ 3{reoitl'adressedelastationet ladiusion restreinte.
{ Le bit 5positionnea1 indiqueque l'on nedoit aepterque lestrames bien onstituees
(taille legale,pasd'erreurdeCRCet pasdedepassementdeapaite).
{ Le bit 4 indique quel'on ne doit aepter queles trames sanserreur de depassementde
apaite,'est-a-direellespourlesquellesunEOF(EndOfFrame) aetedetete.
{ Lebit3indiquequel'onnedoitpasaepterlestramestropourtes(moinsde60otets,
en exluantlepreambuleet leCRC).Ononsidereeneetqu'ils'agitertainementd'un
fragmentd^uaunproblemedeollision.
{ Lebit2indiquequ'ilfautdeteterundebittroplent(dribble error).Latrameseraepen-
danthargee.
{ Lebit 1indiquequel'onnedoitpasaepterlestramespresentantuneerreurdeCRC.
{ Lebit0indiquequ'ilfautdeteterleserreursdedepassementdeapaite,'est-a-direque
leontr^oleurdeteteunetrameinteressantealorsqueletamponn'estpasdisponible.
8.1.5 Le registre de statut de reeption: RSR
Le pilote denit les trames ayant un inter^et en positionnant le registre de ommande en
reeption. Le ontr^oleurhange le registrede statut dereeptionapreshaque trame detetee
surlereseau,qu'ellepresenteounonuninter^et.Lastruturedee registreestlasuivante:
7 6 5 4 3 2 1 0
Vieux non bonne erreur trop ourt trop lent erreur erreur de
defini trame EOF CRC depassement
{ Lorsque le ontr^oleur detete une trame interessante, le bit 7 (Stale Reeive Status) est
positionnea0.Leontr^oleurn'aepteplusalors detrame jusqu'alaleture duregistre.
Laleturepositionneebit a1.
{ Lebit 5vaut1silatramereueestinteressante.
{ Lesbits4,3et1speientlaausedel'erreursinon:trametroplongue,trametropourte,
erreur deCRC.
{ Si latrameaetereuetroplentement,lebit 2est positionnea1.
{ Si le ontr^oleur n'est pas en position de reeption lorsqu'une trame arrive, le bit 0 est
positionnea1.
8.1.6 Le registre de ommande auxiliaire: ACR
Lastruturedeeregistreestlasuivante:
7 6 5 4 3 2 1 0
Reset RIDE DMA non utilise ontr^ole CRC IRE
{ Positionnerlebitreseta1permetdereinitialisertouslesregistresdestatutetdeontr^ole.
Lepilotedoitabsolumentlerepositionnera0ensuite.
{ Le bit RIDE (pour l'anglais Request Interrupt and DMA Enable) speie a la arte de
positionnerlessignauxIRQ(Interrupt ReQuest)et DRQ(Dmaservie ReQuest)surlebus
systeme.Lorsquele RIDEvaut0,leontr^oleurne peut pasengendrer detransferts DMA
et ne peutengendrer desinterruptionsquesi lebit IRE(pourl'anglais Interrupt Request
Enable) vaut1.
{ Lesbits2et3ontr^olentl'aesautampon:
{ 0{Lebussystemeaaesautampon,quin'estplusrelieaureseaudanse as.
{ 1{Modetransmission(suiviautomatiquementdumodereeption).
{ 2{Modereeption.
{ 3{Modeperipheriqueenboule.
{ Si lebit1vaut1,leontr^oleurpeuttransmettredestramesayantunmauvaisCRC.
8.1.7 Le registre de statut auxiliaire: ASR
LastrutureduregistreASRest lasuivante:
7 6 5 4 3 2 1 0
Oupe RIDE requ^ete DMA ontr^ole CRC Oupe
en emission DMA effetuee du tampon en reeption
{ Le bit 7 n'a de signiation que lorsque le ontr^ole de tampon est positionne pour le
peripheriqueenbouleoupouremission.Ilprendlavaleur1lorsquelepilotedemarreune
emission (enpositionnantleontr^ole detamponduRCAa1). Ilrevientazeroen asde
ollision ou lorsque l'emission se termine ave sues. Le pilotepeut distinguer es deux
asenexaminantleregistreTSR.
{ Le pilotedemarreun transfert DMA en programmantleanal adequat duontr^oleurde
DMA et enpositionnantlesbits RIDEet DMA Request duregistreRCAdu ontr^oleurde
laartereseau.LorsqueletransfertDMAesttermine,lebit4estpositionnea1.Lepilote
eaee bitenpositionnantlebitDMA RequestduregistreRCAazero.
{ Le bit 0estpositionneaunlorsquele ontr^oleurest armepourreevoirune trame. Cei
sefaitautomatiquementapreslatransmissiond'unetrame oulorsque lepilotepositionne
leontr^oledetamponenreeptionoupourleperipheriqueenboule.Cebitrevientazero
apresqueleontr^oleuraitaepteunetrame.Lepilotedoitalorsattendre800nanoseondes
avantdelireleregistreRSR.
8.2
Emission et reeption
8.2.1 Choix de l'adresse de base et de l'IRQ
Onpeuthoisirl'adressedebasedelaarteparmi32(oum^eme64suivantlemodelehoisi)
valeurspossibles,leanalIRQparmideuxvaleurs(3ou5)et leanalDMAparmideuxvaleurs
(1ou3)enpositionnantphysiquementdesavaliers.
Nous verronsque, en e qui onernel'implementation Linux, on ommene paronsiderer
lesvaleurspardefautalasortied'usine(asavoir280,1et3respetivement)danslenoyau.L'ad-
ministrateursystemepeuthanger esvaleursgr^aealaommandeifonfigdeonguration
98 CHAPITRE8. UN EXEMPLEDECARTERESEAU:3COM501
8.2.2
Emission d'une trame
Pouremettreunetrame, ilfaut:
{ Positionnerleontr^oledetampon(registreACR)azero.Ceiproureaubussystemeun
aesautampon.
{ Charger lepaquet dans le tampon de faontelle que ledernier otetdu paquet onide
aveledernierotetdutampon,asavoir7FFhpourGP.
{ PositionnerGPpourqu'ilpointe surlepremierotetdupaquet.
{ Demarrerl'emissionenpositionnantleontr^oledetampon(registreACR)aun.
{ LireleTSRpourdeterminers'ilyaeuollisionousues.L'emissionesttermineelorsque
lebitoupeenemissiondeASRestrevenuazero.
Enasdeollision,ilfautpositionnerleontr^oledetamponazero,repositionnerleGPpuis
positionnerleontr^ole detamponaun.Ceipermetd'emettreanouveaulatrame.
8.2.3 Reeption d'une trame
Pourreevoirunetrame, ilfaut:
{ PositionnerRPazeroetleontr^oledetampon(registreACR)adeux.
{ Attendre 800nanoseondesapresquelebit oupeen reeption deASRsoit revenuazero
pourlireleregistreRSRet determinerainsilestatutdelatramequivientd'^etrereue.
{ Latailledupaquet,enotetssanspreambuleetsansCRC,estalorsontenuedansRP.Le
debutdupaquetsetrouveal'adresse000hpourGP.Le pilotedoitpositionnerleontr^ole
detampon(registreACR)azeroavantdelireletampon.