Message ID | 20240228125733.299384-4-aaptel@nvidia.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | nvme-tcp receive offloads | expand |
diff --git a/lib/iov_iter.c b/lib/iov_iter.c index e0aa6b440ca5..feceffab1de5 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -62,7 +62,14 @@ static __always_inline size_t memcpy_to_iter(void *iter_to, size_t progress, size_t len, void *from, void *priv2) { - memcpy(iter_to, from + progress, len); + /* + * When using direct data placement (DDP) the hardware writes + * data directly to the destination buffer, and constructs + * IOVs such that they point to this data. + * Thus, when the src == dst we skip the memcpy. + */ + if (iter_to != from + progress) + memcpy(iter_to, from + progress, len); return 0; }