Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7f9774a authored by Henry Orosco's avatar Henry Orosco Committed by Doug Ledford
Browse files

i40iw: Optimize inline data copy



Use memcpy for inline data copy in sends
and writes instead of byte by byte copy.

Signed-off-by: default avatarMustafa Ismail <mustafa.ismail@intel.com>
Signed-off-by: default avatarHenry Orosco <henry.orosco@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent c38d7e0d
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -430,7 +430,7 @@ static enum i40iw_status_code i40iw_inline_rdma_write(struct i40iw_qp_uk *qp,
	struct i40iw_inline_rdma_write *op_info;
	u64 *push;
	u64 header = 0;
	u32 i, wqe_idx;
	u32 wqe_idx;
	enum i40iw_status_code ret_code;
	bool read_fence = false;
	u8 wqe_size;
@@ -465,14 +465,12 @@ static enum i40iw_status_code i40iw_inline_rdma_write(struct i40iw_qp_uk *qp,
	src = (u8 *)(op_info->data);

	if (op_info->len <= 16) {
		for (i = 0; i < op_info->len; i++, src++, dest++)
			*dest = *src;
		memcpy(dest, src, op_info->len);
	} else {
		for (i = 0; i < 16; i++, src++, dest++)
			*dest = *src;
		memcpy(dest, src, 16);
		src += 16;
		dest = (u8 *)wqe + 32;
		for (; i < op_info->len; i++, src++, dest++)
			*dest = *src;
		memcpy(dest, src, op_info->len - 16);
	}

	wmb(); /* make sure WQE is populated before valid bit is set */
@@ -507,7 +505,7 @@ static enum i40iw_status_code i40iw_inline_send(struct i40iw_qp_uk *qp,
	u8 *dest, *src;
	struct i40iw_post_inline_send *op_info;
	u64 header;
	u32 wqe_idx, i;
	u32 wqe_idx;
	enum i40iw_status_code ret_code;
	bool read_fence = false;
	u8 wqe_size;
@@ -540,14 +538,12 @@ static enum i40iw_status_code i40iw_inline_send(struct i40iw_qp_uk *qp,
	src = (u8 *)(op_info->data);

	if (op_info->len <= 16) {
		for (i = 0; i < op_info->len; i++, src++, dest++)
			*dest = *src;
		memcpy(dest, src, op_info->len);
	} else {
		for (i = 0; i < 16; i++, src++, dest++)
			*dest = *src;
		memcpy(dest, src, 16);
		src += 16;
		dest = (u8 *)wqe + 32;
		for (; i < op_info->len; i++, src++, dest++)
			*dest = *src;
		memcpy(dest, src, op_info->len - 16);
	}

	wmb(); /* make sure WQE is populated before valid bit is set */