Patent ID: 7676611

Claim:
A method for processing out of order frames received by a host bus adapter coupled to a host system and to a network, comprising: (a) determining if a received current frame is out of order; wherein a processing module in a receive path of the host bus adapter determines if the received current frame is out of order, notifies a main processor of the host bus adapter if the received current frame is out of order, or processes the received current frame if the frame is not out of order; (b) if the received current frame is out of order, determining if an exchange identification field in the received current frame identifies the received current frame as part of a range of expected exchanges, wherein an exchange defines an input/output operation to read or write information, and wherein the main processor for the host bus adapter keeps track of all the exchanges and determines if the received current frame is within the range of expected exchanges; (c) creating an out of order frame list if the received current frame is a first out of order frame and if the received current frame is within the range of expected exchanges; wherein the main processor creates the out of order frame list; (d) appending an existing out of order frame list if the received current frame is not the first out of order frame and if the received current frame is within the range of expected exchanges; (e) scanning the out of order frame list for determining if an end point of a last entry in the out of order frame list before the received out of order frame, matches a starting point of another entry; wherein the main processor scans the out of order frame list; (f) coalescing the last entry with the other entry whose starting point matches the end point of the last entry such that more than one out of order frame entries in the out of order frame list are combined as a single entry; wherein the main processor coalesces the last entry with the other entry; and (g) notifying the processing module in the receive path to process the out of order received current frame, wherein the main processor notifies the processing module after creating the out of order frame list or amending the existing out of order frame list.