> On 11/3/2021 9:23 AM, Akhil Goyal wrote:
> >> -#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;
> >>
> >> struct ipsec_core_statistics core_statistics[RTE_MAX_LCORE];
> >> -#endif /* STATS_INTERVAL */
> > Did you check compilation with this patchset? Even CI is reporting
> compilation issues.
> > core_statistics need to be declared in .c file.
>
> Hi Akhil, I did check on my local dev system and it passed, but I can
> see the problem.
>
> But the issue was not introduced by this patchset, it was only made
> apparent by removing the #ifdef. It was introduced by this patch:
>
Yes the issue was not visible as it was compiled off, but since your patch
Removed ifdefs, the compilation will be broken. Not sure how it passed your
Dev environment.
> commit 1329602b6c8f20949ebaefb7aa55f7dca6d1b4f4
> Author: Anoob Joseph <anoobj@marvell.com>
> Date: Wed May 13 23:15:19 2020 +0530
>
> examples/ipsec-secgw: add per-core packet statistics
>
> I will send a fix shortly.
@@ -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.
@@ -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)
/* Print out statistics on packet distribution */
static void
@@ -349,9 +349,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)
@@ -1394,6 +1393,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)]"
@@ -1418,6 +1418,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"
@@ -1627,7 +1629,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) {
@@ -1708,6 +1710,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) {
@@ -3003,11 +3014,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);
@@ -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;
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 */