From 8a881fcefc44d705df417a9ee0c70284124981d1 Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Thu, 29 Sep 2016 16:47:41 +0300 Subject: [PATCH] minor fix to hw_cs inst --- src/stateless/cp/trex_stream_vm.cpp | 6 +++--- src/stateless/cp/trex_stream_vm.h | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/stateless/cp/trex_stream_vm.cpp b/src/stateless/cp/trex_stream_vm.cpp index a9935759..96ba8934 100644 --- a/src/stateless/cp/trex_stream_vm.cpp +++ b/src/stateless/cp/trex_stream_vm.cpp @@ -644,9 +644,9 @@ void StreamVm::build_program(){ err(ss.str()); } - if (lpFix->m_l3_len < 8 ) { + if (lpFix->m_l3_len < 20 ) { std::stringstream ss; - ss << "instruction id '" << ins_id << "' fix hw offset l3 " << lpFix->m_l3_len << " is lower than 8 "; + ss << "instruction id '" << ins_id << "' fix hw offset l3 " << lpFix->m_l3_len << " is lower than 20 "; err(ss.str()); } @@ -673,7 +673,7 @@ void StreamVm::build_program(){ } }else{ if (ipv4->getVersion() ==6) { - /* pass */ + packet_is_ipv4=false; }else{ std::stringstream ss; ss << "instruction id '" << ins_id << "' fix hw command should work on IPv4 or IPv6 " ; diff --git a/src/stateless/cp/trex_stream_vm.h b/src/stateless/cp/trex_stream_vm.h index c9f459d3..f3c35013 100644 --- a/src/stateless/cp/trex_stream_vm.h +++ b/src/stateless/cp/trex_stream_vm.h @@ -558,20 +558,21 @@ public: UDPHeader * udp; } u; - u.tcp = (TCPHeader*)(pkt_base+m_l3_len); + u.tcp = (TCPHeader*)(pkt_base+m_l2_len+m_l3_len); /* set the mbuf info */ m->l2_len = m_l2_len; m->l3_len = m_l3_len; m->ol_flags |= m_ol_flags; if (m_ol_flags & PKT_TX_IPV4 ){ /* splitting to 4 instructions didn't improve performance .. */ ipv4->ClearCheckSum(); - if (m_ol_flags & PKT_TX_TCP_CKSUM ){ + if ((m_ol_flags & PKT_TX_L4_MASK) == PKT_TX_TCP_CKSUM ){ u.tcp->setChecksumRaw(rte_ipv4_phdr_cksum((struct ipv4_hdr *)ipv4,m_ol_flags)); }else{ u.udp->setChecksumRaw(rte_ipv4_phdr_cksum((struct ipv4_hdr *)ipv4,m_ol_flags)); } + }else{ - if (m_ol_flags & PKT_TX_TCP_CKSUM ){ + if ((m_ol_flags & PKT_TX_L4_MASK) == PKT_TX_TCP_CKSUM ){ u.tcp->setChecksumRaw(rte_ipv6_phdr_cksum((struct ipv6_hdr *)ipv4,m_ol_flags)); }else{ u.udp->setChecksumRaw(rte_ipv6_phdr_cksum((struct ipv6_hdr *)ipv4,m_ol_flags)); -- 2.16.6