diff --git a/lib/nvmf/tcp.c b/lib/nvmf/tcp.c index fe3064709..34af8f0eb 100644 --- a/lib/nvmf/tcp.c +++ b/lib/nvmf/tcp.c @@ -1859,12 +1859,13 @@ err: } static int -nvmf_tcp_pdu_payload_insert_dif(struct nvme_tcp_pdu *pdu, int read_len) +nvmf_tcp_pdu_payload_insert_dif(struct nvme_tcp_pdu *pdu, uint32_t read_offset, + int read_len) { int rc; rc = spdk_dif_generate_stream(pdu->data_iov, pdu->data_iovcnt, - pdu->readv_offset, read_len, pdu->dif_ctx); + read_offset, read_len, pdu->dif_ctx); if (rc != 0) { SPDK_ERRLOG("DIF generate failed\n"); } @@ -1985,7 +1986,7 @@ spdk_nvmf_tcp_sock_process(struct spdk_nvmf_tcp_qpair *tqpair) pdu->readv_offset += rc; if (spdk_unlikely(pdu->dif_ctx != NULL)) { - rc = nvmf_tcp_pdu_payload_insert_dif(pdu, rc); + rc = nvmf_tcp_pdu_payload_insert_dif(pdu, pdu->readv_offset - rc, rc); if (rc != 0) { return NVME_TCP_PDU_FATAL; }