summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/pal/linux/mbuf.cpp10
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp8
2 files changed, 13 insertions, 5 deletions
diff --git a/src/pal/linux/mbuf.cpp b/src/pal/linux/mbuf.cpp
index 26a54fe9..7e9f4775 100755
--- a/src/pal/linux/mbuf.cpp
+++ b/src/pal/linux/mbuf.cpp
@@ -89,7 +89,7 @@ void utl_rte_mempool_delete(rte_mempool_t * & pool){
uint16_t rte_mbuf_refcnt_update(rte_mbuf_t *m, int16_t value)
{
utl_rte_pktmbuf_check(m);
- uint32_t a=sanb_atomic_add_return_32_old(&m->refcnt_reserved,1);
+ uint32_t a=sanb_atomic_add_return_32_old(&m->refcnt_reserved, value);
return (a);
}
@@ -136,11 +136,11 @@ rte_mbuf_t *rte_pktmbuf_alloc(rte_mempool_t *mp){
m->buf_addr =(char *)((char *)m+sizeof(rte_mbuf_t)+RTE_PKTMBUF_HEADROOM) ;
rte_pktmbuf_reset(m);
+
return (m);
}
-
void rte_pktmbuf_free_seg(rte_mbuf_t *m){
utl_rte_pktmbuf_check(m);
@@ -150,8 +150,10 @@ void rte_pktmbuf_free_seg(rte_mbuf_t *m){
if ( md != m ) {
rte_pktmbuf_detach(m);
- if (rte_mbuf_refcnt_update(md, -1) == 0)
- free(md);
+ if (rte_mbuf_refcnt_update(md, -1) == 0) {
+ free(md);
+ }
+
}
free(m);
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp
index 976d2a09..05283d5f 100644
--- a/src/stateless/cp/trex_stateless_port.cpp
+++ b/src/stateless/cp/trex_stateless_port.cpp
@@ -597,9 +597,15 @@ TrexStatelessPort::validate(void) {
void
TrexStatelessPort::get_port_effective_rate(uint64_t &bps, uint64_t &pps) {
- if (!m_graph_obj) {
+
+ if (get_stream_count() == 0) {
return;
}
+
+ if (!m_graph_obj) {
+ generate_streams_graph();
+ }
+
bps = m_graph_obj->get_max_bps() * m_factor;
pps = m_graph_obj->get_max_pps() * m_factor;
}