Thread (99 messages) 99 messages, 7 authors, 2021-10-29

Re: [dpdk-dev] [PATCH v5 5/5] examples/l3fwd-power: support virtio/vhost

From: Li, Miao <hidden>
Date: 2021-10-15 08:51:53

Hi Chenbo,
-----Original Message-----
From: Xia, Chenbo <redacted>
Sent: Friday, October 15, 2021 4:14 PM
To: Li, Miao <redacted>; dev@dpdk.org
Cc: maxime.coquelin@redhat.com
Subject: RE: [PATCH v5 5/5] examples/l3fwd-power: support virtio/vhost
quoted
-----Original Message-----
From: Li, Miao <redacted>
Sent: Friday, October 15, 2021 11:12 PM
To: dev@dpdk.org
Cc: Xia, Chenbo <redacted>; maxime.coquelin@redhat.com; Li,
Miao
quoted
[off-list ref]
Subject: [PATCH v5 5/5] examples/l3fwd-power: support virtio/vhost

In l3fwd-power, there is default port configuration which requires
RSS and IPV4/UDP/TCP checksum. Once device does not support these,
the l3fwd-power will exit and report an error.
This patch updates the port configuration based on device capabilities
after getting the device information to support devices like virtio
and vhost.

Signed-off-by: Miao Li <redacted>
---
 examples/l3fwd-power/main.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index 73a3ab5bc0..61c15e01d2 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -505,7 +505,9 @@ is_valid_ipv4_pkt(struct rte_ipv4_hdr *pkt, uint32_t
link_len)
 		return -1;

 	/* 2. The IP checksum must be correct. */
-	/* this is checked in H/W */
+	/* if this is not checked in H/W, check it. */
+	if ((port_conf.rxmode.offloads & DEV_RX_OFFLOAD_IPV4_CKSUM) == 0)
+		rte_ipv4_cksum(pkt);
This is not correct. The correct handling should be:

1. get actual cksum from pkt and save it
2. set pkt cksum to zero
3. compute correct cksum using rte_ipv4_cksum
4. compare to know if actual cksum == correct cksum

You can refer to test_ipsec_l3_csum_verify in test_cryptodev_security_ipsec.c

Thanks,
Chenbo
I will fix it in the next version.

Thanks,
Miao
quoted
 	/*
 	 * 3. The IP version number must be 4. If the version number is not 4
@@ -2637,6 +2639,11 @@ main(int argc, char **argv)
 				local_port_conf.rx_adv_conf.rss_conf.rss_hf);
 		}

+		if (local_port_conf.rx_adv_conf.rss_conf.rss_hf == 0)
+			local_port_conf.rxmode.mq_mode =
ETH_MQ_RX_NONE;
quoted
+		local_port_conf.rxmode.offloads &= dev_info.rx_offload_capa;
+		port_conf.rxmode.offloads = local_port_conf.rxmode.offloads;
+
 		ret = rte_eth_dev_configure(portid, nb_rx_queue,
 					(uint16_t)n_tx_queue,
&local_port_conf);
quoted
 		if (ret < 0)
--
2.25.1
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help