Packet queueing for network device

US9916269B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9916269-B1
Application numberUS-201615099543-A
CountryUS
Kind codeB1
Filing dateApr 14, 2016
Priority dateApr 14, 2016
Publication dateMar 13, 2018
Grant dateMar 13, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247) · CPC title

  • Electrical coupling · CPC title

  • G06F13/28Primary

    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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9916269B1 cover?
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.
Who is the assignee on this patent?
Amazon Tech Inc
What technology area does this patent fall under?
Primary CPC classification G06F13/28. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 13 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).