IP Library Granted Patent US 8,161,197
Granted Patent B2
US 8,161,197 · App. 10/971,186 · Granted Apr 17, 2012

Method and system for efficient buffer management for layer 2 (L2) through layer 5 (L5) network interface controller applications

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 8,161,197
App. No.
10/971,186
Granted
Apr 17, 2012
Kind
B2
Abstract

Method and system for efficient buffer management for layer 2 through layer 5 network interface controller applications are provided. Aspects of the method may comprise determining whether an active NIC connection is an L2 type, an L4 type, or an L5 type. At least one buffer descriptor may be cached locally on a network interface controller (NIC) managed by a NIC application. The buffer descriptor is associated with the determined type of the active NIC connection. If the at least one active NIC connection is of the L2 or L4 type, the buffer descriptor may comprise at least one of a receive (RX) buffer descriptor and a transmit (TX) buffer descriptor. If the NIC connection is of the L5 type, the buffer descriptor may comprise at least one of a upper translation page table (TPT) entry and a lower TPT entry.

Claims (110)

1. A method for buffer management for layer 2 (L2), layer 4(L4) and layer 5(L5) network interface controller (NIC) applications, the method comprising:

caching, in a shared cache within a single NIC, buffer descriptors which are associated with L2 type, L4 type and L5 type active NIC connections;

determining, by said single NIC, whether at least one active NIC connection is one of said L2 type, said L4 type, or said L5 type; and

caching, using said shared cache, at least one buffer descriptor managed by the NIC applications, wherein the at least one buffer descriptor being associated with the determined type of the at least one active NIC connection.

2. The method according to claim 1 , wherein the cached at least one buffer descriptor comprises:

if the at least one active NIC connection is of the L2 or L4 type:

at least one of a receive (RX) buffer descriptor and a transmit (TX) buffer descriptor; and

if the at least one active NIC connection is of the L5 type:

at least one of a upper translation page table (TPT) entry and a lower TPT entry.

3. The method according to claim 2 , comprising:

if the at least one active NIC connection is of the L2 or L4 type:

associating at least one memory page in a host memory with at least one of the RX buffer descriptor and the TX buffer descriptor; and

if the at least one active NIC connection is of the L5 type:

associating at least one memory page in a host memory with the at least one lower TPT entry.

4. The method according to claim 3 , comprising:

if the at least one active NIC connection is of the L2 or L4 type:

caching the at least one RX buffer descriptor in at least one RX buffer descriptor queue in the host memory;

caching the at least one TX buffer descriptor in at least one TX buffer descriptor queue in the host memory; and

if the at least one active NIC connection is of the L5 type:

caching at least one lower TPT entry in a lower translation page table in the host memory.

5. The method according to claim 1 , comprising:

caching utilizing said shared cache, the at least one buffer descriptor in a shared cache entry on the single NIC, the shared cache entry adapted to cache at least one of a L2, L4 or L5 type buffer descriptor.

6. The method according to claim 2 , wherein each of the at least one upper translation page table entry refers to at least one lower translation page table entry.

7. The method according to claim 2 , wherein each of the at least one upper translation page table entry comprises at least one of a buffer length information and a starting virtual address information.

8. The method according to claim 2 , wherein each of the at least one lower translation page table entry comprises at least a memory page identifier of a particular host memory page.

9. The method according to claim 2 , wherein caching of the TX buffer descriptor comprises determining whether a cache entry is free.

10. The method according to claim 9 , comprising:

determining whether at least one control bit identifying whether the cache entry is free is asserted.

11. The method according to claim 10 , wherein the at least one control bit is a free bit.

12. The method according to claim 2 , wherein caching of at least one of the TX buffer descriptor and the RX buffer descriptor comprises determining an identifier of the at least one active NIC connection.

13. The method according to claim 12 , wherein the determined identifier is a connection ID value.

14. The method according to claim 2 , wherein caching of the TX buffer descriptor comprises:

if the at least one active NIC connection is a L2 type:

