From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 3570F56A3 for ; Fri, 14 Sep 2018 15:57:28 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Sep 2018 06:57:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,373,1531810800"; d="scan'208";a="70847912" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga008.fm.intel.com with ESMTP; 14 Sep 2018 06:57:26 -0700 Received: from wgcvswdev001.ir.intel.com (wgcvswdev001.ir.intel.com [10.102.246.100]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id w8EDvQUR009873; Fri, 14 Sep 2018 14:57:26 +0100 Received: from wgcvswdev001.ir.intel.com (localhost [127.0.0.1]) by wgcvswdev001.ir.intel.com with ESMTP id w8EDvEFC003346; Fri, 14 Sep 2018 14:57:14 +0100 Received: (from jmparthx@localhost) by wgcvswdev001.ir.intel.com with œ id w8EDvE46003325; Fri, 14 Sep 2018 14:57:14 +0100 From: Naga Suresh Somarowthu To: dev@dpdk.org Cc: ferruh.yigit@intel.com, reshma.pattan@intel.com, Naga Suresh Somarowthu Date: Fri, 14 Sep 2018 14:57:02 +0100 Message-Id: <1536933422-3103-1-git-send-email-naga.sureshx.somarowthu@intel.com> X-Mailer: git-send-email 1.7.12.2 Subject: [dpdk-dev] [PATCH] test: fix kni test to check kni module dependency X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Sep 2018 13:57:29 -0000 Check the prerequisites to run the test 1.checked whether the rte_kni module is loaded, if not fail testcase 2.checked whether the rte_kni module is loaded with loop back mode, if not skip packet forwarding testcase and log 3.Disabled the test in freebsd as test is not supported Fixes: 5233e5924a ("app/test: update kni") Signed-off-by: Naga Suresh Somarowthu --- test/test/test_kni.c | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/test/test/test_kni.c b/test/test/test_kni.c index 1b876719a..6c1420a16 100644 --- a/test/test/test_kni.c +++ b/test/test/test_kni.c @@ -7,10 +7,11 @@ #include #include #include +#include #include "test.h" -#ifndef RTE_LIBRTE_KNI +#if !defined(RTE_EXEC_ENV_LINUXAPP) || !defined(RTE_LIBRTE_KNI) static int test_kni(void) @@ -40,6 +41,8 @@ test_kni(void) #define IFCONFIG "/sbin/ifconfig " #define TEST_KNI_PORT "test_kni_port" +#define KNI_MODULE_PATH "/sys/module/rte_kni" +#define KNI_MODULE_PARAM_LO KNI_MODULE_PATH"/parameters/lo_mode" #define KNI_TEST_MAX_PORTS 4 /* The threshold number of mbufs to be transmitted or received. */ #define KNI_NUM_MBUF_THRESHOLD 100 @@ -462,7 +465,7 @@ static int test_kni(void) { int ret = -1; - uint16_t nb_ports, port_id; + uint16_t port_id; struct rte_kni *kni; struct rte_mempool *mp; struct rte_kni_conf conf; @@ -470,6 +473,20 @@ test_kni(void) struct rte_kni_ops ops; const struct rte_pci_device *pci_dev; const struct rte_bus *bus; + FILE *fd; + DIR *dir; + char buf[16]; + + dir = opendir(KNI_MODULE_PATH); + if (!dir) { + if (errno == ENOENT) { + printf("Cannot run UT due to missing rte_kni module\n"); + return -1; + } + printf("opendir: %s", strerror(errno)); + return -1; + } + closedir(dir); /* Initialize KNI subsytem */ rte_kni_init(KNI_TEST_MAX_PORTS); @@ -485,12 +502,6 @@ test_kni(void) return -1; } - nb_ports = rte_eth_dev_count_avail(); - if (nb_ports == 0) { - printf("no supported nic port found\n"); - return -1; - } - /* configuring port 0 for the test is enough */ port_id = 0; ret = rte_eth_dev_configure(port_id, 1, 1, &port_conf); @@ -519,9 +530,25 @@ test_kni(void) rte_eth_promiscuous_enable(port_id); /* basic test of kni processing */ - ret = test_kni_processing(port_id, mp); - if (ret < 0) - goto fail; + fd = fopen(KNI_MODULE_PARAM_LO, "r"); + if (fd == NULL) { + printf("fopen: %s", strerror(errno)); + return -1; + } + memset(&buf, 0, sizeof(buf)); + if (fgets(buf, sizeof(buf), fd)) { + if (!strncmp(buf, "lo_mode_fifo", strlen("lo_mode_fifo")) || + !strncmp(buf, "lo_mode_fifo_skb", + strlen("lo_mode_fifo_skb"))) { + ret = test_kni_processing(port_id, mp); + if (ret < 0) { + fclose(fd); + goto fail; + } + } else + printf("test_kni_processing skipped because of missing rte_kni module lo_mode argument\n"); + } + fclose(fd); /* test of allocating KNI with NULL mempool pointer */ memset(&info, 0, sizeof(info)); -- 2.13.6