examples/ipsec-secgw: add stats interval argument
authorRadu Nicolau <radu.nicolau@intel.com>
Mon, 1 Nov 2021 12:58:09 +0000 (12:58 +0000)
committerAkhil Goyal <gakhil@marvell.com>
Thu, 4 Nov 2021 18:46:27 +0000 (19:46 +0100)
Add -t for stats screen update interval, disabled by default.

Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
doc/guides/sample_app_ug/ipsec_secgw.rst
examples/ipsec-secgw/ipsec-secgw.c
examples/ipsec-secgw/ipsec-secgw.h

index 639d309..0a198d8 100644 (file)
@@ -127,6 +127,7 @@ The application has a number of command line options::
                         -p PORTMASK -P -u PORTMASK -j FRAMESIZE
                         -l -w REPLAY_WINDOW_SIZE -e -a
                         -c SAD_CACHE_SIZE
+                        -t STATISTICS_INTERVAL
                         -s NUMBER_OF_MBUFS_IN_PACKET_POOL
                         -f CONFIG_FILE_PATH
                         --config (port,queue,lcore)[,(port,queue,lcore)]
@@ -176,6 +177,10 @@ Where:
     Zero value disables cache.
     Default value: 128.
 
+*   ``-t``: specifies the statistics screen update interval in seconds. If set
+    to zero or omitted statistics screen is disabled.
+    Default value: 0.
+
 *   ``-s``: sets number of mbufs in packet pool, if not provided number of mbufs
     will be calculated based on number of cores, eth ports and crypto queues.
 
index ea8e3bc..865f87e 100644 (file)
@@ -179,6 +179,7 @@ static uint32_t frag_tbl_sz;
 static uint32_t frame_buf_size = RTE_MBUF_DEFAULT_BUF_SIZE;
 static uint32_t mtu_size = RTE_ETHER_MTU;
 static uint64_t frag_ttl_ns = MAX_FRAG_TTL_NS;
+static uint32_t stats_interval;
 
 /* application wide librte_ipsec/SA parameters */
 struct app_sa_prm app_sa_prm = {
@@ -289,7 +290,6 @@ adjust_ipv6_pktlen(struct rte_mbuf *m, const struct rte_ipv6_hdr *iph,
        }
 }
 
-#if (STATS_INTERVAL > 0)
 
 struct ipsec_core_statistics core_statistics[RTE_MAX_LCORE];
 
@@ -351,9 +351,8 @@ print_stats_cb(__rte_unused void *param)
                   total_packets_dropped);
        printf("\n====================================================\n");
 
-       rte_eal_alarm_set(STATS_INTERVAL * US_PER_S, print_stats_cb, NULL);
+       rte_eal_alarm_set(stats_interval * US_PER_S, print_stats_cb, NULL);
 }
-#endif /* STATS_INTERVAL */
 
 static inline void
 prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t)
@@ -1400,6 +1399,7 @@ print_usage(const char *prgname)
                " [-e]"
                " [-a]"
                " [-c]"
+               " [-t STATS_INTERVAL]"
                " [-s NUMBER_OF_MBUFS_IN_PKT_POOL]"
                " -f CONFIG_FILE"
                " --config (port,queue,lcore)[,(port,queue,lcore)]"
@@ -1424,6 +1424,8 @@ print_usage(const char *prgname)
                "  -a enables SA SQN atomic behaviour\n"
                "  -c specifies inbound SAD cache size,\n"
                "     zero value disables the cache (default value: 128)\n"
+               "  -t specifies statistics screen update interval,\n"
+               "     zero disables statistics screen (default value: 0)\n"
                "  -s number of mbufs in packet pool, if not specified number\n"
                "     of mbufs will be calculated based on number of cores,\n"
                "     ports and crypto queues\n"
@@ -1633,7 +1635,7 @@ parse_args(int32_t argc, char **argv, struct eh_conf *eh_conf)
 
        argvopt = argv;
 
