From a41e6ff15809d40e0f9bbc9576bf8f7f80fbec1d Mon Sep 17 00:00:00 2001 From: Ricardo Salveti Date: Mon, 18 Jul 2016 15:30:06 -0300 Subject: Imported Upstream version 16.07-rc2 Change-Id: Ie9e8ec528a2a0dace085c5e44aa7fa3b489d4ba0 Signed-off-by: Ricardo Salveti --- app/test-pmd/cmdline.c | 39 ------------------------------------ app/test-pmd/config.c | 17 ++++++---------- app/test-pmd/testpmd.c | 23 ++++++++++++++++++++- app/test/test_cryptodev.c | 45 +++++++++++++++++++++--------------------- app/test/test_cryptodev_perf.c | 18 ++++++++--------- app/test/test_hash.c | 42 +++++++++++++++++++++++++++++++++++++++ app/test/test_red.c | 42 +-------------------------------------- 7 files changed, 103 insertions(+), 123 deletions(-) (limited to 'app') diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index b6b61ad3..f90befc8 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -94,10 +94,6 @@ static struct cmdline *testpmd_cl; static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue); -#ifdef RTE_NIC_BYPASS -uint8_t bypass_is_supported(portid_t port_id); -#endif - /* *** Help command with introduction. *** */ struct cmd_help_brief_result { cmdline_fixed_string_t help; @@ -3656,9 +3652,6 @@ cmd_set_bypass_mode_parsed(void *parsed_result, portid_t port_id = res->port_id; uint32_t bypass_mode = RTE_BYPASS_MODE_NORMAL; - if (!bypass_is_supported(port_id)) - return; - if (!strcmp(res->value, "bypass")) bypass_mode = RTE_BYPASS_MODE_BYPASS; else if (!strcmp(res->value, "isolate")) @@ -3725,9 +3718,6 @@ cmd_set_bypass_event_parsed(void *parsed_result, uint32_t bypass_event = RTE_BYPASS_EVENT_NONE; uint32_t bypass_mode = RTE_BYPASS_MODE_NORMAL; - if (!bypass_is_supported(port_id)) - return; - if (!strcmp(res->event_value, "timeout")) bypass_event = RTE_BYPASS_EVENT_TIMEOUT; else if (!strcmp(res->event_value, "os_on")) @@ -3903,9 +3893,6 @@ cmd_show_bypass_config_parsed(void *parsed_result, "timeout"}; int num_events = (sizeof events) / (sizeof events[0]); - if (!bypass_is_supported(port_id)) - return; - /* Display the bypass mode.*/ if (0 != rte_eth_dev_bypass_state_show(port_id, &bypass_mode)) { printf("\tFailed to get bypass mode for port = %d\n", port_id); @@ -10800,29 +10787,3 @@ cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue) ports[id].need_reconfig_queues = queue; } } - -#ifdef RTE_NIC_BYPASS -#include -uint8_t -bypass_is_supported(portid_t port_id) -{ - struct rte_port *port; - struct rte_pci_id *pci_id; - - if (port_id_is_invalid(port_id, ENABLED_WARN)) - return 0; - - /* Get the device id. */ - port = &ports[port_id]; - pci_id = &port->dev_info.pci_dev->id; - - /* Check if NIC supports bypass. */ - if (pci_id->device_id == IXGBE_DEV_ID_82599_BYPASS) { - return 1; - } - else { - printf("\tBypass not supported for port_id = %d.\n", port_id); - return 0; - } -} -#endif diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index c5865f95..bfcbff9c 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1201,14 +1201,9 @@ simple_fwd_config_setup(void) } /** - * For the RSS forwarding test, each core is assigned on every port a transmit - * queue whose index is the index of the core itself. This approach limits the - * maximumm number of processing cores of the RSS test to the maximum number of - * TX queues supported by the devices. - * - * Each core is assigned a single stream, each stream being composed of - * a RX queue to poll on a RX port for input messages, associated with - * a TX queue of a TX port where to send forwarded packets. + * For the RSS forwarding test all streams distributed over lcores. Each stream + * being composed of a RX queue to poll on a RX port for input messages, + * associated with a TX queue of a TX port where to send forwarded packets. * All packets received on the RX queue of index "RxQj" of the RX port "RxPi" * are sent on the TX queue "TxQl" of the TX port "TxPk" according to the two * following rules: @@ -1222,7 +1217,7 @@ rss_fwd_config_setup(void) portid_t txp; queueid_t rxq; queueid_t nb_q; - lcoreid_t lc_id; + streamid_t sm_id; nb_q = nb_rxq; if (nb_q > nb_txq) @@ -1241,10 +1236,10 @@ rss_fwd_config_setup(void) setup_fwd_config_of_each_lcore(&cur_fwd_config); rxp = 0; rxq = 0; - for (lc_id = 0; lc_id < cur_fwd_config.nb_fwd_streams; lc_id++) { + for (sm_id = 0; sm_id < cur_fwd_config.nb_fwd_streams; sm_id++) { struct fwd_stream *fs; - fs = fwd_streams[lc_id]; + fs = fwd_streams[sm_id]; if ((rxp & 0x1) == 0) txp = (portid_t) (rxp + 1); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 06885ceb..b7f28e96 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -272,6 +272,9 @@ uint32_t bypass_timeout = RTE_BYPASS_TMT_OFF; #endif +/* default period is 1 second */ +static uint64_t timer_period = 1; + /* * Ethernet device configuration. */ @@ -877,17 +880,35 @@ flush_fwd_rx_queues(void) uint16_t nb_rx; uint16_t i; uint8_t j; + uint64_t prev_tsc = 0, diff_tsc, cur_tsc, timer_tsc = 0; + + /* convert to number of cycles */ + timer_period *= rte_get_timer_hz(); for (j = 0; j < 2; j++) { for (rxp = 0; rxp < cur_fwd_config.nb_fwd_ports; rxp++) { for (rxq = 0; rxq < nb_rxq; rxq++) { port_id = fwd_ports_ids[rxp]; + /** + * testpmd can stuck in the below do while loop + * if rte_eth_rx_burst() always returns nonzero + * packets. So timer is added to exit this loop + * after 1sec timer expiry. + */ + prev_tsc = rte_rdtsc(); do { nb_rx = rte_eth_rx_burst(port_id, rxq, pkts_burst, MAX_PKT_BURST); for (i = 0; i < nb_rx; i++) rte_pktmbuf_free(pkts_burst[i]); - } while (nb_rx > 0); + + cur_tsc = rte_rdtsc(); + diff_tsc = cur_tsc - prev_tsc; + timer_tsc += diff_tsc; + } while ((nb_rx > 0) && + (timer_tsc < timer_period)); + prev_tsc = cur_tsc; + timer_tsc = 0; } } rte_delay_ms(10); /* wait 10 milli-seconds before retrying */ diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index fbfe1d0d..33325a8b 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -186,12 +186,12 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { ret = rte_eal_vdev_init( - CRYPTODEV_NAME_AESNI_MB_PMD, NULL); + RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD), NULL); TEST_ASSERT(ret == 0, "Failed to create instance %u of" " pmd : %s", - i, CRYPTODEV_NAME_AESNI_MB_PMD); + i, RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)); } } } @@ -203,10 +203,10 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { TEST_ASSERT_SUCCESS(rte_eal_vdev_init( - CRYPTODEV_NAME_AESNI_GCM_PMD, NULL), + RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD), NULL), "Failed to create instance %u of" " pmd : %s", - i, CRYPTODEV_NAME_AESNI_GCM_PMD); + i, RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD)); } } } @@ -217,10 +217,10 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { TEST_ASSERT_SUCCESS(rte_eal_vdev_init( - CRYPTODEV_NAME_SNOW3G_PMD, NULL), + RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD), NULL), "Failed to create instance %u of" " pmd : %s", - i, CRYPTODEV_NAME_SNOW3G_PMD); + i, RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD)); } } } @@ -231,10 +231,10 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { TEST_ASSERT_SUCCESS(rte_eal_vdev_init( - CRYPTODEV_NAME_KASUMI_PMD, NULL), + RTE_STR(CRYPTODEV_NAME_KASUMI_PMD), NULL), "Failed to create instance %u of" " pmd : %s", - i, CRYPTODEV_NAME_KASUMI_PMD); + i, RTE_STR(CRYPTODEV_NAME_KASUMI_PMD)); } } } @@ -246,12 +246,12 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { int dev_id = rte_eal_vdev_init( - CRYPTODEV_NAME_NULL_PMD, NULL); + RTE_STR(CRYPTODEV_NAME_NULL_PMD), NULL); TEST_ASSERT(dev_id >= 0, "Failed to create instance %u of" " pmd : %s", - i, CRYPTODEV_NAME_NULL_PMD); + i, RTE_STR(CRYPTODEV_NAME_NULL_PMD)); } } } @@ -2295,7 +2295,7 @@ test_snow3g_encryption(const struct snow3g_test_data *tdata) plaintext_pad_len); memcpy(plaintext, tdata->plaintext.data, plaintext_len); - TEST_HEXDUMP(stdout, "plaintext:", plaintext, tdata->plaintext.len); + TEST_HEXDUMP(stdout, "plaintext:", plaintext, plaintext_len); /* Create SNOW3G operation */ retval = create_snow3g_kasumi_cipher_operation(tdata->iv.data, tdata->iv.len, @@ -2316,7 +2316,7 @@ test_snow3g_encryption(const struct snow3g_test_data *tdata) else ciphertext = plaintext; - TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, tdata->ciphertext.len); + TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len); /* Validate obuf */ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( @@ -2368,7 +2368,7 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata) rte_pktmbuf_append(ut_params->obuf, plaintext_pad_len); memcpy(plaintext, tdata->plaintext.data, plaintext_len); - TEST_HEXDUMP(stdout, "plaintext:", plaintext, tdata->plaintext.len); + TEST_HEXDUMP(stdout, "plaintext:", plaintext, plaintext_len); /* Create SNOW3G operation */ retval = create_snow3g_kasumi_cipher_operation_oop(tdata->iv.data, @@ -2390,7 +2390,7 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata) else ciphertext = plaintext; - TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, tdata->ciphertext.len); + TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len); /* Validate obuf */ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( @@ -2549,7 +2549,7 @@ static int test_snow3g_decryption(const struct snow3g_test_data *tdata) ciphertext_pad_len); memcpy(ciphertext, tdata->ciphertext.data, ciphertext_len); - TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, tdata->ciphertext.len); + TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, ciphertext_len); /* Create SNOW3G operation */ retval = create_snow3g_kasumi_cipher_operation(tdata->iv.data, tdata->iv.len, @@ -2569,7 +2569,7 @@ static int test_snow3g_decryption(const struct snow3g_test_data *tdata) else plaintext = ciphertext; - TEST_HEXDUMP(stdout, "plaintext:", plaintext, tdata->plaintext.len); + TEST_HEXDUMP(stdout, "plaintext:", plaintext, ciphertext_len); /* Validate obuf */ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(plaintext, @@ -2622,7 +2622,7 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata) rte_pktmbuf_append(ut_params->obuf, ciphertext_pad_len); memcpy(ciphertext, tdata->ciphertext.data, ciphertext_len); - TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, tdata->ciphertext.len); + TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, ciphertext_len); /* Create SNOW3G operation */ retval = create_snow3g_kasumi_cipher_operation_oop(tdata->iv.data, @@ -2643,7 +2643,7 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata) else plaintext = ciphertext; - TEST_HEXDUMP(stdout, "plaintext:", plaintext, tdata->plaintext.len); + TEST_HEXDUMP(stdout, "plaintext:", plaintext, ciphertext_len); /* Validate obuf */ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(plaintext, @@ -2689,7 +2689,7 @@ test_snow3g_authenticated_encryption(const struct snow3g_test_data *tdata) plaintext_pad_len); memcpy(plaintext, tdata->plaintext.data, plaintext_len); - TEST_HEXDUMP(stdout, "plaintext:", plaintext, tdata->plaintext.len); + TEST_HEXDUMP(stdout, "plaintext:", plaintext, plaintext_len); /* Create SNOW3G operation */ retval = create_snow3g_kasumi_cipher_hash_operation(tdata->digest.data, @@ -2717,7 +2717,7 @@ test_snow3g_authenticated_encryption(const struct snow3g_test_data *tdata) else ciphertext = plaintext; - TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, tdata->ciphertext.len); + TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len); /* Validate obuf */ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( @@ -2774,7 +2774,7 @@ test_snow3g_encrypted_authentication(const struct snow3g_test_data *tdata) plaintext_pad_len); memcpy(plaintext, tdata->plaintext.data, plaintext_len); - TEST_HEXDUMP(stdout, "plaintext:", plaintext, tdata->plaintext.len); + TEST_HEXDUMP(stdout, "plaintext:", plaintext, plaintext_len); /* Create SNOW3G operation */ retval = create_snow3g_kasumi_auth_cipher_operation( @@ -2805,7 +2805,7 @@ test_snow3g_encrypted_authentication(const struct snow3g_test_data *tdata) ut_params->digest = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *) + plaintext_pad_len + tdata->aad.len + tdata->iv.len; - TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, tdata->ciphertext.len); + TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len); /* Validate obuf */ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( @@ -3002,6 +3002,7 @@ create_gcm_session(uint8_t dev_id, enum rte_crypto_cipher_operation op, ut_params->cipher_xform.next = NULL; ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_GCM; + ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE; ut_params->cipher_xform.cipher.op = op; ut_params->cipher_xform.cipher.key.data = cipher_key; ut_params->cipher_xform.cipher.key.length = key_len; diff --git a/app/test/test_cryptodev_perf.c b/app/test/test_cryptodev_perf.c index d7282112..815c41ff 100644 --- a/app/test/test_cryptodev_perf.c +++ b/app/test/test_cryptodev_perf.c @@ -120,15 +120,15 @@ static const char *chain_mode_name(enum chain_mode mode) static const char *pmd_name(enum rte_cryptodev_type pmd) { switch (pmd) { - case RTE_CRYPTODEV_NULL_PMD: return CRYPTODEV_NAME_NULL_PMD; break; + case RTE_CRYPTODEV_NULL_PMD: return RTE_STR(CRYPTODEV_NAME_NULL_PMD); break; case RTE_CRYPTODEV_AESNI_GCM_PMD: - return CRYPTODEV_NAME_AESNI_GCM_PMD; + return RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD); case RTE_CRYPTODEV_AESNI_MB_PMD: - return CRYPTODEV_NAME_AESNI_MB_PMD; + return RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD); case RTE_CRYPTODEV_QAT_SYM_PMD: - return CRYPTODEV_NAME_QAT_SYM_PMD; + return RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD); case RTE_CRYPTODEV_SNOW3G_PMD: - return CRYPTODEV_NAME_SNOW3G_PMD; + return RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD); default: return ""; } @@ -249,11 +249,11 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { ret = rte_eal_vdev_init( - CRYPTODEV_NAME_AESNI_MB_PMD, NULL); + RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD), NULL); TEST_ASSERT(ret == 0, "Failed to create instance %u of pmd : %s", - i, CRYPTODEV_NAME_AESNI_MB_PMD); + i, RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)); } } } @@ -264,11 +264,11 @@ testsuite_setup(void) if (nb_devs < 2) { for (i = nb_devs; i < 2; i++) { ret = rte_eal_vdev_init( - CRYPTODEV_NAME_SNOW3G_PMD, NULL); + RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD), NULL); TEST_ASSERT(ret == 0, "Failed to create instance %u of pmd : %s", - i, CRYPTODEV_NAME_SNOW3G_PMD); + i, RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD)); } } } diff --git a/app/test/test_hash.c b/app/test/test_hash.c index 7e41725a..29abcd9e 100644 --- a/app/test/test_hash.c +++ b/app/test/test_hash.c @@ -420,6 +420,46 @@ static int test_add_update_delete(void) return 0; } +/* + * Sequence of operations for retrieving a key with its position + * + * - create table + * - add key + * - get the key with its position: hit + * - delete key + * - try to get the deleted key: miss + * + */ +static int test_hash_get_key_with_position(void) +{ + struct rte_hash *handle = NULL; + int pos, expectedPos, result; + void *key; + + ut_params.name = "hash_get_key_w_pos"; + handle = rte_hash_create(&ut_params); + RETURN_IF_ERROR(handle == NULL, "hash creation failed"); + + pos = rte_hash_add_key(handle, &keys[0]); + print_key_info("Add", &keys[0], pos); + RETURN_IF_ERROR(pos < 0, "failed to add key (pos0=%d)", pos); + expectedPos = pos; + + result = rte_hash_get_key_with_position(handle, pos, &key); + RETURN_IF_ERROR(result != 0, "error retrieving a key"); + + pos = rte_hash_del_key(handle, &keys[0]); + print_key_info("Del", &keys[0], pos); + RETURN_IF_ERROR(pos != expectedPos, + "failed to delete key (pos0=%d)", pos); + + result = rte_hash_get_key_with_position(handle, pos, &key); + RETURN_IF_ERROR(result != -ENOENT, "non valid key retrieved"); + + rte_hash_free(handle); + return 0; +} + /* * Sequence of operations for find existing hash table * @@ -1442,6 +1482,8 @@ test_hash(void) return -1; if (test_hash_add_delete_jhash_3word() < 0) return -1; + if (test_hash_get_key_with_position() < 0) + return -1; if (test_hash_find_existing() < 0) return -1; if (test_add_update_delete() < 0) diff --git a/app/test/test_red.c b/app/test/test_red.c index 2384c556..7d1c32c4 100644 --- a/app/test/test_red.c +++ b/app/test/test_red.c @@ -273,46 +273,6 @@ static int check_avg(double *diff, double avg, double exp_avg, double tolerance) return ret; } -/** - * get the clk frequency in Hz - */ -static uint64_t get_machclk_freq(void) -{ - uint64_t start = 0; - uint64_t end = 0; - uint64_t diff = 0; - static uint64_t clk_freq_hz; - struct timespec tv_start = {0, 0}, tv_end = {0, 0}; - struct timespec req = {0, 0}; - - if (clk_freq_hz != 0) - return clk_freq_hz; - - req.tv_sec = 0; - req.tv_nsec = NSEC_PER_SEC / 4; - - clock_gettime(CLOCK_REALTIME, &tv_start); - start = rte_rdtsc(); - - if (nanosleep(&req, NULL) != 0) { - perror("get_machclk_freq()"); - exit(EXIT_FAILURE); - } - - clock_gettime(CLOCK_REALTIME, &tv_end); - end = rte_rdtsc(); - - diff = (uint64_t)(tv_end.tv_sec - tv_start.tv_sec) * USEC_PER_SEC - + ((tv_end.tv_nsec - tv_start.tv_nsec + TEST_NSEC_MARGIN) / - USEC_PER_MSEC); /**< diff is in micro secs */ - - if (diff == 0) - return 0; - - clk_freq_hz = ((end - start) * USEC_PER_SEC / diff); - return clk_freq_hz; -} - /** * initialize the test rte_red config */ @@ -321,7 +281,7 @@ test_rte_red_init(struct test_config *tcfg) { unsigned i = 0; - tcfg->tvar->clk_freq = get_machclk_freq(); + tcfg->tvar->clk_freq = rte_get_timer_hz(); init_port_ts( tcfg->tvar->clk_freq ); for (i = 0; i < tcfg->tconfig->num_cfg; i++) { -- cgit 1.2.3-korg