Patent ID: 7761619

Claim:
In a computing device with a plurality of processors, a method for distributing input/output (I/O) completion events among at least a subset of the plurality of processors, the method comprising: creating an array associated with an interface of a plurality of interfaces, the array comprising a plurality of descriptors, wherein each descriptor in the plurality of descriptors is respectively and uniquely associated with one processor of the plurality of processors and stores a unique completion event handler identifier (ID) for the one processor; when a remote direct memory access (RDMA) connection carried over a packet stream is established, determining a processor of the plurality of processors on which to create an I/O completion queue for the RDMA connection, retrieving a unique completion event handler ID for the processor from a descriptor of the plurality of descriptors in the array associated with the interface using an identifier of the processor to identify a location of the unique completion event handler ID for the processor in the array, and employing the unique completion event handler ID for the processor of the plurality of processors to associate the I/O completion queue with the processor; receiving an I/O completion event into the I/O completion queue; processing, by the processor associated with the I/O completion queue, the I/O completion event; associating a completion callback function with the processor; wherein the processing, by the processor associated with the I/O completion queue, of the I/O completion event is performed, at least in part, by the completion callback function associated with the processor; and when a condition of a queue pair associated with the RDMA connection allows for a graceful disconnect of the packet stream, gracefully disconnecting the packet stream.