determining a queue location in a host memory, which is being associated with a TX buffer descriptor queue;

if the at least one active NIC connection is a L4 type:

determining a queue location in the host memory, which is being associated with a TX buffer descriptor queue; and

if the at least one active NIC connection is a L5 type:

determining an offset into a lower translation page table entry, the offset being associated with a TX buffer descriptor information.

15. The method according to claim 2 , wherein caching of the RX buffer descriptor comprises:

if the at least one active NIC connection is a L2 type:

determining a queue location in a host memory, which is being associated with an RX buffer descriptor queue; and

if the at least one active NIC connection is a L4 type:

determining a queue location in the host memory, which is being associated with an RX buffer descriptor queue; and

if the at least one active NIC connection is a L5 type:

determining an offset into a lower translation page table entry, the offset being associated with an RX buffer descriptor information.

16. The method according to claim 1 , comprising utilizing at least one of a least recently used (LRU) logic scheme, a Content Addressable Memory (CAM) address translation scheme, and a directed replacement scheme during buffer management of the at least one buffer descriptor cached within the NIC.

17. The method according to claim 1 , wherein said determining comprises determining that a first active NIC connection is of the L2 type, and

determining that a second active NIC connection is of the L4 type; and

said caching comprises caching in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection, and caching in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

18. The method according to claim 1 , wherein said determining comprises determining that a first active NIC connection is of the L2 type, and determining that a second active NIC connection is of the L5 type; and

said caching comprises caching in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection, and caching in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

19. The method according to claim 1 , wherein said determining comprises determining that a first active NIC connection is of the L4 type, and determining that a second active NIC connection is of the L5 type; and

said caching comprises caching in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection, and caching in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

20. The method according to claim 1 , wherein said determining comprises determining that a first active NIC connection is of the L2 type, determining that a second active NIC connection is of the L4 type, and determining that a third active NIC connection is of the L5 type; and

said caching comprises caching in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection, caching in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection, and caching in the shared cache of the single NIC at least one third buffer descriptor associated with the third active NIC connection.

21. A system for buffer management for layer 2 (L2), layer 4 (L4) and layer 5 (L5) network interface controller (NIC) applications, comprising:

a single NIC comprising a shared cache for caching buffer descriptors which are associated with L2 type, L4 type and L5 type active NIC connections;

at least one processor within said single network interface controller (NIC) determines whether at least one active NIC connection is one of said L2 type, said L4 type, or said L5 type; and

the at least one processor caches, using said shared cache, at least one buffer descriptor managed by the NIC applications, wherein the at least one buffer descriptor being associated with the determined type of the at least one active NIC connection.

22. The system according to claim 21 , wherein the cached at least one buffer descriptor comprises at least one of a receive (RX) buffer descriptor, a transmit (TX) buffer descriptor, a upper translation page table (TPT) entry, and a lower TPT table entry.

23. The system according to claim 22 , wherein the at least one processor associates at least one memory page in a host memory with at least one of the RX buffer descriptor, the TX buffer descriptor, and the lower TPT table entry.

24. The system according to claim 23 , the at least one processor:

caching the RX buffer descriptor in at least one RX buffer descriptor queue in the host memory, if the at least one active NIC connection is of the L2 or L4 type;

caching the TX buffer descriptor in at least one TX buffer descriptor queue in the host memory, if the at least one active NIC connection is of the L2 or L4 type; and

caching at least one lower TPT entry in a lower translation page table in the host memory, if the at least one active NIC connection is of the L5 type.

25. The system according to claim 21 , wherein the at least one processor utilizes said shared cache, caches the at least one buffer descriptor in a shared cache entry on the single NIC, the shared cache entry adapted to cache at least one of a L2, L4 or L5 type buffer descriptor.

26. The system according to claim 22 , wherein each of the at least one upper translation page table entry refers to at least one lower translation page table entry.

27. The system according to claim 22 , wherein each of the at least one upper translation page table entry comprises at least one of a buffer length information and a starting virtual address information.

