@@ -672,6 +672,7 @@ show_port(void)
struct rte_eth_dev_info dev_info;
struct rte_eth_rxq_info queue_info;
struct rte_eth_rss_conf rss_conf;
+ char link_status_text[100];
memset(&rss_conf, 0, sizeof(rss_conf));
@@ -685,12 +686,12 @@ show_port(void)
printf("Link get failed (port %u): %s\n",
i, rte_strerror(-ret));
} else {
- printf("\t -- link speed %d duplex %d,"
- " auto neg %d status %d\n",
- link.link_speed,
- link.link_duplex,
- link.link_autoneg,
- link.link_status);
+ rte_eth_link_to_str(link_status_text,
+ sizeof(link_status_text),
+ "\t -- link speed: %M, duplex: %D,"
+ " auto neg: %A, status: %S\n",
+ &link);
+ printf("%s", link_status_text);
}
printf("\t -- promiscuous (%d)\n",
rte_eth_promiscuous_get(i));
@@ -155,7 +155,7 @@ static void
app_ports_check_link(void)
{
uint32_t all_ports_up, i;
-
+ char link_status_text[50];
all_ports_up = 1;
for (i = 0; i < app.n_ports; i++) {
@@ -173,12 +173,11 @@ app_ports_check_link(void)
all_ports_up = 0;
continue;
}
-
- RTE_LOG(INFO, USER1, "Port %u (%u Gbps) %s\n",
+ rte_eth_link_to_str(link_status_text, sizeof(link_status_text),
+ "(%G Gbps) %S", &link);
+ RTE_LOG(INFO, USER1, "Port %u %s\n",
port,
- link.link_speed / 1000,
- link.link_status ? "UP" : "DOWN");
-
+ link_status_text);
if (link.link_status == ETH_LINK_DOWN)
all_ports_up = 0;
}
@@ -564,6 +564,7 @@ port_infos_display(portid_t port_id)
char name[RTE_ETH_NAME_MAX_LEN];
int ret;
char fw_version[ETHDEV_FWVERS_LEN];
+ char link_status[70];
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
print_valid_ports();
@@ -604,10 +605,11 @@ port_infos_display(portid_t port_id)
} else
printf("\nmemory allocation on the socket: %u",port->socket_id);
- printf("\nLink status: %s\n", (link.link_status) ? ("up") : ("down"));
- printf("Link speed: %u Mbps\n", (unsigned) link.link_speed);
- printf("Link duplex: %s\n", (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
- ("full-duplex") : ("half-duplex"));
+ rte_eth_link_to_str(link_status, sizeof(link_status),
+ "\nLink status: %S\n"
+ "Link speed: %M Mbps\n"
+ "Link duplex: %D\n", &link);
+ printf("%s", link_status);
if (!rte_eth_dev_get_mtu(port_id, &mtu))
printf("MTU: %u\n", mtu);
@@ -730,6 +732,8 @@ port_summary_display(portid_t port_id)
struct rte_eth_link link;
struct rte_eth_dev_info dev_info;
char name[RTE_ETH_NAME_MAX_LEN];
+ char status_text[6];
+ char speed_text[12];
int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
@@ -750,12 +754,14 @@ port_summary_display(portid_t port_id)
if (ret != 0)
return;
- printf("%-4d %02X:%02X:%02X:%02X:%02X:%02X %-12s %-14s %-8s %uMbps\n",
+ rte_eth_link_to_str(status_text, 6, "%S", &link);
+ rte_eth_link_to_str(speed_text, 12, "%M", &link);
+ printf("%-4d %02X:%02X:%02X:%02X:%02X:%02X %-12s %-14s %-8s %sMbps\n",
port_id, mac_addr.addr_bytes[0], mac_addr.addr_bytes[1],
mac_addr.addr_bytes[2], mac_addr.addr_bytes[3],
mac_addr.addr_bytes[4], mac_addr.addr_bytes[5], name,
- dev_info.driver_name, (link.link_status) ? ("up") : ("down"),
- (unsigned int) link.link_speed);
+ dev_info.driver_name, status_text,
+ speed_text);
}
void
@@ -3899,7 +3905,8 @@ set_queue_rate_limit(portid_t port_id, uint16_t queue_idx, uint16_t rate)
ret = eth_link_get_nowait_print_err(port_id, &link);
if (ret < 0)
return 1;
- if (rate > link.link_speed) {
+ if (link.link_speed != ETH_SPEED_NUM_UNKNOWN &&
+ rate > link.link_speed) {
printf("Invalid rate value:%u bigger than link speed: %u\n",
rate, link.link_speed);
return 1;
@@ -2991,6 +2991,7 @@ check_all_ports_link_status(uint32_t port_mask)
uint8_t count, all_ports_up, print_flag = 0;
struct rte_eth_link link;
int ret;
+ char link_status[ETH_LINK_MAX_STR_LEN];
printf("Checking link statuses...\n");
fflush(stdout);
@@ -3010,14 +3011,9 @@ check_all_ports_link_status(uint32_t port_mask)
}
/* print link status if flag set */
if (print_flag == 1) {
- if (link.link_status)
- printf(
- "Port%d Link Up. speed %u Mbps- %s\n",
- portid, link.link_speed,
- (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
- ("full-duplex") : ("half-duplex"));
- else
- printf("Port %d Link Down\n", portid);
+ rte_eth_link_to_str(link_status,
+ sizeof(link_status), NULL, &link);
+ printf("Port %d %s\n", portid, link_status);
continue;
}
/* clear all_ports_up flag if any link down */
@@ -19,7 +19,7 @@ test_link_status_up_default(void)
.link_autoneg = ETH_LINK_AUTONEG,
.link_duplex = ETH_LINK_FULL_DUPLEX
};
- char text[RTE_ETH_LINK_MAX_STR_LEN + 1];
+ char text[ETH_LINK_MAX_STR_LEN + 1];
ret = rte_eth_link_to_str(text, sizeof(text), NULL, &link_status);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
@@ -51,7 +51,7 @@ test_link_status_up_default(void)
link_status.link_autoneg = ETH_LINK_AUTONEG;
ret = rte_eth_link_to_str(text, sizeof(text), NULL, &link_status);
printf("Default link up #4:len = %d, %s\n", ret, text);
- RTE_TEST_ASSERT(ret > RTE_ETH_LINK_MAX_STR_LEN,
+ RTE_TEST_ASSERT(ret < ETH_LINK_MAX_STR_LEN,
"String length exceeds max allowed value\n");
return TEST_SUCCESS;
}
@@ -66,7 +66,7 @@ test_link_status_down_default(void)
.link_autoneg = ETH_LINK_AUTONEG,
.link_duplex = ETH_LINK_FULL_DUPLEX
};
- char text[RTE_ETH_LINK_MAX_STR_LEN];
+ char text[ETH_LINK_MAX_STR_LEN];
ret = rte_eth_link_to_str(text, sizeof(text), NULL, &link_status);
RTE_TEST_ASSERT(ret > 0, "Failed to format default string\n");
@@ -126,6 +126,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
uint8_t count, all_ports_up, print_flag = 0;
struct rte_eth_link link;
int ret;
+ char link_status[ETH_LINK_MAX_STR_LEN];
printf("Checking link statuses...\n");
fflush(stdout);
@@ -146,16 +147,12 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask)
/* print link status if flag set */
if (print_flag == 1) {
- if (link.link_status) {
- printf(
- "Port%d Link Up. Speed %u Mbps - %s\n",
- portid, link.link_speed,
- (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
- ("full-duplex") : ("half-duplex"));
- if (link_mbps == 0)
- link_mbps = link.link_speed;
- } else
- printf("Port %d Link Down\n", portid);
+ if (link.link_status && link_mbps == 0)
+ link_mbps = link.link_speed;
+
+ rte_eth_link_to_str(link_status,
+ sizeof(link_status), NULL, &link);
+ printf("Port %d %s\n", portid, link_status);
continue;
}
/* clear all_ports_up flag if any link down */
@@ -158,6 +158,7 @@ An example callback function that has been written as indicated below.
{
struct rte_eth_link link;
int ret;
+ char link_status[RTE_ETH_LINK_MAX_STR_LEN];
RTE_SET_USED(param);
@@ -169,11 +170,10 @@ An example callback function that has been written as indicated below.
if (ret < 0) {
printf("Failed to get port %d link status: %s\n\n",
port_id, rte_strerror(-ret));
- } else if (link.link_status) {
- printf("Port %d Link Up - speed %u Mbps - %s\n\n", port_id, (unsigned)link.link_speed,
- (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? ("full-duplex") : ("half-duplex"));
- } else
- printf("Port %d Link Down\n\n", port_id);
+ } else {
+ rte_eth_link_to_str(link_status, sizeof(link_status), NULL, &link);
+ printf("Port %d %s\n\n", port_id, link_status);
+ }
}
This function is called when a link status interrupt is present for the right port.