From 0b7f5a57ac6eb23e4f60e57eb0a9508f0cc74e90 Mon Sep 17 00:00:00 2001 From: MengjinWu Date: Fri, 16 Sep 2022 04:11:09 +0000 Subject: [PATCH] nvme/tcp: remove unnecessary if check in nvme_tcp_read_pdu This "if" is of no use here. The state machine has the "NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_CH" state means the pdu does not receive enough length of header. Signed-off-by: MengjinWu Change-Id: Id50943f77b570fd337e2bb4e3b45281018d159e4 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14504 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- lib/nvme/nvme_tcp.c | 25 ++++++++++----------- test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index c7b6f80f4..0e3de3858 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -1615,21 +1615,20 @@ nvme_tcp_read_pdu(struct nvme_tcp_qpair *tqpair, uint32_t *reaped) memset(pdu, 0, sizeof(struct nvme_tcp_pdu)); nvme_tcp_qpair_set_recv_state(tqpair, NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_CH); break; - /* common header */ + /* Wait for the pdu common header */ case NVME_TCP_PDU_RECV_STATE_AWAIT_PDU_CH: + assert(pdu->ch_valid_bytes < sizeof(struct spdk_nvme_tcp_common_pdu_hdr)); + rc = nvme_tcp_read_data(tqpair->sock, + sizeof(struct spdk_nvme_tcp_common_pdu_hdr) - pdu->ch_valid_bytes, + (uint8_t *)&pdu->hdr.common + pdu->ch_valid_bytes); + if (rc < 0) { + nvme_tcp_qpair_set_recv_state(tqpair, NVME_TCP_PDU_RECV_STATE_ERROR); + break; + } + pdu->ch_valid_bytes += rc; if (pdu->ch_valid_bytes < sizeof(struct spdk_nvme_tcp_common_pdu_hdr)) { - rc = nvme_tcp_read_data(tqpair->sock, - sizeof(struct spdk_nvme_tcp_common_pdu_hdr) - pdu->ch_valid_bytes, - (uint8_t *)&pdu->hdr.common + pdu->ch_valid_bytes); - if (rc < 0) { - nvme_tcp_qpair_set_recv_state(tqpair, NVME_TCP_PDU_RECV_STATE_ERROR); - break; - } - pdu->ch_valid_bytes += rc; - if (pdu->ch_valid_bytes < sizeof(struct spdk_nvme_tcp_common_pdu_hdr)) { - rc = NVME_TCP_PDU_IN_PROGRESS; - goto out; - } + rc = NVME_TCP_PDU_IN_PROGRESS; + goto out; } /* The command header of this PDU has now been read from the socket. */ diff --git a/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c b/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c index 5c07c0c03..7932d3d4f 100644 --- a/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c +++ b/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c @@ -1381,7 +1381,7 @@ test_nvme_tcp_ctrlr_connect_qpair(void) tqpair->recv_pdu->hdr.common.pdu_type = SPDK_NVME_TCP_PDU_TYPE_IC_RESP; tqpair->recv_pdu->hdr.common.plen = sizeof(struct spdk_nvme_tcp_ic_resp); tqpair->recv_pdu->hdr.common.hlen = sizeof(struct spdk_nvme_tcp_ic_resp); - tqpair->recv_pdu->ch_valid_bytes = 8; + tqpair->recv_pdu->ch_valid_bytes = 7; tqpair->recv_pdu->psh_valid_bytes = tqpair->recv_pdu->hdr.common.hlen; tqpair->recv_pdu->hdr.ic_resp.maxh2cdata = 4096; tqpair->recv_pdu->hdr.ic_resp.cpda = 1;