Add support for latency task with multiple ports 47/68047/2
authorXavier Simonart <xavier.simonart@intel.com>
Fri, 14 Jun 2019 15:12:56 +0000 (17:12 +0200)
committerPatrice Buriez <patrice.buriez@intel.com>
Fri, 14 Jun 2019 18:41:50 +0000 (20:41 +0200)
Change-Id: Iaae603a7558666b5794ec4c76f447eb3260a1df9
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
VNFs/DPPD-PROX/cmd_parser.c
VNFs/DPPD-PROX/stats_latency.c

index c6d683f..7df6b16 100644 (file)
@@ -1764,6 +1764,19 @@ static int parse_cmd_lat_stats(const char *str, struct input *input)
                        else {
                                struct stats_latency *stats = stats_latency_find(lcore_id, task_id);
                                struct stats_latency *tot = stats_latency_tot_find(lcore_id, task_id);
+                               if (!stats || !tot) {
+                                       if (input->reply) {
+                                               char buf[128];
+                                               snprintf(buf, sizeof(buf),
+                                                        "error: core %u task %u stats = %p tot = %p\n",
+                                                        lcore_id, task_id, stats, tot);
+                                               input->reply(input, buf, strlen(buf));
+                                       } else {
+                                               plog_info("error: core %u task %u stats = %p tot = %p\n",
+                                                         lcore_id, task_id, stats, tot);
+                                       }
+                                       continue;
+                               }
 
                                uint64_t last_tsc = stats_core_task_last_tsc(lcore_id, task_id);
                                uint64_t lat_min_usec = time_unit_to_usec(&stats->min.time);
index 59d0058..7db53f2 100644 (file)
@@ -104,11 +104,11 @@ struct stats_latency *stats_latency_find(uint32_t lcore_id, uint32_t task_id)
 
 static int task_runs_observable_latency(struct task_args *targ)
 {
-       /* TODO: make this work with multiple ports and with
-          rings. Currently, only showing lat tasks which have 1 RX
-          port. */
+       /* Note that multiple ports or rings are only supported
+          if they all receive packets configured in the same way
+          e.g. same timestamp pos. */
        return !strcmp(targ->task_init->mode_str, "lat") &&
-               (targ->nb_rxports == 1 || targ->nb_rxrings == 1);
+               (targ->nb_rxports >= 1 || targ->nb_rxrings >= 1);
 }
 
 static struct stats_latency_manager *alloc_stats_latency_manager(void)