Patent ID: 8804752

Claim:
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.