diff --git a/lib/nvmf/tcp.c b/lib/nvmf/tcp.c index ee178af97..f06cc9732 100644 --- a/lib/nvmf/tcp.c +++ b/lib/nvmf/tcp.c @@ -1680,15 +1680,13 @@ nvmf_tcp_pdu_payload_insert_dif(struct nvme_tcp_pdu *pdu, uint32_t read_offset, return rc; } -#define MAX_NVME_TCP_PDU_LOOP_COUNT 32 - static int spdk_nvmf_tcp_sock_process(struct spdk_nvmf_tcp_qpair *tqpair) { int rc = 0; struct nvme_tcp_pdu *pdu; enum nvme_tcp_pdu_recv_state prev_state; - uint32_t data_len, current_pdu_num = 0; + uint32_t data_len; struct spdk_nvmf_tcp_transport *ttransport = SPDK_CONTAINEROF(tqpair->qpair.transport, struct spdk_nvmf_tcp_transport, transport); @@ -1739,15 +1737,13 @@ spdk_nvmf_tcp_sock_process(struct spdk_nvmf_tcp_qpair *tqpair) 0, rc, 0, 0); pdu->psh_valid_bytes += rc; } + if (pdu->psh_valid_bytes < pdu->psh_len) { return NVME_TCP_PDU_IN_PROGRESS; } /* All header(ch, psh, head digist) of this PDU has now been read from the socket. */ spdk_nvmf_tcp_pdu_psh_handle(tqpair, ttransport); - if (tqpair->recv_state == NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_READY) { - current_pdu_num++; - } break; /* Wait for the req slot */ case NVME_TCP_PDU_RECV_STATE_AWAIT_REQ: @@ -1786,7 +1782,6 @@ spdk_nvmf_tcp_sock_process(struct spdk_nvmf_tcp_qpair *tqpair) /* All of this PDU has now been read from the socket. */ spdk_nvmf_tcp_pdu_payload_handle(tqpair, ttransport); - current_pdu_num++; break; case NVME_TCP_PDU_RECV_STATE_ERROR: if (!spdk_sock_is_connected(tqpair->sock)) { @@ -1798,7 +1793,7 @@ spdk_nvmf_tcp_sock_process(struct spdk_nvmf_tcp_qpair *tqpair) SPDK_ERRLOG("code should not come to here"); break; } - } while ((tqpair->recv_state != prev_state) && (current_pdu_num < MAX_NVME_TCP_PDU_LOOP_COUNT)); + } while (tqpair->recv_state != prev_state); return rc; }