summaryrefslogtreecommitdiffstats
path: root/src/stateless/cp
diff options
context:
space:
mode:
authorHanoh Haim <hhaim@cisco.com>2016-09-29 16:47:41 +0300
committerHanoh Haim <hhaim@cisco.com>2016-09-29 16:50:29 +0300
commit8a881fcefc44d705df417a9ee0c70284124981d1 (patch)
treeaaac4da5072d4c9631d537752fde802b30705a73 /src/stateless/cp
parent567fe4bc797c01e23e93c2d342fa5590d3f7b96e (diff)
minor fix to hw_cs inst
Diffstat (limited to 'src/stateless/cp')
-rw-r--r--src/stateless/cp/trex_stream_vm.cpp6
-rw-r--r--src/stateless/cp/trex_stream_vm.h7
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));