-       while ((opt = getopt_long(argc, argvopt, "aelp:Pu:f:j:w:c:s:",
+       while ((opt = getopt_long(argc, argvopt, "aelp:Pu:f:j:w:c:t:s:",
                                lgopts, &option_index)) != EOF) {
 
                switch (opt) {
@@ -1714,6 +1716,15 @@ parse_args(int32_t argc, char **argv, struct eh_conf *eh_conf)
                        }
                        app_sa_prm.cache_sz = ret;
                        break;
+               case 't':
+                       ret = parse_decimal(optarg);
+                       if (ret < 0) {
+                               printf("Invalid interval value: %s\n", optarg);
+                               print_usage(prgname);
+                               return -1;
+                       }
+                       stats_interval = ret;
+                       break;
                case CMD_LINE_OPT_CONFIG_NUM:
                        ret = parse_config(optarg);
                        if (ret) {
@@ -3009,11 +3020,11 @@ main(int32_t argc, char **argv)
 
        check_all_ports_link_status(enabled_port_mask);
 
-#if (STATS_INTERVAL > 0)
-       rte_eal_alarm_set(STATS_INTERVAL * US_PER_S, print_stats_cb, NULL);
-#else
-       RTE_LOG(INFO, IPSEC, "Stats display disabled\n");
-#endif /* STATS_INTERVAL */
+       if (stats_interval > 0)
+               rte_eal_alarm_set(stats_interval * US_PER_S,
+                               print_stats_cb, NULL);
+       else
+               RTE_LOG(INFO, IPSEC, "Stats display disabled\n");
 
        /* launch per-lcore init on every lcore */
        rte_eal_mp_remote_launch(ipsec_launch_one_lcore, eh_conf, CALL_MAIN);
index f9be303..a9a73d0 100644 (file)
@@ -6,9 +6,6 @@
 
 #include <stdbool.h>
 
-#ifndef STATS_INTERVAL
-#define STATS_INTERVAL 0
-#endif
 
 #define NB_SOCKETS 4
 
@@ -83,7 +80,6 @@ struct ethaddr_info {
        uint64_t src, dst;
 };
 
-#if (STATS_INTERVAL > 0)
 struct ipsec_core_statistics {
        uint64_t tx;
        uint64_t rx;
@@ -94,7 +90,6 @@ struct ipsec_core_statistics {
 } __rte_cache_aligned;
 
 extern struct ipsec_core_statistics core_statistics[RTE_MAX_LCORE];
-#endif /* STATS_INTERVAL */
 
 extern struct ethaddr_info ethaddr_tbl[RTE_MAX_ETHPORTS];
 
@@ -115,38 +110,26 @@ is_unprotected_port(uint16_t port_id)
 static inline void
 core_stats_update_rx(int n)
 {
-#if (STATS_INTERVAL > 0)
        int lcore_id = rte_lcore_id();
        core_statistics[lcore_id].rx += n;
        core_statistics[lcore_id].rx_call++;
        if (n == MAX_PKT_BURST)
                core_statistics[lcore_id].burst_rx += n;
-#else
-       RTE_SET_USED(n);
-#endif /* STATS_INTERVAL */
 }
 
 static inline void
 core_stats_update_tx(int n)
 {
-#if (STATS_INTERVAL > 0)
        int lcore_id = rte_lcore_id();
        core_statistics[lcore_id].tx += n;
        core_statistics[lcore_id].tx_call++;
-#else
-       RTE_SET_USED(n);
-#endif /* STATS_INTERVAL */
 }
 
 static inline void
 core_stats_update_drop(int n)
 {
-#if (STATS_INTERVAL > 0)
        int lcore_id = rte_lcore_id();
        core_statistics[lcore_id].dropped += n;
-#else
-       RTE_SET_USED(n);
-#endif /* STATS_INTERVAL */
 }
 
 /* helper routine to free bulk of packets */