28. The system according to claim 22 , wherein each of the at least one lower translation page table entry comprises at least a memory page identifier of a particular host memory page.

29. The system according to claim 22 , wherein caching of the TX buffer descriptor by the at least one processor comprises the at least one processor determining whether a cache entry is free.

30. The system according to claim 29 , wherein the at least one processor determines whether at least one control bit identifying whether the cache entry is free is asserted.

31. The system according to claim 30 , wherein the at least one control bit is a free bit.

32. The system according to claim 22 , wherein caching of at least one of the TX buffer descriptor and the RX buffer descriptor by the at least one processor further comprises the at least one processor determining an identifier of the at least one active NIC connection.

33. The system according to claim 32 , wherein the determined identifier is a connection ID value.

34. The system according to claim 22 , wherein caching of the TX buffer descriptor by the at least one processor comprises:

if the at least one active NIC connection is a L2 type:

the at least one processor determining a queue location in a host memory, which is being associated with a TX buffer descriptor queue;

if the at least one active NIC connection is a L4 type:

the at least one processor determining a queue location in the host memory, which is being associated with a TX buffer descriptor queue; and

if the at least one active NIC connection is a L5 type:

the at least one processor determining an offset into a lower translation page table entry, the offset being associated with a TX buffer descriptor information.

35. The system according to claim 22 , wherein caching of the RX buffer descriptor by the at least one processor comprises:

if the at least one active NIC connection is a L2 type:

the at least one processor determining a queue location in a host memory, which is being associated with an RX buffer descriptor queue;

if the at least one active NIC connection is a L4 type:

the at least one processor determining a queue location in the host memory, which is being associated with an RX buffer descriptor queue; and

if the at least one active NIC connection is a L5 type:

the at least one processor determining an offset into a lower translation page table entry, the offset being associated with an RX buffer descriptor information.

36. The system according to claim 21 , wherein the at least one processor utilizes at least one of a least recently used (LRU) logic scheme, a Content Addressable Memory (CAM) address translation scheme, and a direct replacement scheme during buffer management of the at least one buffer descriptor cached within the single NIC.

37. The system according to claim 21 , wherein the at least one processor:

determines that a first active NIC connection is of the L2 type;

determines that a second active NIC connection is of the L4 type;

caches in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection; and

caches in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

38. The system according to claim 21 , wherein the at least one processor determines that a first active NIC connection is of the L2 type, determines that a second active NIC connection is of the L5 type, caches in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection, and caches in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

39. The system according to claim 21 , wherein the at least one processor:

determines that a first active NIC connection is of the L4 type;

determines that a second active NIC connection is of the L5 type;

caches in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection; and

caches in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

40. The system according to claim 21 , wherein the at least one processor:

determines that a first active NIC connection is of the L2 type;

determines that a second active NIC connection is of the L4 type;

determines that a third active NIC connection is of the L5 type;

caches in the shared cache of the single NIC at least one first buffer descriptor associated with the first active NIC connection, caches in the shared cache of the single NIC at least one second buffer descriptor associated with the second active NIC connection; and

caches in the shared cache of the single NIC at least one third buffer descriptor associated with the third active NIC connection.

41. A method for buffer management for layer 2 (L2), layer 4 (L4) and layer 5 (L5) network interface controller (NIC) applications, the method comprising:

caching, in a shared cache within a single NIC, buffer descriptors which are associated with L2 type, L4 type and L5 type active NIC connections;

determining, by the single NIC, whether at least one active NIC connection is one of said L2 type, said L4 type, or said L5 type; and

handling, using said buffer descriptors in said shared cache, data associated with the L2 type, L4 type and L5 type NIC connection. of the single NIC at least one second buffer descriptor associated with the second active NIC connection.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 09/05/2018 PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0133. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0456 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0133 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2004
From: MCDANIEL, SCOTT; FAN, KAN FRANKIE
To: BROADCOM CORPORATION
Reel/Frame 015947/0258 →