US 7,581,033 B2
Intelligent network interface card (NIC) optimizations
Dwayne E. Ebersole, Lancaster, Pa. (US); Sarah K. Inforzato, Downingtown, Pa. (US); Robert A. Johnson, Pottstown, Pa. (US); Anthony Narisi, Glenmoore, Pa. (US); and Kathleen Wild, Collegeville, Pa. (US)
Assigned to Unisys Corporation, Blue Bell, Pa. (US)
Filed on Dec. 05, 2003, as Appl. No. 10/729,312.
Prior Publication US 2009/0172301 A1, Jul. 02, 2009
Int. Cl. G06F 15/16 (2006.01)
U.S. Cl. 709—250  [709/223; 709/224; 709/228; 710/5; 710/39; 710/311] 8 Claims
OG exemplary drawing
 
1. A host computer system comprising:
a first processor;
a first memory;
a data storage device, the data storage device having an operating system stored thereon, the operating system executable by the first processor, the operating system creating an environment in which an application runs, the application communicating with a destination;
a send work queue, stored in the first memory, the send work queue comprising at least one send work queue entry, each send work queue entry comprising at least one of a descriptor and a control-path command;
a receive work queue, stored in the first memory, the receive work queue comprising at least one receive work queue entry, each receive work queue entry comprising at least one of a descriptor and a control-path command;
a Network Interface Card (NIC), the NIC comprising a port through which the application communicates with the destination, the NIC further comprising a second memory and a second processor;
a token table, stored in the first memory and associated with said NIC, the token table communicating descriptors and control-path commands from the send work queue and receive work queue to the NIC;
a Notification Request Area (NRA), stored in the second memory, the NRA allowing the NIC to notify the operating system that a descriptor has completed;
a Master Completion Queue (MCQ), the MCQ being stored in the first memory and being associated with at least one of the send work queue and the receive work queue, the MCQ comprising the completion status of descriptors posted to the associated work queue;
a Memory Deregistration List (MDL), the MDL being stored in the second memory, the MDL containing memory handles to be deregistered;
an MDL Insert Kernel Agent counter running in the operating system, which indicates where in the MDL a next deregistered memory handle should be inserted;
a Memory Region Table (MRT), the MRT being stored in the first memory and maintained by the MDL Insert Kernel Agent, containing all registration information for all memory regions registered on the NIC; and
a shadow MRT, the shadow MRT being stored in the second memory, which is a copy of the MRT entries for said NIC.