Patent ID: 7802031

Claim:
A host bus adapter (HBA), comprising: a buffer memory in a receive path to receive data from a network; wherein the buffer memory includes a plurality of slots for temporarily storing the data; a write pointer logic configured to generate at least two write pointers to simultaneously write data in a first clock domain in at least two slots of the plurality of slots of the buffer memory; and a read pointer logic module configured to generate at least two read pointers to simultaneously read the data from the at least two slots of the buffer memory in a second clock do\-main; wherein when the at least two slots of the buffer memory are being read, a next data word stored at another slot of the buffer memory is analyzed to determine if a deletable character is to be deleted for a pending delete request and if the deletable character is to be deleted, instead of deleting the deletable character, a value for each of the at least two pointers is increased independently such that the deletable character is skipped, where the value for each of the at least two pointers is increased by a same value or by a different value depending on a relative location of the another slot with respect to the at least two slots; and wherein when the at least two slots of the buffer memory are being read, a current data word from each slot is analyzed to determine if any of the at least two slots include an insertable character for a pending insert request and if any of the at least two slots include the insertable character, then a value for each of the at least two pointers is increased independently such that the character is read more than once to comply with the pending insert request; where the value for each of the at least two pointers is increased by a same value or a different value depending on a location of the insertable character; wherein the at least two pointer values are increased by a default value unless there is the pending delete request or the pending insert request and then the at least two pointer values are increased by a non-default value is; and wherein the non-default value is different for the at least two of the read pointers.