summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsongyanchao <[email protected]>2024-05-15 08:55:31 +0000
committersongyanchao <[email protected]>2024-05-15 08:55:31 +0000
commit64ad4ff87c581a0b91d56fb4a69d52996c7a0e72 (patch)
treeb5b38dd32971304f7a2fda75945cd1c10577508d
parent1ffe9799a4657c913b69b8e8f0eaa15d49d9f7ba (diff)
🎈 perf: Adapt to dp trace changes.v4.8.9-20240515
Adapt to dp trace changes.
-rw-r--r--service/include/sc_trace.h10
-rw-r--r--service/src/node_classifier.c14
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 */