METHOD AND SYSTEM FOR TEMPORARY DATA UNIT STORAGE ON INFINIBAND HOST CHANNEL ADAPTOR
First Claim
1. A method for temporary storage of data units on a communications adapter, comprising:
- receiving a first data unit to store in a hardware linked list queue on the communications adapter, wherein the hardware linked list queue comprises a plurality of linked lists;
reading a first index value from the first data unit;
determining that the first index value does match an existing index value of a first linked list of the plurality of linked lists, wherein the first linked list comprises a first plurality of data units;
storing the first data unit in the hardware linked list queue as a member of the first linked list;
receiving a second data unit to store in the hardware linked list queue on the communications adapter;
reading a second index value from the second data unit;
determining that the second index value does not match any existing index value of any of the plurality of linked lists stored in the hardware linked list queue;
allocating space in the hardware linked list queue for a second linked list to add the second linked list to the plurality of linked lists based on determining that the second index value does not match any existing index value;
storing the second data unit in the second linked list; and
for each transmission request of a plurality of transmission requests on the hardware linked list queue at least the following steps are performed;
identifying a list identifier in the transmission request;
identifying a head pointer of a requested linked list of the plurality of linked lists that matches the list identifier in the transmission request;
obtaining, from the hardware linked list queue, a requested data unit referenced by the head pointer; and
transmitting the requested data unit.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for temporary storage of data units including receiving a first data unit to store in a hardware linked list queue on a communications adapter, reading a first index value from the first data unit, determining that the first index value does match an existing index value of a first linked list, and storing the first data unit in the hardware linked list queue as a member of the first linked list. The method further includes receiving a second data unit, reading a second index value from the second data unit, determining that the second index value does not match any existing index value, allocating space in the hardware linked list queue for a second linked list, and storing the second data unit in the second linked list.
-
Citations
20 Claims
-
1. A method for temporary storage of data units on a communications adapter, comprising:
-
receiving a first data unit to store in a hardware linked list queue on the communications adapter, wherein the hardware linked list queue comprises a plurality of linked lists; reading a first index value from the first data unit; determining that the first index value does match an existing index value of a first linked list of the plurality of linked lists, wherein the first linked list comprises a first plurality of data units; storing the first data unit in the hardware linked list queue as a member of the first linked list; receiving a second data unit to store in the hardware linked list queue on the communications adapter; reading a second index value from the second data unit; determining that the second index value does not match any existing index value of any of the plurality of linked lists stored in the hardware linked list queue; allocating space in the hardware linked list queue for a second linked list to add the second linked list to the plurality of linked lists based on determining that the second index value does not match any existing index value; storing the second data unit in the second linked list; and for each transmission request of a plurality of transmission requests on the hardware linked list queue at least the following steps are performed; identifying a list identifier in the transmission request; identifying a head pointer of a requested linked list of the plurality of linked lists that matches the list identifier in the transmission request; obtaining, from the hardware linked list queue, a requested data unit referenced by the head pointer; and transmitting the requested data unit. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A hardware linked list queue for temporary storage of data units on a communications adapter comprising:
-
a data list component comprising; a data memory comprising a plurality of memory locations for storing a plurality of linked lists, wherein each linked list of the plurality of linked lists comprises at least one data unit; a data list memory comprising; a free list for storing a list of available memory locations in the data memory; and a data unit list comprising a plurality of list entries, wherein each list entry of the plurality of list entries corresponds to a memory location of the plurality of memory locations, and wherein each list entry of the plurality of list entries stores an identifier of a next list entry in a same linked list; and a data list controller for storing a head pointer for each list of the plurality of linked lists, wherein the head pointer references a first list entry in the data unit list; and a management unit operatively connected to the data list component and configured to; receive an inbound data unit; and send the list identifier corresponding to the inbound data unit to the data list controller to associate the inbound data unit with the linked list corresponding to the inbound data unit, wherein the data list component is configured, for each transmission request of a plurality of transmission requests, to perform at least the following; identify a list identifier in the transmission request; identify the head pointer of a requested linked list of the plurality of linked lists that matches the list identifier in the transmission request; obtain, from the data memory, a requested data unit referenced by the head pointer; and transmit the requested data unit. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A communications adapter comprising:
-
a producer module; a consumer module; and a current module interposed between the producer module and the consumer module and configured to; receive, from the producer module, a first data unit to store in a hardware linked list queue on the communications adapter, wherein the hardware linked list queue comprises a plurality of linked lists; read a first index value from the first data unit; determine that the first index value does match an existing index value of a first linked list of the plurality of linked lists, wherein the first linked list comprises a first plurality of data units; store the first data unit in the hardware linked list queue as a member of the first linked list; receive, from the producer module, a second data unit to store in the hardware linked list queue on the communications adapter; read a second index value from the second data unit; determine that the second index value does not match any existing index value of any of the plurality of linked lists stored in the hardware linked list queue; allocate space in the hardware linked list queue for a second linked list to add the second linked list to the plurality of linked lists based on determining that the second index value does not match any existing index value; store the second data unit in the second linked list; and for each transmission request of a plurality of transmission requests on the hardware linked list queue at least the following steps are performed; identify a list identifier in the transmission request; identify a head pointer of a requested linked list of the plurality of linked lists that matches the list identifier in the transmission request; obtain, from the hardware linked list queue, a requested data unit referenced by the head pointer; and transmit, to the consumer module, the requested data unit. - View Dependent Claims (18, 19, 20)
-
Specification