numam-dpdk/app/test/test_ethdev_link.c
Ferruh Yigit 295968d174 ethdev: add namespace
Add 'RTE_ETH' namespace to all enums & macros in a backward compatible
way. The macros for backward compatibility can be removed in next LTS.
Also updated some struct names to have 'rte_eth' prefix.

All internal components switched to using new names.

Syntax fixed on lines that this patch touches.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Wisam Jaddo <wisamm@nvidia.com>
Acked-by: Rosen Xu <rosen.xu@intel.com>
Acked-by: Chenbo Xia <chenbo.xia@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Somnath Kotur <somnath.kotur@broadcom.com>
2021-10-22 18:15:38 +02:00

170 lines
5.2 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
*/
#include <rte_log.h>
#include <rte_ethdev.h>
#include <rte_test.h>
#include "test.h"
static int32_t
test_link_status_up_default(void)
{
int ret = 0;
struct rte_eth_link link_status = {
.link_speed = RTE_ETH_SPEED_NUM_2_5G,
.link_status = RTE_ETH_LINK_UP,
.link_autoneg = RTE_ETH_LINK_AUTONEG,
.link_duplex = RTE_ETH_LINK_FULL_DUPLEX
};
char text[RTE_ETH_LINK_MAX_STR_LEN];
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
printf("Default link up #1: %s\n", text);
TEST_ASSERT_BUFFERS_ARE_EQUAL("Link up at 2.5 Gbps FDX Autoneg",
text, strlen(text), "Invalid default link status string");
link_status.link_duplex = RTE_ETH_LINK_HALF_DUPLEX;
link_status.link_autoneg = RTE_ETH_LINK_FIXED;
link_status.link_speed = RTE_ETH_SPEED_NUM_10M;
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
printf("Default link up #2: %s\n", text);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
TEST_ASSERT_BUFFERS_ARE_EQUAL("Link up at 10 Mbps HDX Fixed",
text, strlen(text), "Invalid default link status "
"string with HDX");
link_status.link_speed = RTE_ETH_SPEED_NUM_UNKNOWN;
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
printf("Default link up #3: %s\n", text);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
TEST_ASSERT_BUFFERS_ARE_EQUAL("Link up at Unknown HDX Fixed",
text, strlen(text), "Invalid default link status "
"string with HDX");
link_status.link_speed = RTE_ETH_SPEED_NUM_NONE;
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
printf("Default link up #3: %s\n", text);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
TEST_ASSERT_BUFFERS_ARE_EQUAL("Link up at None HDX Fixed",
text, strlen(text), "Invalid default link status "
"string with HDX");
/* test max str len */
link_status.link_speed = RTE_ETH_SPEED_NUM_200G;
link_status.link_duplex = RTE_ETH_LINK_HALF_DUPLEX;
link_status.link_autoneg = RTE_ETH_LINK_AUTONEG;
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
printf("Default link up #4:len = %d, %s\n", ret, text);
RTE_TEST_ASSERT(ret < RTE_ETH_LINK_MAX_STR_LEN,
"String length exceeds max allowed value\n");
return TEST_SUCCESS;
}
static int32_t
test_link_status_down_default(void)
{
int ret = 0;
struct rte_eth_link link_status = {
.link_speed = RTE_ETH_SPEED_NUM_2_5G,
.link_status = RTE_ETH_LINK_DOWN,
.link_autoneg = RTE_ETH_LINK_AUTONEG,
.link_duplex = RTE_ETH_LINK_FULL_DUPLEX
};
char text[RTE_ETH_LINK_MAX_STR_LEN];
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
TEST_ASSERT_BUFFERS_ARE_EQUAL("Link down",
text, strlen(text), "Invalid default link status string");
return TEST_SUCCESS;
}
static int32_t
test_link_status_invalid(void)
{
int ret = 0;
struct rte_eth_link link_status = {
.link_speed = 55555,
.link_status = RTE_ETH_LINK_UP,
.link_autoneg = RTE_ETH_LINK_AUTONEG,
.link_duplex = RTE_ETH_LINK_FULL_DUPLEX
};
char text[RTE_ETH_LINK_MAX_STR_LEN];
ret = rte_eth_link_to_str(text, sizeof(text), &link_status);
RTE_TEST_ASSERT(ret < RTE_ETH_LINK_MAX_STR_LEN,
"Failed to format invalid string\n");
printf("invalid link up #1: len=%d %s\n", ret, text);
TEST_ASSERT_BUFFERS_ARE_EQUAL("Link up at Invalid FDX Autoneg",
text, strlen(text), "Incorrect invalid link status string");
return TEST_SUCCESS;
}
static int32_t
test_link_speed_all_values(void)
{
const char *speed;
uint32_t i;
struct link_speed_t {
const char *value;
uint32_t link_speed;
} speed_str_map[] = {
{ "None", RTE_ETH_SPEED_NUM_NONE },
{ "10 Mbps", RTE_ETH_SPEED_NUM_10M },
{ "100 Mbps", RTE_ETH_SPEED_NUM_100M },
{ "1 Gbps", RTE_ETH_SPEED_NUM_1G },
{ "2.5 Gbps", RTE_ETH_SPEED_NUM_2_5G },
{ "5 Gbps", RTE_ETH_SPEED_NUM_5G },
{ "10 Gbps", RTE_ETH_SPEED_NUM_10G },
{ "20 Gbps", RTE_ETH_SPEED_NUM_20G },
{ "25 Gbps", RTE_ETH_SPEED_NUM_25G },
{ "40 Gbps", RTE_ETH_SPEED_NUM_40G },
{ "50 Gbps", RTE_ETH_SPEED_NUM_50G },
{ "56 Gbps", RTE_ETH_SPEED_NUM_56G },
{ "100 Gbps", RTE_ETH_SPEED_NUM_100G },
{ "200 Gbps", RTE_ETH_SPEED_NUM_200G },
{ "Unknown", RTE_ETH_SPEED_NUM_UNKNOWN },
{ "Invalid", 50505 }
};
for (i = 0; i < sizeof(speed_str_map) / sizeof(struct link_speed_t);
i++) {
speed = rte_eth_link_speed_to_str(speed_str_map[i].link_speed);
TEST_ASSERT_BUFFERS_ARE_EQUAL(speed_str_map[i].value,
speed, strlen(speed_str_map[i].value),
"Invalid link speed string");
}
return TEST_SUCCESS;
}
static struct unit_test_suite link_status_testsuite = {
.suite_name = "link status formatting",
.setup = NULL,
.teardown = NULL,
.unit_test_cases = {
TEST_CASE(test_link_status_up_default),
TEST_CASE(test_link_status_down_default),
TEST_CASE(test_link_speed_all_values),
TEST_CASE(test_link_status_invalid),
TEST_CASES_END() /**< NULL terminate unit test array */
}
};
static int
test_link_status(void)
{
rte_log_set_global_level(RTE_LOG_DEBUG);
rte_log_set_level(RTE_LOGTYPE_EAL, RTE_LOG_DEBUG);
return unit_test_suite_runner(&link_status_testsuite);
}
REGISTER_TEST_COMMAND(ethdev_link_status, test_link_status);