diff --git a/lib/nvmf/tcp.c b/lib/nvmf/tcp.c index 686f87184..79d1f853a 100644 --- a/lib/nvmf/tcp.c +++ b/lib/nvmf/tcp.c @@ -1921,7 +1921,9 @@ spdk_nvmf_tcp_sock_process(struct spdk_nvmf_tcp_qpair *tqpair) return NVME_TCP_PDU_FATAL; } else if (rc > 0) { pdu->ch_valid_bytes += rc; - spdk_nvmf_tcp_qpair_set_recv_state(tqpair, NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_CH); + if (spdk_likely(tqpair->recv_state == NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_READY)) { + spdk_nvmf_tcp_qpair_set_recv_state(tqpair, NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_CH); + } } if (pdu->ch_valid_bytes < sizeof(struct spdk_nvme_tcp_common_pdu_hdr)) {