GNU/Linux >> Znalost Linux >  >> Linux

Jaký je vztah mezi DMA ring buffer a TX/RX ring pro síťovou kartu?

Krátká odpověď :Tyto jsou stejné.

Další podrobnosti :Nejprve se podívejte na tento příspěvek, který velmi souvisí s vaší otázkou.

V tomto článku se píše:

Varianta asynchronního přístupu je často vidět u síťových karet. Tyto karty často očekávají, že uvidí kruhovou vyrovnávací paměť (často nazývanou kruhová vyrovnávací paměť DMA) vytvořenou v paměti sdílené s procesorem; každý příchozí paket je umístěn do další dostupné vyrovnávací paměti v kruhu a je signalizováno přerušení. Ovladač pak předá síťové pakety zbytku jádra a umístí do theringu nový DMA buffer.

Kruh DMA umožňuje NIC přímý přístup k paměti používané softwarem. Software (ovladač NIC v případě jádra) alokuje paměť pro kruhy a poté ji mapuje jako paměť DMA, takže NIC bude vědět, že k ní může přistupovat. TX pakety budou vytvořeny v této paměti softwarem a budou čteny a přenášeny NIC (obvykle poté, co software signalizuje NIC, že by měla začít vysílat). Pakety RX budou do této paměti zapisovány NIC a budou čteny a zpracovávány softwarem (obvykle po přerušení, které signalizuje, že probíhá práce).

Doufám, že to pomůže.


  1. Ring Buffer obsahuje počáteční a koncovou adresu Bufferu v RAM.TX Ring bude obsahovat adresy Bufferu v RAM, který obsahuje data k přenosu. RX Ring bude obsahovat adresu Bufferu v RAM, kam NIC umístí data.

    Tyto prstence jsou přítomny v paměti RAM.

  2. TX buffer a RX buffer jsou v RAM označeny TX/RX kroužky.

  3. Nyní má Network Card Register umístění Rings Buffer v RAM .

Nyní mohou být 1 a 2 vyrovnávací paměti schopné DMA, nazývají se DMA TX/RX ring a DMA TX/RX buffer. Nyní, protože RX/TX kruh musí zůstat po celou dobu, jsou vytvořeny jako konzistentní/koherentní typ paměti DMA. Zatímco jsou vytvořeny vyrovnávací paměti streamování/paměť typu Single DMA


Linux
  1. Jaké je rozhraní pro systémová volání ARM a kde je definováno v jádře Linuxu?

  2. Jaký je rozdíl mezi DMA-Engine a DMA-Controller?

  3. Jaký je rozdíl mezi jednou a dvěma pomlčkami pro parametry příkazového řádku?

  1. Jaký je důvod, proč rmdir(1) a rm(1) koexistují?

  2. Jaké je výchozí uživatelské jméno a heslo pro Ubuntu Live CD?

  3. Jaký je rozdíl mezi unlink a rm?

  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Point of Uniq -u a co to dělá??

  3. Jaký je rozdíl mezi používáním upstream a umístěním pro php-fpm?