Patent ID: 8510606

Claim:
A method for maintaining reliable communication between a command initiator and a target device, comprising: detecting, by the command initiator, an error corresponding to the target device; determining, by the command initiator, that the error corresponds to one of a protocol error, a drive detected error, and a target device timeout; performing, by the command initiator, a downshift evaluation for a path between the command initiator and the target device, the downshift evaluation comprising: identifying the target device and the path between the target device and the command initiator; determining if a time stamp is at a location in a memory, wherein the location in the memory is designated by a pointer, wherein the memory corresponds to the path and the target device; in response to determining that a time stamp is at the location in the memory, reading the time stamp from the location in the memory; comparing the time stamp to the current time in order to determine if the difference is less than a predetermined value; if the difference between the time stamp and the current time is not less than the predetermined value, forgoing transmission speed downshift, and if the difference between the time stamp and the current time is less than the predetermined value, requiring transmission speed downshift; in response to performing the downshift evaluation for the path, maintaining a transmission speed of the path if the downshift evaluation determines that forgoing transmission speed downshift is required for the path; and reducing the transmission speed of the path if the downshift evaluation determines that transmission speed downshift is required for the path; logging the downshift evaluation result; and reporting any transmission speed change for the path to a user.