From: Bogdan Pricope <bogdan.pric...@linaro.org>

Signed-off-by: Bogdan Pricope <bogdan.pric...@linaro.org>
---
/** Email created from pull request 124 (bogdanPricope:dpdk_hw_csum_pr)
 ** https://github.com/Linaro/odp/pull/124
 ** Patch: https://github.com/Linaro/odp/pull/124.patch
 ** Base sha: 7508c5ac906bb7cb1d339b4c5e924f3a18e504ca
 ** Merge commit sha: 086fe31f96e49f97f945702d0691f019245b959c
 **/
 platform/linux-generic/pktio/dpdk.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/platform/linux-generic/pktio/dpdk.c 
b/platform/linux-generic/pktio/dpdk.c
index 8d1dcd84..f2a54b75 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -668,6 +668,7 @@ static int dpdk_setup_port(pktio_entry_t *pktio_entry)
        int ret;
        pkt_dpdk_t *pkt_dpdk = &pktio_entry->s.pkt_dpdk;
        struct rte_eth_rss_conf rss_conf;
+       uint16_t hw_ip_checksum = 0;
 
        /* Always set some hash functions to enable DPDK RSS hash calculation */
        if (pkt_dpdk->hash.all_bits == 0) {
@@ -677,12 +678,17 @@ static int dpdk_setup_port(pktio_entry_t *pktio_entry)
                rss_conf_to_hash_proto(&rss_conf, &pkt_dpdk->hash);
        }
 
+       if (pktio_entry->s.config.pktin.bit.ipv4_chksum ||
+           pktio_entry->s.config.pktin.bit.udp_chksum ||
+           pktio_entry->s.config.pktin.bit.tcp_chksum)
+               hw_ip_checksum = 1;
+
        struct rte_eth_conf port_conf = {
                .rxmode = {
                        .mq_mode = ETH_MQ_RX_RSS,
                        .split_hdr_size = 0,
                        .header_split   = 0,
-                       .hw_ip_checksum = 0,
+                       .hw_ip_checksum = hw_ip_checksum,
                        .hw_vlan_filter = 0,
                        .hw_strip_crc   = 0,
                        .enable_scatter = 0,

Reply via email to