GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la relazione tra il ring buffer DMA e l'anello TX/RX per una scheda di rete?

Risposta breve :Sono uguali.

Ulteriori dettagli :Per prima cosa, guarda questo post che è molto correlato alla tua domanda.

In questo articolo si dice:

Una variante dell'approccio asincrono è spesso vista con le schede di rete. Queste schede spesso si aspettano di vedere un buffer circolare (spesso chiamato ring buffer DMA) stabilito nella memoria condivisa con il processore; ogni pacchetto in arrivo viene posizionato nel successivo buffer disponibile nell'anello e viene segnalato un interrupt. Il driver quindi passa i pacchetti di rete al resto del kernel e inserisce un nuovo buffer DMA nell'anello.

L'anello DMA consente alla scheda NIC di accedere direttamente alla memoria utilizzata dal software. Il software (il driver della NIC nel caso del kernel) sta allocando la memoria per gli anelli e quindi mappandola come memoria DMA, quindi la NIC saprebbe che potrebbe accedervi. I pacchetti TX verranno creati in questa memoria dal software e verranno letti e trasmessi dalla NIC (di solito dopo che il software ha segnalato alla NIC che dovrebbe iniziare a trasmettere). I pacchetti RX verranno scritti in questa memoria dalla scheda NIC e verranno letti ed elaborati dal software (di solito dopo l'emissione di un interrupt per segnalare che c'è lavoro).

Spero che questo aiuti.


  1. Ring Buffer Contiene l'indirizzo iniziale e finale del Buffer nella RAM.TX Ring conterrà gli indirizzi del Buffer nella RAM che contiene i dati da trasmettere.RX Ring conterrà l'indirizzo del Buffer nella RAM dove la NIC posizionerà i dati.

    Questi anelli sono presenti nella RAM.

  2. Il buffer TX e il buffer RX sono nella RAM puntata dagli anelli TX/RX.

  3. Ora il registro della scheda di rete ha la posizione del buffer degli anelli nella RAM .

Ora 1 e 2 possono essere buffer compatibili con DMA, sono chiamati anello DMA TX/RX e buffer DMA TX/RX. Ora, poiché l'anello RX/TX deve rimanere per tutto il tempo, sono realizzati come tipo di meory DMA coerente/coerente. Mentre i buffer sono creati streaming/tipo di memoria Single DMA


Linux
  1. Qual è l'interfaccia per le chiamate di sistema ARM e dove è definita nel kernel Linux?

  2. Qual è la differenza tra DMA-Engine e DMA-Controller?

  3. Qual è la differenza tra Contrassegna per rimozione e Contrassegna per rimozione completa in Synaptic Package Manager?

  4. Qual è la differenza tra un trattino e due trattini per i parametri del prompt dei comandi?

  5. Qual è il motivo per cui rmdir(1) e rm(1) coesistono?

Qual è la differenza tra Linux e Unix?

Come eseguire il backup e il ripristino della scheda SD per Raspberry Pi

VLAN per amministratori di sistema:le basi

Network Attached Storage (NAS) e Storage Area Networks (SAN):qual è la differenza?

Qual è la differenza tra DMA e IO mappato in memoria?

Qual è il nome utente e la password predefiniti per un Live CD di Ubuntu?