diff options
| author | songyanchao <[email protected]> | 2024-05-15 08:55:31 +0000 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2024-05-15 08:55:31 +0000 |
| commit | 64ad4ff87c581a0b91d56fb4a69d52996c7a0e72 (patch) | |
| tree | b5b38dd32971304f7a2fda75945cd1c10577508d /service | |
| parent | 1ffe9799a4657c913b69b8e8f0eaa15d49d9f7ba (diff) | |
🎈 perf: Adapt to dp trace changes.v4.8.9-20240515
Adapt to dp trace changes.
Diffstat (limited to 'service')
| -rw-r--r-- | service/include/sc_trace.h | 10 | ||||
| -rw-r--r-- | service/src/node_classifier.c | 14 |
2 files changed, 18 insertions, 6 deletions
diff --git a/service/include/sc_trace.h b/service/include/sc_trace.h index c3d3f2d..9fd7233 100644 --- a/service/include/sc_trace.h +++ b/service/include/sc_trace.h @@ -138,7 +138,15 @@ static inline void gen_store_telemetry_info_rx(struct rte_node * node, struct rt { /* Populate the next node information */ char str_record[MR_STRING_MAX]; - snprintf(str_record, sizeof(str_record), "interface(rx) = %s, qid = %u", dev_desc->symbol, queue_id); + + if (dev_desc == NULL) + { + snprintf(str_record, sizeof(str_record), "interface(rx) = NULL, qid = %u", queue_id); + } + else + { + snprintf(str_record, sizeof(str_record), "interface(rx) = %s, qid = %u", dev_desc->symbol, queue_id); + } /* Emit the trace record */ struct dp_trace_record_meta meta = {.measurement_type = DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, diff --git a/service/src/node_classifier.c b/service/src/node_classifier.c index 374dcae..c7c54a7 100644 --- a/service/src/node_classifier.c +++ b/service/src/node_classifier.c @@ -415,8 +415,10 @@ static __rte_always_inline uint16_t classifier_node_process(struct rte_graph * g unsigned int n_left_from = cnt; uint32_t lcore_id = rte_lcore_id(); + struct sc_main * sc = sc_main_get(); struct classifier_stats stats = {}; struct rte_mbuf ** mbufs = (struct rte_mbuf **)objs; + while (n_left_from >= FWDSTEP) { enum cls_excpt_reason excpt_reason = CLS_EXCPT_REASON_MAX; @@ -428,7 +430,7 @@ static __rte_always_inline uint16_t classifier_node_process(struct rte_graph * g for (uint8_t pkt_idx = 0; pkt_idx < FWDSTEP; pkt_idx++) { mrb_metadata[pkt_idx] = mrbuf_cz_data(pending_mbufs[pkt_idx], MR_NODE_CTRLZONE_ID); - dp_trace_filter_exec(sc_main_get()->trace, pending_mbufs[pkt_idx], 0, lcore_id); + dp_trace_filter_exec(sc->trace, pending_mbufs[pkt_idx], 0, lcore_id); } uint16_t domain_field_for_pkts[FWDSTEP]; @@ -517,8 +519,9 @@ static __rte_always_inline uint16_t classifier_node_process(struct rte_graph * g if (unlikely(dp_trace_record_can_emit(pending_mbufs[pkt_idx], DP_TRACE_MEASUREMENT_TYPE_TELEMETRY))) { - gen_store_trace_info(node, pending_mbufs[pkt_idx], CLASSIFIER_NEXT_FORWARDER, &stats, &results[pkt_idx], - ignore_icmp_pkts[pkt_idx], excpt_reason, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY); + struct mr_dev_desc * dev_desc = NULL; + dev_desc = mr_dev_desc_lookup_by_port_id(sc->devmgr_main, mrb_metadata[pkt_idx]->port_ingress); + gen_store_telemetry_info_rx(node, pending_mbufs[pkt_idx], dev_desc, graph->id); } /* Check if tracing is enabled for the current Mbuf */ @@ -610,8 +613,9 @@ static __rte_always_inline uint16_t classifier_node_process(struct rte_graph * g if (unlikely(dp_trace_record_can_emit(mbuf0, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY))) { - gen_store_trace_info(node, mbuf0, CLASSIFIER_NEXT_FORWARDER, &stats, &result, ignore_icmp_pkt, excpt_reason, - DP_TRACE_MEASUREMENT_TYPE_TELEMETRY); + struct mr_dev_desc * dev_desc = NULL; + dev_desc = mr_dev_desc_lookup_by_port_id(sc->devmgr_main, mrb_metadata->port_ingress); + gen_store_telemetry_info_rx(node, mbuf0, dev_desc, graph->id); } /* Check if tracing is enabled for the current Mbuf */ |
