diff options
Diffstat (limited to 'src/stateless/dp/trex_stateless_dp_core.cpp')
-rw-r--r-- | src/stateless/dp/trex_stateless_dp_core.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/stateless/dp/trex_stateless_dp_core.cpp b/src/stateless/dp/trex_stateless_dp_core.cpp index 585ff2c7..e0378cfb 100644 --- a/src/stateless/dp/trex_stateless_dp_core.cpp +++ b/src/stateless/dp/trex_stateless_dp_core.cpp @@ -470,7 +470,8 @@ TrexStatelessDpCore::add_stream(TrexStatelessDpPerPort * lp_port, node->m_cache_mbuf=0; node->m_type = CGenNode::STATELESS_PKT; - node->m_ref_stream_info = stream->clone_as_dp(); + /* clone the stream from control plane memory to DP memory */ + node->m_ref_stream_info = stream->clone(); node->m_next_stream=0; /* will be fixed later */ @@ -539,7 +540,7 @@ TrexStatelessDpCore::add_stream(TrexStatelessDpPerPort * lp_port, node->set_mbuf_cache_dir(dir); - if (stream->is_vm() == false ) { + if (node->m_ref_stream_info->getDpVm() == NULL) { /* no VM */ node->m_vm_flow_var = NULL; @@ -569,15 +570,15 @@ TrexStatelessDpCore::add_stream(TrexStatelessDpPerPort * lp_port, StreamVmDp * lpDpVm = local_mem_stream->getDpVm(); - node->m_vm_flow_var = lpDpVm->clone_bss(); /* clone the flow var */ - node->m_vm_program = lpDpVm->get_program(); /* same ref to the program */ - node->m_vm_program_size =lpDpVm->get_program_size(); + node->m_vm_flow_var = lpDpVm->clone_bss(); /* clone the flow var */ + node->m_vm_program = lpDpVm->get_program(); /* same ref to the program */ + node->m_vm_program_size = lpDpVm->get_program_size(); /* we need to copy the object */ - if ( pkt_size > stream->m_vm_prefix_size ) { + if ( pkt_size > lpDpVm->get_prefix_size() ) { /* we need const packet */ - uint16_t const_pkt_size = pkt_size - stream->m_vm_prefix_size ; + uint16_t const_pkt_size = pkt_size - lpDpVm->get_prefix_size() ; rte_mbuf_t *m = CGlobalInfo::pktmbuf_alloc(node->get_socket_id(), const_pkt_size ); assert(m); @@ -585,17 +586,18 @@ TrexStatelessDpCore::add_stream(TrexStatelessDpPerPort * lp_port, assert(p); /* copy packet data */ - memcpy(p,(stream_pkt+ stream->m_vm_prefix_size),const_pkt_size); + memcpy(p,(stream_pkt + lpDpVm->get_prefix_size()),const_pkt_size); node->set_const_mbuf(m); } - if (stream->m_vm_prefix_size > pkt_size ) { - stream->m_vm_prefix_size = pkt_size; + if (lpDpVm->get_prefix_size() > pkt_size ) { + lpDpVm->set_prefix_size(pkt_size); } + /* copy the headr */ - uint16_t header_size = stream->m_vm_prefix_size; + uint16_t header_size = lpDpVm->get_prefix_size(); assert(header_size); node->alloc_prefix_header(header_size); uint8_t *p=node->m_original_packet_data_prefix; |