From: Nathan Fontenot <nf...@linux.vnet.ibm.com> Date: Wed, 11 Apr 2018 09:37:21 -0500
> There is a bug in handling the possible return codes from sending the > login CRQ. The current code treats any non-success return value, > minus failure to send the crq and a timeout waiting for a login response, > as a need to re-send the login CRQ. This can put the drive in an ^^^^^ "driver" > inifinite loop of trying to login when getting return values other ^^^^^^^^^ "infinite" > that a partial success such as a return code of aborted. For these > scenarios the login will not ever succeed at this point and the > driver would need to be reset again. > > To resolve this loop trying to login is updated to only retry the > login if the driver gets a return code of a partial success. Other > return coes are treated as an error and the driver returns an error ^^^^ "codes" > from ibmvnic_login(). > > To avoid infinite looping in the partial success return cases, the > number of retries is capped at the maximum number of supported > queues. This value was chosen because the driver does a renegatiation ^^^^^^^^^^^^^ "renegotiation" > of capabilities which sets the number of queus possible and allows ^^^^^ "queues"