diff options
author | Hanoh Haim <hhaim@cisco.com> | 2015-12-24 16:16:49 +0200 |
---|---|---|
committer | Hanoh Haim <hhaim@cisco.com> | 2015-12-24 16:16:49 +0200 |
commit | 9d1cd91825d48a97ca0ea21fa7bd34900f6c7450 (patch) | |
tree | bb3c8585e29f7c6787d0f298e2d2655b21277855 /src/stateless/dp/trex_stateless_dp_core.cpp | |
parent | 32bdea5fd30ffc378a213e773634015a5d5f255f (diff) | |
parent | ba297ed1bfdfbf61bc99fe7f75deb800b570c58e (diff) |
merge vm random support
Diffstat (limited to 'src/stateless/dp/trex_stateless_dp_core.cpp')
-rw-r--r-- | src/stateless/dp/trex_stateless_dp_core.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/stateless/dp/trex_stateless_dp_core.cpp b/src/stateless/dp/trex_stateless_dp_core.cpp index f73824bc..c211b9f5 100644 --- a/src/stateless/dp/trex_stateless_dp_core.cpp +++ b/src/stateless/dp/trex_stateless_dp_core.cpp @@ -490,7 +490,10 @@ 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(); + /* no need for this memory anymore on the control plane memory */ + stream->release_dp_object(); node->m_next_stream=0; /* will be fixed later */ @@ -559,7 +562,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; @@ -589,15 +592,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); @@ -605,17 +608,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; |