My question is about data transfer between a PCIe peripherial and system memory. Example: Suppose we need to send a big chunk of data ( stored in system memory ) over an Ethernet network.
How will it usually be done ? Will the Ethernet card's controller have to request the data via "Bus Mastering" ( after being programmed by the CPU to do so ) ? Or will a centralized DMA controller near the CPU just write the card's buffers ( after being programmed by the CPU to do so ) ?
In other words: Does the card have to ask for the data ? Or can it simply be written to it via the CPU's DMA ?