Patent ID: 7610415

Claim:
A method of receiving data from a device, comprising: reading a receive descriptor generated by a processor; extracting a buffer address and buffer length value from the receive descriptor, wherein the buffer address and buffer length value define a buffer in system memory; sensing receipt of data by the device; transferring the data from the device to a receive (RX) buffer memory; transferring status associated with the data to a status buffer memory, the status buffer memory being separate from the RX buffer memory; waiting for a predetermined number of data items to accumulate in the RX buffer memory; when the predetermined number of data items have accumulated in the RX buffer memory, reading data from the RX buffer memory, gaining control of a bus to the system memory and, while in control of the bus, writing the data read from the RX buffer memory to the buffer in the system memory; determining whether the buffer in system memory should be closed prematurely; if the buffer in system memory should be closed prematurely, modifying the receive descriptor to include a corrected buffer length and status derived from the status buffer memory, wherein the corrected buffer length is less than the buffer length value extracted from the receive descriptor; and providing the modified receive descriptor to the processor for further processing.