build/pkg-config: improve static linking flags
[dpdk.git] / examples / qos_sched / stats.c
index e62e4a2..161f086 100644 (file)
@@ -24,7 +24,7 @@ qavg_q(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id, uint8_t tc,
 
        if (i == nb_pfc ||
                subport_id >= port_params.n_subports_per_port ||
-               pipe_id >= port_params.n_pipes_per_subport  ||
+               pipe_id >= subport_params[subport_id].n_pipes_per_subport_enabled  ||
                tc >= RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE ||
                q >= RTE_SCHED_BE_QUEUES_PER_PIPE ||
                (tc < RTE_SCHED_TRAFFIC_CLASS_BE && q > 0))
@@ -32,7 +32,7 @@ qavg_q(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id, uint8_t tc,
 
        port = qos_conf[i].sched_port;
        for (i = 0; i < subport_id; i++)
-               queue_id += port_params.n_pipes_per_subport *
+               queue_id += subport_params[i].n_pipes_per_subport_enabled *
                                RTE_SCHED_QUEUES_PER_PIPE;
        if (tc < RTE_SCHED_TRAFFIC_CLASS_BE)
                queue_id += pipe_id * RTE_SCHED_QUEUES_PER_PIPE + tc;
@@ -69,14 +69,16 @@ qavg_tcpipe(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id,
        }
 
        if (i == nb_pfc || subport_id >= port_params.n_subports_per_port ||
-               pipe_id >= port_params.n_pipes_per_subport ||
+               pipe_id >= subport_params[subport_id].n_pipes_per_subport_enabled ||
                tc >= RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE)
                return -1;
 
        port = qos_conf[i].sched_port;
 
        for (i = 0; i < subport_id; i++)
-               queue_id += port_params.n_pipes_per_subport * RTE_SCHED_QUEUES_PER_PIPE;
+               queue_id +=
+                       subport_params[i].n_pipes_per_subport_enabled *
+                       RTE_SCHED_QUEUES_PER_PIPE;
 
        queue_id += pipe_id * RTE_SCHED_QUEUES_PER_PIPE + tc;
 
@@ -123,13 +125,13 @@ qavg_pipe(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id)
 
        if (i == nb_pfc ||
                subport_id >= port_params.n_subports_per_port ||
-               pipe_id >= port_params.n_pipes_per_subport)
+               pipe_id >= subport_params[subport_id].n_pipes_per_subport_enabled)
                return -1;
 
        port = qos_conf[i].sched_port;
 
        for (i = 0; i < subport_id; i++)
-               queue_id += port_params.n_pipes_per_subport *
+               queue_id += subport_params[i].n_pipes_per_subport_enabled *
                                RTE_SCHED_QUEUES_PER_PIPE;
 
        queue_id += pipe_id * RTE_SCHED_QUEUES_PER_PIPE;
@@ -177,13 +179,17 @@ qavg_tcsubport(uint16_t port_id, uint32_t subport_id, uint8_t tc)
 
        for (i = 0; i < subport_id; i++)
                subport_queue_id +=
-                       port_params.n_pipes_per_subport * RTE_SCHED_QUEUES_PER_PIPE;
+                       subport_params[i].n_pipes_per_subport_enabled *
+                       RTE_SCHED_QUEUES_PER_PIPE;
 
        average = 0;
 
        for (count = 0; count < qavg_ntimes; count++) {
+               uint32_t n_pipes_per_subport =
+                       subport_params[subport_id].n_pipes_per_subport_enabled;
+
                part_average = 0;
-               for (i = 0; i < port_params.n_pipes_per_subport; i++) {
+               for (i = 0; i < n_pipes_per_subport; i++) {
                        if (tc < RTE_SCHED_TRAFFIC_CLASS_BE) {
                                queue_id = subport_queue_id +
                                        i * RTE_SCHED_QUEUES_PER_PIPE + tc;
@@ -203,10 +209,11 @@ qavg_tcsubport(uint16_t port_id, uint32_t subport_id, uint8_t tc)
                }
 
                if (tc < RTE_SCHED_TRAFFIC_CLASS_BE)
-                       average += part_average / (port_params.n_pipes_per_subport);
+                       average += part_average /
+                               (subport_params[subport_id].n_pipes_per_subport_enabled);
                else
-                       average +=
-                               part_average / (port_params.n_pipes_per_subport) *
+                       average += part_average /
+                               (subport_params[subport_id].n_pipes_per_subport_enabled) *
                                RTE_SCHED_BE_QUEUES_PER_PIPE;
 
                usleep(qavg_period);
@@ -240,14 +247,17 @@ qavg_subport(uint16_t port_id, uint32_t subport_id)
        port = qos_conf[i].sched_port;
 
        for (i = 0; i < subport_id; i++)
-               subport_queue_id += port_params.n_pipes_per_subport *
+               subport_queue_id += subport_params[i].n_pipes_per_subport_enabled *
                        RTE_SCHED_QUEUES_PER_PIPE;
 
        average = 0;
 
        for (count = 0; count < qavg_ntimes; count++) {
+               uint32_t n_pipes_per_subport =
+                       subport_params[subport_id].n_pipes_per_subport_enabled;
+
                part_average = 0;
-               for (i = 0; i < port_params.n_pipes_per_subport; i++) {
+               for (i = 0; i < n_pipes_per_subport; i++) {
                        queue_id = subport_queue_id + i * RTE_SCHED_QUEUES_PER_PIPE;
 
                        for (j = 0; j < RTE_SCHED_QUEUES_PER_PIPE; j++) {
@@ -258,7 +268,8 @@ qavg_subport(uint16_t port_id, uint32_t subport_id)
                }
 
                average += part_average /
-                       (port_params.n_pipes_per_subport * RTE_SCHED_QUEUES_PER_PIPE);
+                       (subport_params[subport_id].n_pipes_per_subport_enabled *
+                       RTE_SCHED_QUEUES_PER_PIPE);
                usleep(qavg_period);
        }
 
@@ -296,7 +307,7 @@ subport_stat(uint16_t port_id, uint32_t subport_id)
        printf("+----+-------------+-------------+-------------+-------------+-------------+\n");
 
        for (i = 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++) {
-               printf("|  %d | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " |\n",
+               printf("|  %d | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu32 " |\n",
                        i, stats.n_pkts_tc[i], stats.n_pkts_tc_dropped[i],
                stats.n_bytes_tc[i], stats.n_bytes_tc_dropped[i], tc_ov[i]);
                printf("+----+-------------+-------------+-------------+-------------+-------------+\n");
@@ -322,12 +333,13 @@ pipe_stat(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id)
 
        if (i == nb_pfc ||
                subport_id >= port_params.n_subports_per_port ||
-               pipe_id >= port_params.n_pipes_per_subport)
+               pipe_id >= subport_params[subport_id].n_pipes_per_subport_enabled)
                return -1;
 
        port = qos_conf[i].sched_port;
        for (i = 0; i < subport_id; i++)
-               queue_id += port_params.n_pipes_per_subport * RTE_SCHED_QUEUES_PER_PIPE;
+               queue_id += subport_params[i].n_pipes_per_subport_enabled *
+                       RTE_SCHED_QUEUES_PER_PIPE;
 
        queue_id += pipe_id * RTE_SCHED_QUEUES_PER_PIPE;
 
@@ -339,7 +351,7 @@ pipe_stat(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id)
        for (i = 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++) {
                if (i < RTE_SCHED_TRAFFIC_CLASS_BE) {
                        rte_sched_queue_read_stats(port, queue_id + i, &stats, &qlen);
-                       printf("|  %d |   %d   | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " | %11i |\n",
+                       printf("|  %d |   %d   | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu64 " | %11i |\n",
                                i, 0, stats.n_pkts, stats.n_pkts_dropped, stats.n_bytes,
                                stats.n_bytes_dropped, qlen);
                        printf("+----+-------+-------------+-------------+-------------+-------------+-------------+\n");
@@ -347,7 +359,7 @@ pipe_stat(uint16_t port_id, uint32_t subport_id, uint32_t pipe_id)
                        for (j = 0; j < RTE_SCHED_BE_QUEUES_PER_PIPE; j++) {
                                rte_sched_queue_read_stats(port, queue_id + i + j,
                                        &stats, &qlen);
-                               printf("|  %d |   %d   | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " | %11" PRIu32 " | %11i |\n",
+                               printf("|  %d |   %d   | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu64 " | %11" PRIu64 " | %11i |\n",
                                        i, j, stats.n_pkts, stats.n_pkts_dropped, stats.n_bytes,
                                        stats.n_bytes_dropped, qlen);
                                printf("+----+-------+-------------+-------------+-------------+-------------+-------------+\n");