|
@@ -410,8 +410,13 @@ static int
|
|
|
wait_for_free_request(struct TCP_Server_Info *server, const int timeout,
|
|
|
const int optype)
|
|
|
{
|
|
|
- return wait_for_free_credits(server, timeout,
|
|
|
- server->ops->get_credits_field(server, optype));
|
|
|
+ int *val;
|
|
|
+
|
|
|
+ val = server->ops->get_credits_field(server, optype);
|
|
|
+ /* Since an echo is already inflight, no need to wait to send another */
|
|
|
+ if (*val <= 0 && optype == CIFS_ECHO_OP)
|
|
|
+ return -EAGAIN;
|
|
|
+ return wait_for_free_credits(server, timeout, val);
|
|
|
}
|
|
|
|
|
|
static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf,
|