diff options
author | Ido Barnea <ibarnea@cisco.com> | 2017-03-13 22:28:09 +0200 |
---|---|---|
committer | Ido Barnea <ibarnea@cisco.com> | 2017-03-14 11:48:46 +0200 |
commit | af25eb9b8463225827fd38223f36a9c361f2d254 (patch) | |
tree | a730c203d0befb660501b7fdce982d6607019a62 /src/stateless/rx/trex_stateless_rx_port_mngr.cpp | |
parent | 11c76dca3353e3407c907a60d9b35746f9fc96c1 (diff) |
Software mode for latency and flow stat statistics
Also supporting QinQ for flow stat
Signed-off-by: Ido Barnea <ibarnea@cisco.com>
Diffstat (limited to 'src/stateless/rx/trex_stateless_rx_port_mngr.cpp')
-rw-r--r-- | src/stateless/rx/trex_stateless_rx_port_mngr.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/stateless/rx/trex_stateless_rx_port_mngr.cpp b/src/stateless/rx/trex_stateless_rx_port_mngr.cpp index ab7719f6..ca06619b 100644 --- a/src/stateless/rx/trex_stateless_rx_port_mngr.cpp +++ b/src/stateless/rx/trex_stateless_rx_port_mngr.cpp @@ -44,18 +44,26 @@ void RXLatency::create(CRFC2544Info *rfc2544, CRxCoreErrCntrs *err_cntrs) { m_rfc2544 = rfc2544; m_err_cntrs = err_cntrs; + if ((CGlobalInfo::get_queues_mode() == CGlobalInfo::Q_MODE_ONE_QUEUE) + || (CGlobalInfo::get_queues_mode() == CGlobalInfo::Q_MODE_RSS)) { + m_rcv_all = true; + } else { + m_rcv_all = false; + } } void RXLatency::handle_pkt(const rte_mbuf_t *m) { - CFlowStatParser parser; + CFlowStatParserSW parser; + int ret = parser.parse(rte_pktmbuf_mtod(m, uint8_t *), m->pkt_len); - if (m_rcv_all || parser.parse(rte_pktmbuf_mtod(m, uint8_t *), m->pkt_len) == 0) { + if (m_rcv_all || (ret == 0)) { uint32_t ip_id; - if (m_rcv_all || (parser.get_ip_id(ip_id) == 0)) { + int ret2 = parser.get_ip_id(ip_id); + if (m_rcv_all || ( ret2 == 0)) { if (m_rcv_all || is_flow_stat_id(ip_id)) { uint16_t hw_id; - if (m_rcv_all || is_flow_stat_payload_id(ip_id)) { + if (is_flow_stat_payload_id(ip_id) || ((! is_flow_stat_id(ip_id)) && m_rcv_all)) { bool good_packet = true; uint8_t *p = rte_pktmbuf_mtod(m, uint8_t*); struct flow_stat_payload_header *fsp_head = (struct flow_stat_payload_header *) |