Data processing array interface having interface tiles with multiple direct memory access circuits
US-12164451-B2 · Dec 10, 2024 · US
US9916269B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9916269-B1 |
| Application number | US-201615099543-A |
| Country | US |
| Kind code | B1 |
| Filing date | Apr 14, 2016 |
| Priority date | Apr 14, 2016 |
| Publication date | Mar 13, 2018 |
| Grant date | Mar 13, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A packet header is received from a host and written to a header queue. A direct memory access (DMA) descriptor is received from the host and written to a packet descriptor queue. The DMA descriptor points to packet data in a host memory. The packet data is fetched from host memory and the packet header and the packet data are provided to a network interface.
Opening claim text (preview).
What is claimed is: 1. A Peripheral Component Interconnect-based (PCI-based) network interface card (NIC), the PCI-based NIC comprising: a PCI-based bus interface configured to send and receive data on a PCI-based bus; an ethernet interface configured to send and receive network traffic; processing logic coupled to the PCI-based bus interface and coupled to the ethernet interface; and a device memory including a Memory-Mapped Input/Output (MMIO) allocated block having a header queue and a packet descriptor queue, wherein the processing logic is coupled to read and write to the device memory, and wherein the PCI-based NIC is configured to: write a packet header to the header queue, wherein the packet header was received in a first MMIO write transaction from a host processor at the PCI-based bus interface; write a DMA descriptor to the packet descriptor queue, wherein the DMA descriptor was received in a second MMIO write transaction from the host processor at the PCI-based bus interface, and wherein the packet descriptor queue has a one-to-one correspondence with the header queue, the DMA descriptor pointing to a packet payload memory location in a host memory; access the packet header from the header queue, in response to receiving a packet notifier from the host processor at the PCI-based bus interface; access the packet descriptor from the packet descriptor queue; determine the packet payload memory location from the DMA descriptor; fetch a packet payload stored in the packet payload memory location; and provide the packet header and the packet payload to the ethernet interface of the PCI-based NIC. 2. The PCI-based NIC of claim 1 , wherein receiving a packet notifier includes determining if a doorbell register of the PCI-based NIC has been written to. 3. The PCI-based NIC of claim 1 , wherein the host processor writes the packet payload to the host memory prior to sending the packet header to the PCI-based NIC. 4. The PCI-based NIC of claim 1 further configured to transmit, by the ethernet interface, a packet onto a network, the packet including the packet payload and the packet header or a modified packet header. 5. A device, comprising: a bus interface configured to send and receive data on a bus; a network interface configured to transmit network traffic; processing logic coupled to the bus interface and coupled to the network interface, the processing logic including a direct memory access (DMA) engine; and a device memory including a header queue and a packet descriptor queue, wherein the processing logic is coupled to read and write to the device memory, wherein the device is configured to: write a packet header to the header queue, wherein the packet header was received from a host at the bus interface; write a DMA descriptor to the packet descriptor queue, wherein the DMA descriptor was received from the host at the bus interface, the DMA descriptor pointing to a packet payload memory location in a host memory; access the packet header from the header queue; access the DMA descriptor from the packet descriptor queue; determine the packet payload memory location from the DMA descriptor; fetch a packet payload stored in the packet payload memory location; and provide the packet header and the packet payload to the network interface. 6. The device of claim 5 , wherein the device performs the accessing the packet header and the DMA descriptor in response to receiving a Memory-Mapped Input/Output (MMIO) write transaction from the host, the MMIO write transaction including a tail pointer to write to a doorbell register in the device memory, the tail pointer indicating which address or index in the packet descriptor queue the DMA descriptor was written to. 7. The device of claim 5 , wherein the device performs the accessing the packet header and the DMA descriptor in response to receiving a notifier from the host, the notifier sent from the host after the packet header and the DMA descriptor. 8. The device of claim 5 , wherein the device performs the accessing the packet header and the DMA descriptor in response to receiving the packet header and the DMA descriptor. 9. The device of claim 5 , wherein the packet header and the DMA descriptor are written to a MMIO allocation of device memory. 10. The device of claim 5 , wherein the device is further configured to transmit a network packet from the network interface that includes the packet header and the packet payload. 11. The device of claim 5 , wherein the packet header and a second packet header are received in a first write transaction, and wherein the DMA descriptor and a second DMA descriptor are received in a second write transaction, the device further configured to: write the second packet header to the header queue; and write the second DMA descriptor to the packet descriptor queue. 12. The device of claim 5 , wherein the device is a PCI-based network interface card (NIC). 13. The device of claim 5 , wherein the bus interface is a PCI-based bus interface. 14. The device of claim 5 , wherein the packet descriptor queue has a one-to-one correspondence with the header queue. 15. A computer-implemented method comprising: receiving, by a bus interface, a packet header from a host; writing the packet header to a header queue; receiving, by the bus interface, a DMA descriptor from the host; writing the DMA descriptor to a packet descriptor queue, wherein the packet descriptor queue has a one-to-one correspondence with the header queue, the DMA descriptor pointing to a packet payload memory location in a host memory; accessing the packet header from the header queue in response to receiving a packet notifier from the host; accessing the DMA descriptor from the packet descriptor queue in response to receiving the packet notifier from the host; determining the packet payload memory location from the DMA descriptor; fetching, by a DMA engine, a packet payload stored in the packet payload memory location; and providing the packet header and the packet payload to a network interface. 16. The computer-implemented method of claim 15 further comprising: transmitting, by a network interface, a packet that includes the packet header and the packet payload. 17. The computer-implemented method of claim 15 further comprising: receiving, by the bus interface, a second packet header and a second packet payload from the host in a same write transaction; and writing the second packet header and the second packet payload to the header queue, wherein the second packet header and the second packet payload fit into one entry of the header queue; and transmitting, by the network interface, a second packet that includes the second packet header and the second packet payload. 18. The computer-implemented method of claim 15 , wherein the header queue and the packet descriptor queue are in a memory onboard a network device, and wherein the bus interface and DMA engine are included in the network device. 19. The computer-implemented method of claim 15 , wherein the bus interface is a PCI-based bus interface, and wherein fetching the packet payload includes receiving the packet payload from the host memory over a PCI-based bus that is coupled to the PCI-based bus interface. 20. The computer-implement method of claim 15 further comprising: transmitting a packet that includes the packet header and the packet payload onto a network; and writing a completion queue entry to the host memory to indicate that the packet was successfully
on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247) · CPC title
Electrical coupling · CPC title
using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence) · CPC title
with address mapping · CPC title
Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.