diff --git a/include/spdk_internal/nvme_tcp.h b/include/spdk_internal/nvme_tcp.h index 80a458b02..c0e7b32ad 100644 --- a/include/spdk_internal/nvme_tcp.h +++ b/include/spdk_internal/nvme_tcp.h @@ -558,10 +558,19 @@ nvme_tcp_pdu_calc_psh_len(struct nvme_tcp_pdu *pdu, bool hdgst_enable) psh_len += SPDK_NVME_TCP_DIGEST_LEN; } if (pdu->hdr.common.plen > psh_len) { - pdo = pdu->hdr.common.pdo; - padding_len = pdo - psh_len; - if (padding_len > 0) { - psh_len = pdo; + switch (pdu->hdr.common.pdu_type) { + case SPDK_NVME_TCP_PDU_TYPE_CAPSULE_CMD: + case SPDK_NVME_TCP_PDU_TYPE_H2C_DATA: + case SPDK_NVME_TCP_PDU_TYPE_C2H_DATA: + pdo = pdu->hdr.common.pdo; + padding_len = pdo - psh_len; + if (padding_len > 0) { + psh_len = pdo; + } + break; + default: + /* There is no padding for other PDU types */ + break; } }