From patchwork Tue Jun 29 20:50:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Zhou X-Patchwork-Id: 95015 X-Patchwork-Delegate: andrew.rybchenko@oktetlabs.ru Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1BAFDA0A0C; Tue, 29 Jun 2021 22:51:11 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 861B941238; Tue, 29 Jun 2021 22:50:37 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 8604F411E2; Tue, 29 Jun 2021 22:50:27 +0200 (CEST) Received: from linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net (linux.microsoft.com [13.77.154.182]) by linux.microsoft.com (Postfix) with ESMTPSA id 932D520B83F6; Tue, 29 Jun 2021 13:50:26 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 932D520B83F6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1624999826; bh=P1WDzfEVaMILpkPseP1SFsNYUA41akum/yJBeQJ4VUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R1ZCr0B7p0JvSJY6Vc7+73Yx0vlcbJs6I1iI60pspdfEgOaW7eKzN/CCgkG7ijokO NxJh4i3BgnR4zAk5gxYhFZ1iFerAIL5UgPFBAOUJoY7a2xSFBAc+p5stSTJcgaNrqR 28dz76/lmWZvysH3C3JR0pHQm14YSLTdmI6aRRJk= From: Jie Zhou To: dev@dpdk.org Cc: dmitry.kozliuk@gmail.com, xiaoyun.li@intel.com, roretzla@microsoft.com, talshn@nvidia.com, pallavi.kadam@intel.com, andrew.rybchenko@oktetlabs.ru, thomas@monjalon.net, bruce.richardson@intel.com, ferruh.yigit@intel.com, konstantin.ananyev@intel.com, stable@dpdk.org Date: Tue, 29 Jun 2021 13:50:20 -0700 Message-Id: <1624999822-16149-8-git-send-email-jizh@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1624999822-16149-1-git-send-email-jizh@linux.microsoft.com> References: <1624998226-12220-1-git-send-email-jizh@linux.microsoft.com> <1624999822-16149-1-git-send-email-jizh@linux.microsoft.com> Subject: [dpdk-dev] [PATCH v16 7/9] app/testpmd: replace POSIX specific code X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" - Make printf format OS independent - Replace htons with RTE_BE16 - Replace POSIX specific inet_aton with OS independent inet_pton - Replace sleep with rte_delay_us_sleep - Repalce random with rte_rand - #ifndef mman related code for now - Fix header inclusion - Include rte_os_shim.h in testpmd.h - Remove redundant headers Signed-off-by: Jie Zhou Acked-by: Tal Shnaiderman Acked-by: Dmitry Kozlyuk --- app/test-pmd/cmdline.c | 6 +----- app/test-pmd/cmdline_flow.c | 2 -- app/test-pmd/csumonly.c | 2 +- app/test-pmd/icmpecho.c | 4 ++-- app/test-pmd/ieee1588fwd.c | 8 ++++---- app/test-pmd/parameters.c | 11 +++++++---- app/test-pmd/testpmd.c | 21 ++++++++++++++++++++- app/test-pmd/testpmd.h | 3 ++- 8 files changed, 37 insertions(+), 20 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index dff5a75ec5..bfd2fb9240 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -8,12 +8,8 @@ #include #include #include -#include #include #include -#include -#include - #include #include @@ -3614,7 +3610,7 @@ cmdline_parse_inst_t cmd_stop = { /* *** SET CORELIST and PORTLIST CONFIGURATION *** */ unsigned int -parse_item_list(char* str, const char* item_name, unsigned int max_items, +parse_item_list(const char *str, const char *item_name, unsigned int max_items, unsigned int *parsed_items, int check_unique_values) { unsigned int nb_item; diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 61882d5cbc..0168ff7dac 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -10,8 +10,6 @@ #include #include #include -#include -#include #include #include diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index 6b4df335fe..089936587b 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -696,7 +696,7 @@ pkt_copy_split(const struct rte_mbuf *pkt) mp = current_fwd_lcore()->mbp; if (tx_pkt_split == TX_PKT_SPLIT_RND) - nb_seg = random() % tx_pkt_nb_segs + 1; + nb_seg = rte_rand() % tx_pkt_nb_segs + 1; else nb_seg = tx_pkt_nb_segs; diff --git a/app/test-pmd/icmpecho.c b/app/test-pmd/icmpecho.c index af6f7e7902..8948f28eb5 100644 --- a/app/test-pmd/icmpecho.c +++ b/app/test-pmd/icmpecho.c @@ -474,8 +474,8 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs) } icmp_h->icmp_type = RTE_IP_ICMP_ECHO_REPLY; cksum = ~icmp_h->icmp_cksum & 0xffff; - cksum += ~htons(RTE_IP_ICMP_ECHO_REQUEST << 8) & 0xffff; - cksum += htons(RTE_IP_ICMP_ECHO_REPLY << 8); + cksum += ~RTE_BE16(RTE_IP_ICMP_ECHO_REQUEST << 8) & 0xffff; + cksum += RTE_BE16(RTE_IP_ICMP_ECHO_REPLY << 8); cksum = (cksum & 0xffff) + (cksum >> 16); cksum = (cksum & 0xffff) + (cksum >> 16); icmp_h->icmp_cksum = ~cksum; diff --git a/app/test-pmd/ieee1588fwd.c b/app/test-pmd/ieee1588fwd.c index e3b98e3e0c..034f238c34 100644 --- a/app/test-pmd/ieee1588fwd.c +++ b/app/test-pmd/ieee1588fwd.c @@ -60,8 +60,8 @@ port_ieee1588_rx_timestamp_check(portid_t pi, uint32_t index) printf("Port %u RX timestamp registers not valid\n", pi); return; } - printf("Port %u RX timestamp value %lu s %lu ns\n", - pi, timestamp.tv_sec, timestamp.tv_nsec); + printf("Port %u RX timestamp value %ju s %lu ns\n", + pi, (uintmax_t)timestamp.tv_sec, timestamp.tv_nsec); } #define MAX_TX_TMST_WAIT_MICROSECS 1000 /**< 1 milli-second */ @@ -83,9 +83,9 @@ port_ieee1588_tx_timestamp_check(portid_t pi) pi, MAX_TX_TMST_WAIT_MICROSECS); return; } - printf("Port %u TX timestamp value %lu s %lu ns validated after " + printf("Port %u TX timestamp value %ju s %lu ns validated after " "%u micro-second%s\n", - pi, timestamp.tv_sec, timestamp.tv_nsec, wait_us, + pi, (uintmax_t)timestamp.tv_sec, timestamp.tv_nsec, wait_us, (wait_us == 1) ? "" : "s"); } diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index f3954c1c63..5e69d2aa8c 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include @@ -185,8 +184,10 @@ usage(char* progname) printf(" --hot-plug: enable hot plug for device.\n"); printf(" --vxlan-gpe-port=N: UPD port of tunnel VXLAN-GPE\n"); printf(" --geneve-parsed-port=N: UPD port to parse GENEVE tunnel protocol\n"); +#ifndef RTE_EXEC_ENV_WINDOWS printf(" --mlockall: lock all memory\n"); printf(" --no-mlockall: do not lock all memory\n"); +#endif printf(" --mp-alloc : mempool allocation method.\n" " native: use regular DPDK memory to create and populate mempool\n" " anon: use regular DPDK memory to create and anonymous memory to populate mempool\n" @@ -211,7 +212,7 @@ usage(char* progname) #ifdef RTE_LIB_CMDLINE static int -init_peer_eth_addrs(char *config_filename) +init_peer_eth_addrs(const char *config_filename) { FILE *config_file; portid_t i; @@ -610,8 +611,10 @@ launch_args_parse(int argc, char** argv) { "hot-plug", 0, 0, 0 }, { "vxlan-gpe-port", 1, 0, 0 }, { "geneve-parsed-port", 1, 0, 0 }, +#ifndef RTE_EXEC_ENV_WINDOWS { "mlockall", 0, 0, 0 }, { "no-mlockall", 0, 0, 0 }, +#endif { "mp-alloc", 1, 0, 0 }, { "tx-ip", 1, 0, 0 }, { "tx-udp", 1, 0, 0 }, @@ -723,13 +726,13 @@ launch_args_parse(int argc, char** argv) "Invalid tx-ip: %s", optarg); *end++ = 0; - if (inet_aton(optarg, &in) == 0) + if (inet_pton(AF_INET, optarg, &in) == 0) rte_exit(EXIT_FAILURE, "Invalid source IP address: %s\n", optarg); tx_ip_src_addr = rte_be_to_cpu_32(in.s_addr); - if (inet_aton(end, &in) == 0) + if (inet_pton(AF_INET, end, &in) == 0) rte_exit(EXIT_FAILURE, "Invalid destination IP address: %s\n", optarg); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 8ed1b97dec..1cdd3cdd12 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -9,7 +9,9 @@ #include #include #include +#ifndef RTE_EXEC_ENV_WINDOWS #include +#endif #include #include #include @@ -60,6 +62,9 @@ #ifdef RTE_LIB_LATENCYSTATS #include #endif +#ifdef RTE_EXEC_ENV_WINDOWS +#include +#endif #include "testpmd.h" @@ -629,6 +634,7 @@ set_def_fwd_config(void) set_default_fwd_ports_config(); } +#ifndef RTE_EXEC_ENV_WINDOWS /* extremely pessimistic estimation of memory required to create a mempool */ static int calc_mem_size(uint32_t nb_mbufs, uint32_t mbuf_sz, size_t pgsz, size_t *out) @@ -899,6 +905,7 @@ dma_map_cb(struct rte_mempool *mp __rte_unused, void *opaque __rte_unused, } } } +#endif static unsigned int setup_extbuf(uint32_t nb_mbufs, uint16_t mbuf_sz, unsigned int socket_id, @@ -969,9 +976,11 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf, { char pool_name[RTE_MEMPOOL_NAMESIZE]; struct rte_mempool *rte_mp = NULL; +#ifndef RTE_EXEC_ENV_WINDOWS uint32_t mb_size; mb_size = sizeof(struct rte_mbuf) + mbuf_seg_size; +#endif mbuf_poolname_build(socket_id, pool_name, sizeof(pool_name), size_idx); TESTPMD_LOG(INFO, @@ -988,6 +997,7 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf, mb_mempool_cache, 0, mbuf_seg_size, socket_id); break; } +#ifndef RTE_EXEC_ENV_WINDOWS case MP_ALLOC_ANON: { rte_mp = rte_mempool_create_empty(pool_name, nb_mbuf, @@ -1028,6 +1038,7 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf, heap_socket); break; } +#endif case MP_ALLOC_XBUF: { struct rte_pktmbuf_extmem *ext_mem; @@ -1054,7 +1065,9 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf, } } +#ifndef RTE_EXEC_ENV_WINDOWS err: +#endif if (rte_mp == NULL) { rte_exit(EXIT_FAILURE, "Creation of mbuf pool for socket %u failed: %s\n", @@ -3021,6 +3034,7 @@ pmd_test_exit(void) if (test_done == 0) stop_packet_forwarding(); +#ifndef RTE_EXEC_ENV_WINDOWS for (i = 0 ; i < RTE_DIM(mempools) ; i++) { if (mempools[i]) { if (mp_alloc_type == MP_ALLOC_ANON) @@ -3028,6 +3042,7 @@ pmd_test_exit(void) NULL); } } +#endif if (ports != NULL) { no_link_check = 1; RTE_ETH_FOREACH_DEV(pt_id) { @@ -3728,8 +3743,10 @@ signal_handler(int signum) /* Set flag to indicate the force termination. */ f_quit = 1; /* exit with the expected status */ +#ifndef RTE_EXEC_ENV_WINDOWS signal(signum, SIG_DFL); kill(getpid(), signum); +#endif } } @@ -3804,10 +3821,12 @@ main(int argc, char** argv) if (argc > 1) launch_args_parse(argc, argv); +#ifndef RTE_EXEC_ENV_WINDOWS if (do_mlockall && mlockall(MCL_CURRENT | MCL_FUTURE)) { TESTPMD_LOG(NOTICE, "mlockall() failed with error \"%s\"\n", strerror(errno)); } +#endif if (tx_first && interactive) rte_exit(EXIT_FAILURE, "--tx-first cannot be used on " @@ -3928,7 +3947,7 @@ main(int argc, char** argv) } /* Sleep to avoid unnecessary checks */ prev_time = cur_time; - sleep(1); + rte_delay_us_sleep(US_PER_S); } } diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 9ae4d90dd1..d61a055bdd 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -762,7 +763,7 @@ inc_tx_burst_stats(struct fwd_stream *fs, uint16_t nb_tx) } /* Prototypes */ -unsigned int parse_item_list(char* str, const char* item_name, +unsigned int parse_item_list(const char *str, const char *item_name, unsigned int max_items, unsigned int *parsed_items, int check_unique_values); void launch_args_parse(int argc, char** argv);