IP Library Granted Patent US 9,288,163
Granted Patent B2
US 9,288,163 · App. 13/843,021 · Granted Mar 15, 2016

Low-latency packet receive method for networking devices

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,288,163
App. No.
13/843,021
Granted
Mar 15, 2016
Kind
B2
Abstract

When interfacing with a host, a networking device can handle a first data like Bulk Data Receive. The networking device can receive the first data and read a first queue entry from a receive queue in the host memory. In response to the read first queue entry, the networking device can write the first data to an unpinned memory in the host memory. The networking device can also handle a second data with a Receive Packet in Ring (RPIR) queue. The networking device can receive the second data and write the second data to a pinned memory in the host memory. The RPIR queue can be separate from or overlaid on the receive queue. High throughput and low-latency operation can be achieved. The use of a RPIR queue can facilitate the efficiency of resource utilization in the reception of data messages.

Claims (34)

1. A networking device for interfacing with a host memory, the networking device comprising:

a logic; the logic comprising:

an interface configured to receive a first data and a second data, the size of the first data being larger than the size of a buffer element, the size of the second data being the size of the buffer element or smaller;

a queue reader configured to read a first queue entry from a receive queue in the host memory, the first queue entry comprising a virtual address of a virtual buffer, the virtual buffer corresponding to a physical buffer list in a physical memory, the physical buffer list corresponding to a plurality of data buffers in an unpinned memory in the host memory; and

a data writer configured to write the first data to the plurality of data buffers in the unpinned memory in the host memory in response to the first queue entry, wherein the data writer is further configured to write the second data to a pinned memory in the host memory.

2. The networking device of claim 1 , wherein the pinned memory is a data buffer queue, wherein the data writer is configured to write the second data to the data buffer queue at a data buffer queue element corresponding to a second queue entry of the receive queue.

3. The networking device of claim 1 , wherein the pinned memory is the receive queue, wherein the data writer is configured to write the second data to the receive queue.

4. A networking adapter incorporating the networking device of claim 1 .

5. A host incorporating the networking adapter of claim 4 .

6. A network incorporating the host of claim 5 .

7. A host for interfacing with a networking device, the host comprising: a logic; the logic comprising:

a receive queue configured to store a first queue entry to be read by a queue reader of the networking device, the first queue entry comprising a virtual address of a virtual buffer, the virtual buffer corresponding to a physical buffer list in a physical memory, the physical buffer list corresponding to a plurality of buffer elements;

an unpinned memory configured to store a first data in the plurality of buffer elements, the first data associated with the first queue entry, the size of the first data being larger than the size of a buffer element; and

a pinned memory configured to store a second data from the networking device, the size of the second data being the size of the buffer element or smaller, wherein the logic is configured to write the second data to another unpinned memory.

8. The host of claim 7 , wherein the pinned memory is a data buffer queue, wherein the data buffer queue is configured to store the second data from the networking device at a data buffer queue element corresponding to a second queue entry of the receive queue.

9. The host of claim 7 , wherein the pinned memory is the receive queue, wherein receive queue is further configured to store the second data from the networking device.

10. A network incorporating the host of claim 7 .

11. A method for interfacing with a host memory, comprising:

receiving a first data and a second data, the size of the first data being larger than the size of a buffer element, the size of the second data being the size of the buffer element or smaller;

reading a first queue entry from a receive queue in the host memory, the first queue entry comprising a virtual address of a virtual buffer, the virtual buffer corresponding to a physical buffer list in a physical memory, the physical buffer list corresponding to a plurality of buffer elements in the unpinned memory in the host memory;

writing the first data to the plurality of buffer elements in the unpinned memory in the host memory in response to the read first queue entry; and

writing the second data to a pinned memory in the host memory.

12. The method of claim 11 , wherein the pinned memory is a data buffer queue,

wherein the writing the second data to the pinned memory in the host memory includes writing the second data to the data buffer queue at a data buffer queue element corresponding to a second queue entry of the receive queue.

13. The method of claim 11 , wherein the pinned memory is the receive queue, wherein the writing the second data to the pinned memory in the host memory includes writing the second data to the receive queue.

14. A non-transitory machine-readable medium for an apparatus, the medium storing instructions that, when executed by one or more processors, cause the apparatus to perform a method comprising:

storing a first queue entry in a receive queue configured to be read by a queue reader of a networking device, the first queue entry comprising a virtual address of a virtual buffer, the virtual buffer corresponding to a physical buffer list in a physical memory, the physical buffer list corresponding to a plurality of buffer elements in the unpinned memory in the host memory;

storing a first data from the networking device in the plurality of buffer elements in the unpinned memory, the first data associated with the first queue entry, the size of the first data being larger than the size of a buffer element;

storing a second data from the networking device in a pinned memory, the size of the second data being the size of the buffer element or smaller; and

writing the second data to another unpinned memory.

15. The non-transitory machine-readable medium of claim 14 , wherein the pinned memory is a data buffer queue,

wherein the storing the second data from the networking device in the pinned memory includes storing the second data from the networking device in the data buffer queue at a data buffer queue element corresponding to a second queue entry of the receive queue.

16. The non-transitory machine-readable medium of claim 14 , wherein the pinned memory is the receive queue,

wherein storing the second data from the networking device in the pinned memory includes storing the second data from the networking device in the receive queue.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: EMULEX CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036942/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: EMULEX DESIGN AND MANUFACTURING CORPORATION
To: EMULEX CORPORATION
Reel/Frame 032087/0842 →