From: Igor Romanov Date: Tue, 10 Sep 2019 08:52:20 +0000 (+0100) Subject: examples: check status of getting MAC address X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=70febdcfd60f;p=dpdk.git examples: check status of getting MAC address The return value of rte_eth_macaddr_get() was changed from void to int. Update the usage of the functions according to the new return type. Signed-off-by: Igor Romanov Signed-off-by: Andrew Rybchenko --- diff --git a/examples/bbdev_app/main.c b/examples/bbdev_app/main.c index 3498765896..fb38dc3a72 100644 --- a/examples/bbdev_app/main.c +++ b/examples/bbdev_app/main.c @@ -490,7 +490,13 @@ initialize_ports(struct app_config_params *app_params, return ret; } - rte_eth_macaddr_get(port_id, &bbdev_port_eth_addr); + ret = rte_eth_macaddr_get(port_id, &bbdev_port_eth_addr); + if (ret < 0) { + printf("rte_eth_macaddr_get: err=%d, queue=%u\n", + ret, q); + return -1; + } + print_mac(port_id, &bbdev_port_eth_addr); return 0; diff --git a/examples/bond/main.c b/examples/bond/main.c index 39214cfeeb..ee8fa2d271 100644 --- a/examples/bond/main.c +++ b/examples/bond/main.c @@ -208,7 +208,12 @@ slave_port_init(uint16_t portid, struct rte_mempool *mbuf_pool) struct rte_ether_addr addr; - rte_eth_macaddr_get(portid, &addr); + retval = rte_eth_macaddr_get(portid, &addr); + if (retval != 0) + rte_exit(retval, + "Mac address get port %d failed (res=%d)", + portid, retval); + printf("Port %u MAC: ", portid); PRINT_MAC(addr); printf("\n"); @@ -309,7 +314,11 @@ bond_port_init(struct rte_mempool *mbuf_pool) struct rte_ether_addr addr; - rte_eth_macaddr_get(BOND_PORT, &addr); + retval = rte_eth_macaddr_get(BOND_PORT, &addr); + if (retval != 0) + rte_exit(retval, "port %u: Mac address get failed (res=%d)", + BOND_PORT, retval); + printf("Port %u MAC: ", (unsigned)BOND_PORT); PRINT_MAC(addr); printf("\n"); @@ -355,6 +364,7 @@ static int lcore_main(__attribute__((unused)) void *arg1) struct rte_mbuf *pkts[MAX_PKT_BURST] __rte_cache_aligned; struct rte_ether_addr d_addr; + struct rte_ether_addr bond_mac_addr; struct rte_ether_hdr *eth_hdr; struct rte_arp_hdr *arp_hdr; struct rte_ipv4_hdr *ipv4_hdr; @@ -364,6 +374,7 @@ static int lcore_main(__attribute__((unused)) void *arg1) uint32_t bond_ip; int i = 0; uint8_t is_free; + int ret; bond_ip = BOND_IP_1 | (BOND_IP_2 << 8) | (BOND_IP_3 << 16) | (BOND_IP_4 << 24); @@ -381,6 +392,15 @@ static int lcore_main(__attribute__((unused)) void *arg1) continue; } + ret = rte_eth_macaddr_get(BOND_PORT, &bond_mac_addr); + if (ret != 0) { + printf("Bond (port %u) MAC address get failed: %s.\n" + "%u packets dropped", BOND_PORT, strerror(-ret), + rx_cnt); + rte_pktmbuf_free(pkts[i]); + continue; + } + /* Search incoming data for ARP packets and prepare response */ for (i = 0; i < rx_cnt; i++) { if (rte_spinlock_trylock(&global_flag_stru_p->lock) == 1) { @@ -407,11 +427,11 @@ static int lcore_main(__attribute__((unused)) void *arg1) arp_hdr->arp_opcode = rte_cpu_to_be_16(RTE_ARP_OP_REPLY); /* Switch src and dst data and set bonding MAC */ rte_ether_addr_copy(ð_hdr->s_addr, ð_hdr->d_addr); - rte_eth_macaddr_get(BOND_PORT, ð_hdr->s_addr); + rte_ether_addr_copy(&bond_mac_addr, ð_hdr->s_addr); rte_ether_addr_copy(&arp_hdr->arp_data.arp_sha, &arp_hdr->arp_data.arp_tha); arp_hdr->arp_data.arp_tip = arp_hdr->arp_data.arp_sip; - rte_eth_macaddr_get(BOND_PORT, &d_addr); + rte_ether_addr_copy(&bond_mac_addr, &d_addr); rte_ether_addr_copy(&d_addr, &arp_hdr->arp_data.arp_sha); arp_hdr->arp_data.arp_sip = bond_ip; rte_eth_tx_burst(BOND_PORT, 0, &pkts[i], 1); @@ -428,7 +448,7 @@ static int lcore_main(__attribute__((unused)) void *arg1) ipv4_hdr = (struct rte_ipv4_hdr *)((char *)(eth_hdr + 1) + offset); if (ipv4_hdr->dst_addr == bond_ip) { rte_ether_addr_copy(ð_hdr->s_addr, ð_hdr->d_addr); - rte_eth_macaddr_get(BOND_PORT, ð_hdr->s_addr); + rte_ether_addr_copy(&bond_mac_addr, ð_hdr->s_addr); ipv4_hdr->dst_addr = ipv4_hdr->src_addr; ipv4_hdr->src_addr = bond_ip; rte_eth_tx_burst(BOND_PORT, 0, &pkts[i], 1); @@ -468,12 +488,14 @@ static void cmd_obj_send_parsed(void *parsed_result, struct cmd_obj_send_result *res = parsed_result; char ip_str[INET6_ADDRSTRLEN]; + struct rte_ether_addr bond_mac_addr; struct rte_mbuf *created_pkt; struct rte_ether_hdr *eth_hdr; struct rte_arp_hdr *arp_hdr; uint32_t bond_ip; size_t pkt_size; + int ret; if (res->ip.family == AF_INET) get_string(res, ip_str, INET_ADDRSTRLEN); @@ -483,6 +505,13 @@ static void cmd_obj_send_parsed(void *parsed_result, bond_ip = BOND_IP_1 | (BOND_IP_2 << 8) | (BOND_IP_3 << 16) | (BOND_IP_4 << 24); + ret = rte_eth_macaddr_get(BOND_PORT, &bond_mac_addr); + if (ret != 0) { + cmdline_printf(cl, + "Failed to get bond (port %u) MAC address: %s\n", + BOND_PORT, strerror(-ret)); + } + created_pkt = rte_pktmbuf_alloc(mbuf_pool); if (created_pkt == NULL) { cmdline_printf(cl, "Failed to allocate mbuf\n"); @@ -494,7 +523,7 @@ static void cmd_obj_send_parsed(void *parsed_result, created_pkt->pkt_len = pkt_size; eth_hdr = rte_pktmbuf_mtod(created_pkt, struct rte_ether_hdr *); - rte_eth_macaddr_get(BOND_PORT, ð_hdr->s_addr); + rte_ether_addr_copy(&bond_mac_addr, ð_hdr->s_addr); memset(ð_hdr->d_addr, 0xFF, RTE_ETHER_ADDR_LEN); eth_hdr->ether_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_ARP); @@ -506,7 +535,7 @@ static void cmd_obj_send_parsed(void *parsed_result, arp_hdr->arp_plen = sizeof(uint32_t); arp_hdr->arp_opcode = rte_cpu_to_be_16(RTE_ARP_OP_REQUEST); - rte_eth_macaddr_get(BOND_PORT, &arp_hdr->arp_data.arp_sha); + rte_ether_addr_copy(&bond_mac_addr, &arp_hdr->arp_data.arp_sha); arp_hdr->arp_data.arp_sip = bond_ip; memset(&arp_hdr->arp_data.arp_tha, 0, RTE_ETHER_ADDR_LEN); arp_hdr->arp_data.arp_tip = @@ -721,13 +750,20 @@ static void cmd_show_parsed(__attribute__((unused)) void *parsed_result, uint16_t slaves[16] = {0}; uint8_t len = 16; struct rte_ether_addr addr; - uint16_t i = 0; + uint16_t i; + int ret; + + for (i = 0; i < slaves_count; i++) { + ret = rte_eth_macaddr_get(i, &addr); + if (ret != 0) { + cmdline_printf(cl, + "Failed to get port %u MAC address: %s\n", + i, strerror(-ret)); + continue; + } - while (i < slaves_count) { - rte_eth_macaddr_get(i, &addr); PRINT_MAC(addr); printf("\n"); - i++; } rte_spinlock_trylock(&global_flag_stru_p->lock); diff --git a/examples/distributor/main.c b/examples/distributor/main.c index 49b4e611f9..567c5e9891 100644 --- a/examples/distributor/main.c +++ b/examples/distributor/main.c @@ -192,7 +192,13 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) } struct rte_ether_addr addr; - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval < 0) { + printf("Failed to get MAC address (port %u): %s\n", + port, rte_strerror(-retval)); + return retval; + } + printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", port, diff --git a/examples/ethtool/ethtool-app/main.c b/examples/ethtool/ethtool-app/main.c index 774df7eb10..29891012ac 100644 --- a/examples/ethtool/ethtool-app/main.c +++ b/examples/ethtool/ethtool-app/main.c @@ -156,7 +156,12 @@ static void setup_ports(struct app_config *app_cfg, int cnt_ports) "%s:%i: rte_eth_dev_start failed", __FILE__, __LINE__ ); - rte_eth_macaddr_get(idx_port, &ptr_port->mac_addr); + ret = rte_eth_macaddr_get(idx_port, &ptr_port->mac_addr); + if (ret != 0) + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get failed (port %u): %s\n", + idx_port, rte_strerror(-ret)); + rte_spinlock_init(&ptr_port->lock); } } @@ -182,6 +187,7 @@ static int slave_main(__attribute__((unused)) void *ptr_data) uint16_t cnt_sent; uint16_t idx_port; uint16_t lock_result; + int ret; while (app_cfg.exit_now == 0) { for (idx_port = 0; idx_port < app_cfg.cnt_ports; idx_port++) { @@ -198,8 +204,16 @@ static int slave_main(__attribute__((unused)) void *ptr_data) /* MAC address was updated */ if (ptr_port->port_dirty == 1) { - rte_eth_macaddr_get(ptr_port->idx_port, + ret = rte_eth_macaddr_get(ptr_port->idx_port, &ptr_port->mac_addr); + if (ret != 0) { + rte_spinlock_unlock(&ptr_port->lock); + printf("Failed to get MAC address (port %u): %s", + ptr_port->idx_port, + rte_strerror(-ret)); + return ret; + } + ptr_port->port_dirty = 0; } diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c index 8393b0d609..667d7eaf27 100644 --- a/examples/ethtool/lib/rte_ethtool.c +++ b/examples/ethtool/lib/rte_ethtool.c @@ -314,10 +314,15 @@ rte_ethtool_net_stop(uint16_t port_id) int rte_ethtool_net_get_mac_addr(uint16_t port_id, struct rte_ether_addr *addr) { + int ret; + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); if (addr == NULL) return -EINVAL; - rte_eth_macaddr_get(port_id, addr); + + ret = rte_eth_macaddr_get(port_id, addr); + if (ret != 0) + return ret; return 0; } diff --git a/examples/eventdev_pipeline/main.c b/examples/eventdev_pipeline/main.c index c734c7750c..f77830282e 100644 --- a/examples/eventdev_pipeline/main.c +++ b/examples/eventdev_pipeline/main.c @@ -324,7 +324,13 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) /* Display the port MAC address. */ struct rte_ether_addr addr; - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval != 0) { + printf("Failed to get MAC address (port %u): %s\n", + port, rte_strerror(-retval)); + return retval; + } + printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n", (unsigned int)port, diff --git a/examples/flow_classify/flow_classify.c b/examples/flow_classify/flow_classify.c index ae0faf621c..1c12bbb2fd 100644 --- a/examples/flow_classify/flow_classify.c +++ b/examples/flow_classify/flow_classify.c @@ -242,7 +242,10 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) return retval; /* Display the port MAC address. */ - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval != 0) + return retval; + printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n", port, diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c index f90edc5a27..104612339c 100644 --- a/examples/ip_fragmentation/main.c +++ b/examples/ip_fragmentation/main.c @@ -992,7 +992,14 @@ main(int argc, char **argv) ret, portid); } - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) { + printf("\n"); + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get: err=%d, port=%d\n", + ret, portid); + } + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf("\n"); diff --git a/examples/ip_pipeline/cli.c b/examples/ip_pipeline/cli.c index 4930310cc6..02dc11495a 100644 --- a/examples/ip_pipeline/cli.c +++ b/examples/ip_pipeline/cli.c @@ -253,7 +253,13 @@ print_link_info(struct link *link, char *out, size_t out_size) memset(&stats, 0, sizeof(stats)); rte_eth_stats_get(link->port_id, &stats); - rte_eth_macaddr_get(link->port_id, &mac_addr); + ret = rte_eth_macaddr_get(link->port_id, &mac_addr); + if (ret != 0) { + snprintf(out, out_size, "\n%s: MAC address get failed: %s", + link->name, rte_strerror(-ret)); + return; + } + ret = rte_eth_link_get(link->port_id, ð_link); if (ret < 0) { snprintf(out, out_size, "\n%s: link get failed: %s", diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index c822c8c58a..d59e6d02ff 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -1132,7 +1132,14 @@ main(int argc, char **argv) ret, portid); } - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) { + printf("\n"); + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get: err=%d, port=%d\n", + ret, portid); + } + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf("\n"); diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c index eda049bf55..f52ca5297a 100644 --- a/examples/ipsec-secgw/ipsec-secgw.c +++ b/examples/ipsec-secgw/ipsec-secgw.c @@ -1934,7 +1934,12 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads) printf("Configuring device port %u:\n", portid); - rte_eth_macaddr_get(portid, ðaddr); + ret = rte_eth_macaddr_get(portid, ðaddr); + if (ret != 0) + rte_exit(EXIT_FAILURE, + "Error getting MAC address (port %u): %s\n", + portid, rte_strerror(-ret)); + ethaddr_tbl[portid].src = ETHADDR_TO_UINT64(ðaddr); print_ethaddr("Address: ", ðaddr); printf("\n"); diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c index 7389beec17..464b546891 100644 --- a/examples/ipv4_multicast/main.c +++ b/examples/ipv4_multicast/main.c @@ -739,7 +739,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, port=%d\n", ret, portid); - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot get MAC address: err=%d, port=%d\n", + ret, portid); + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf(", "); diff --git a/examples/kni/main.c b/examples/kni/main.c index 8eb5b610e8..c576fc767e 100644 --- a/examples/kni/main.c +++ b/examples/kni/main.c @@ -940,8 +940,12 @@ kni_alloc(uint16_t port_id) port_id, strerror(-ret)); /* Get the interface default mac address */ - rte_eth_macaddr_get(port_id, + ret = rte_eth_macaddr_get(port_id, (struct rte_ether_addr *)&conf.mac_addr); + if (ret != 0) + rte_exit(EXIT_FAILURE, + "Failed to get MAC address (port %u): %s\n", + port_id, rte_strerror(-ret)); rte_eth_dev_get_mtu(port_id, &conf.mtu); diff --git a/examples/l2fwd-cat/l2fwd-cat.c b/examples/l2fwd-cat/l2fwd-cat.c index b15f0330b8..6838f288c6 100644 --- a/examples/l2fwd-cat/l2fwd-cat.c +++ b/examples/l2fwd-cat/l2fwd-cat.c @@ -74,7 +74,10 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) /* Display the port MAC address. */ struct rte_ether_addr addr; - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval < 0) + return retval; + printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n", port, diff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c index 7c84b40ff5..61d78295d4 100644 --- a/examples/l2fwd-crypto/main.c +++ b/examples/l2fwd-crypto/main.c @@ -2589,7 +2589,13 @@ initialize_ports(struct l2fwd_crypto_options *options) return -1; } - rte_eth_macaddr_get(portid, &l2fwd_ports_eth_addr[portid]); + retval = rte_eth_macaddr_get(portid, + &l2fwd_ports_eth_addr[portid]); + if (retval < 0) { + printf("rte_eth_macaddr_get :err=%d, port=%u\n", + retval, portid); + return -1; + } printf("Port %u, MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n\n", portid, diff --git a/examples/l2fwd-jobstats/main.c b/examples/l2fwd-jobstats/main.c index 4f930d0977..f975aa12d0 100644 --- a/examples/l2fwd-jobstats/main.c +++ b/examples/l2fwd-jobstats/main.c @@ -872,7 +872,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, port=%u\n", ret, portid); - rte_eth_macaddr_get(portid, &l2fwd_ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, + &l2fwd_ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot get MAC address: err=%d, port=%u\n", + ret, portid); /* init one RX queue */ fflush(stdout); diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-keepalive/main.c index 21278eed72..b36834974e 100644 --- a/examples/l2fwd-keepalive/main.c +++ b/examples/l2fwd-keepalive/main.c @@ -665,7 +665,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, port=%u\n", ret, portid); - rte_eth_macaddr_get(portid, &l2fwd_ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, + &l2fwd_ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot mac address: err=%d, port=%u\n", + ret, portid); /* init one RX queue */ fflush(stdout); diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index 6b9f09a4d9..d7bcbfae78 100644 --- a/examples/l2fwd/main.c +++ b/examples/l2fwd/main.c @@ -665,7 +665,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, port=%u\n", ret, portid); - rte_eth_macaddr_get(portid,&l2fwd_ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, + &l2fwd_ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot get MAC address: err=%d, port=%u\n", + ret, portid); /* init one RX queue */ fflush(stdout); diff --git a/examples/l3fwd-acl/main.c b/examples/l3fwd-acl/main.c index 0abb8cb5ec..fa92a28297 100644 --- a/examples/l3fwd-acl/main.c +++ b/examples/l3fwd-acl/main.c @@ -1968,7 +1968,12 @@ main(int argc, char **argv) "rte_eth_dev_adjust_nb_rx_tx_desc: err=%d, port=%d\n", ret, portid); - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get: err=%d, port=%d\n", + ret, portid); + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf(", "); diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c index 2e3b1d3c63..a03f64a1a3 100644 --- a/examples/l3fwd-power/main.c +++ b/examples/l3fwd-power/main.c @@ -2323,7 +2323,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, port=%d\n", ret, portid); - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot get MAC address: err=%d, port=%d\n", + ret, portid); + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf(", "); diff --git a/examples/l3fwd-vf/main.c b/examples/l3fwd-vf/main.c index 572e74cf5d..ff6c9e2f1e 100644 --- a/examples/l3fwd-vf/main.c +++ b/examples/l3fwd-vf/main.c @@ -985,7 +985,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, port=%d\n", ret, portid); - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot get MAC address: err=%d, port=%d\n", + ret, portid); + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf(", "); diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 7253acac46..4dea12a653 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -917,7 +917,12 @@ main(int argc, char **argv) "Cannot adjust number of descriptors: err=%d, " "port=%d\n", ret, portid); - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot get MAC address: err=%d, port=%d\n", + ret, portid); + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf(", "); print_ethaddr("Destination:", diff --git a/examples/link_status_interrupt/main.c b/examples/link_status_interrupt/main.c index a0b75d9f6e..a924aa2313 100644 --- a/examples/link_status_interrupt/main.c +++ b/examples/link_status_interrupt/main.c @@ -657,8 +657,12 @@ main(int argc, char **argv) rte_eth_dev_callback_register(portid, RTE_ETH_EVENT_INTR_LSC, lsi_event_callback, NULL); - rte_eth_macaddr_get(portid, + ret = rte_eth_macaddr_get(portid, &lsi_ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get: err=%d, port=%u\n", + ret, (unsigned int)portid); /* init one RX queue */ fflush(stdout); diff --git a/examples/multi_process/client_server_mp/mp_server/main.c b/examples/multi_process/client_server_mp/mp_server/main.c index 0150533700..802e29d10d 100644 --- a/examples/multi_process/client_server_mp/mp_server/main.c +++ b/examples/multi_process/client_server_mp/mp_server/main.c @@ -61,12 +61,18 @@ get_printable_mac_addr(uint16_t port) { static const char err_address[] = "00:00:00:00:00:00"; static char addresses[RTE_MAX_ETHPORTS][sizeof(err_address)]; + int ret; if (unlikely(port >= RTE_MAX_ETHPORTS)) return err_address; if (unlikely(addresses[port][0]=='\0')){ struct rte_ether_addr mac; - rte_eth_macaddr_get(port, &mac); + ret = rte_eth_macaddr_get(port, &mac); + if (ret != 0) { + printf("Failed to get MAC address (port %u): %s\n", + port, rte_strerror(-ret)); + return err_address; + } snprintf(addresses[port], sizeof(addresses[port]), "%02x:%02x:%02x:%02x:%02x:%02x\n", mac.addr_bytes[0], mac.addr_bytes[1], mac.addr_bytes[2], diff --git a/examples/packet_ordering/main.c b/examples/packet_ordering/main.c index 132f582a95..b397b318e6 100644 --- a/examples/packet_ordering/main.c +++ b/examples/packet_ordering/main.c @@ -322,7 +322,13 @@ configure_eth_port(uint16_t port_id) if (ret < 0) return ret; - rte_eth_macaddr_get(port_id, &addr); + ret = rte_eth_macaddr_get(port_id, &addr); + if (ret != 0) { + printf("Failed to get MAC address (port %u): %s\n", + port_id, rte_strerror(-ret)); + return ret; + } + printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", port_id, diff --git a/examples/performance-thread/l3fwd-thread/main.c b/examples/performance-thread/l3fwd-thread/main.c index de05219228..122c632443 100644 --- a/examples/performance-thread/l3fwd-thread/main.c +++ b/examples/performance-thread/l3fwd-thread/main.c @@ -3602,7 +3602,12 @@ main(int argc, char **argv) "rte_eth_dev_adjust_nb_rx_tx_desc: err=%d, port=%d\n", ret, portid); - rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + ret = rte_eth_macaddr_get(portid, &ports_eth_addr[portid]); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "rte_eth_macaddr_get: err=%d, port=%d\n", + ret, portid); + print_ethaddr(" Address:", &ports_eth_addr[portid]); printf(", "); print_ethaddr("Destination:", diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c index 6e273f644f..a1a7ae699a 100644 --- a/examples/ptpclient/ptpclient.c +++ b/examples/ptpclient/ptpclient.c @@ -378,6 +378,7 @@ static void parse_fup(struct ptpv2_data_slave_ordinary *ptp_data) { struct rte_ether_hdr *eth_hdr; + struct rte_ether_addr eth_addr; struct ptp_header *ptp_hdr; struct clock_id *client_clkid; struct ptp_message *ptp_msg; @@ -387,6 +388,7 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data) size_t pkt_size; int wait_us; struct rte_mbuf *m = ptp_data->m; + int ret; eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *); ptp_hdr = (struct ptp_header *)(rte_pktmbuf_mtod(m, char *) @@ -407,6 +409,13 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data) (((uint64_t)ntohs(origin_tstamp->sec_msb)) << 32); if (ptp_data->seqID_FOLLOWUP == ptp_data->seqID_SYNC) { + ret = rte_eth_macaddr_get(ptp_data->portid, ð_addr); + if (ret != 0) { + printf("\nCore %u: port %u failed to get MAC address: %s\n", + rte_lcore_id(), ptp_data->portid, + rte_strerror(-ret)); + return; + } created_pkt = rte_pktmbuf_alloc(mbuf_pool); pkt_size = sizeof(struct rte_ether_hdr) + @@ -414,7 +423,7 @@ parse_fup(struct ptpv2_data_slave_ordinary *ptp_data) created_pkt->data_len = pkt_size; created_pkt->pkt_len = pkt_size; eth_hdr = rte_pktmbuf_mtod(created_pkt, struct rte_ether_hdr *); - rte_eth_macaddr_get(ptp_data->portid, ð_hdr->s_addr); + rte_ether_addr_copy(ð_addr, ð_hdr->s_addr); /* Set multicast address 01-1B-19-00-00-00. */ rte_ether_addr_copy(ð_multicast, ð_hdr->d_addr); diff --git a/examples/quota_watermark/qw/main.c b/examples/quota_watermark/qw/main.c index a61360b99e..c985eed243 100644 --- a/examples/quota_watermark/qw/main.c +++ b/examples/quota_watermark/qw/main.c @@ -52,11 +52,20 @@ static void send_pause_frame(uint16_t port_id, uint16_t duration) struct ether_fc_frame *pause_frame; struct rte_ether_hdr *hdr; struct rte_ether_addr mac_addr; + int ret; RTE_LOG_DP(DEBUG, USER1, "Sending PAUSE frame (duration=%d) on port %d\n", duration, port_id); + ret = rte_eth_macaddr_get(port_id, &mac_addr); + if (ret != 0) { + RTE_LOG_DP(ERR, USER1, + "Failed to get MAC address (port %u): %s\n", + port_id, rte_strerror(-ret)); + return; + } + /* Get a mbuf from the pool */ mbuf = rte_pktmbuf_alloc(mbuf_pool); if (unlikely(mbuf == NULL)) @@ -66,7 +75,6 @@ static void send_pause_frame(uint16_t port_id, uint16_t duration) hdr = rte_pktmbuf_mtod(mbuf, struct rte_ether_hdr *); pause_frame = (struct ether_fc_frame *) &hdr[1]; - rte_eth_macaddr_get(port_id, &mac_addr); rte_ether_addr_copy(&mac_addr, &hdr->s_addr); void *tmp = &hdr->d_addr.addr_bytes[0]; diff --git a/examples/rxtx_callbacks/main.c b/examples/rxtx_callbacks/main.c index 5d545115c4..07e95e8d1a 100644 --- a/examples/rxtx_callbacks/main.c +++ b/examples/rxtx_callbacks/main.c @@ -188,7 +188,12 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) struct rte_ether_addr addr; - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval < 0) { + printf("Failed to get MAC address on port %u: %s\n", + port, rte_strerror(-retval)); + return retval; + } printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", (unsigned)port, diff --git a/examples/server_node_efd/server/main.c b/examples/server_node_efd/server/main.c index 7b4657e42b..455bdc0632 100644 --- a/examples/server_node_efd/server/main.c +++ b/examples/server_node_efd/server/main.c @@ -69,11 +69,18 @@ get_printable_mac_addr(uint16_t port) static const char err_address[] = "00:00:00:00:00:00"; static char addresses[RTE_MAX_ETHPORTS][sizeof(err_address)]; struct rte_ether_addr mac; + int ret; if (unlikely(port >= RTE_MAX_ETHPORTS)) return err_address; if (unlikely(addresses[port][0] == '\0')) { - rte_eth_macaddr_get(port, &mac); + ret = rte_eth_macaddr_get(port, &mac); + if (ret != 0) { + printf("Failed to get MAC address (port %u): %s\n", + port, rte_strerror(-ret)); + return err_address; + } + snprintf(addresses[port], sizeof(addresses[port]), "%02x:%02x:%02x:%02x:%02x:%02x\n", mac.addr_bytes[0], mac.addr_bytes[1], diff --git a/examples/skeleton/basicfwd.c b/examples/skeleton/basicfwd.c index 8f1805aeb5..73d313b84e 100644 --- a/examples/skeleton/basicfwd.c +++ b/examples/skeleton/basicfwd.c @@ -89,7 +89,10 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) /* Display the port MAC address. */ struct rte_ether_addr addr; - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval != 0) + return retval; + printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n", port, diff --git a/examples/tep_termination/vxlan_setup.c b/examples/tep_termination/vxlan_setup.c index 8d6514dd85..f9f857c098 100644 --- a/examples/tep_termination/vxlan_setup.c +++ b/examples/tep_termination/vxlan_setup.c @@ -182,7 +182,10 @@ vxlan_port_init(uint16_t port, struct rte_mempool *mbuf_pool) retval = rte_eth_dev_udp_tunnel_port_add(port, &tunnel_udp); if (retval < 0) return retval; - rte_eth_macaddr_get(port, &ports_eth_addr[port]); + retval = rte_eth_macaddr_get(port, &ports_eth_addr[port]); + if (retval < 0) + return retval; + RTE_LOG(INFO, PORT, "Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", port, diff --git a/examples/vhost/main.c b/examples/vhost/main.c index b5632d771d..ab649bf147 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -346,7 +346,14 @@ port_init(uint16_t port) } } - rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + retval = rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + if (retval < 0) { + RTE_LOG(ERR, VHOST_PORT, + "Failed to get MAC address on port %u: %s\n", + port, rte_strerror(-retval)); + return retval; + } + RTE_LOG(INFO, VHOST_PORT, "Max virtio devices supported: %u\n", num_devices); RTE_LOG(INFO, VHOST_PORT, "Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", diff --git a/examples/vm_power_manager/guest_cli/main.c b/examples/vm_power_manager/guest_cli/main.c index 2094145eb1..f63b3c988a 100644 --- a/examples/vm_power_manager/guest_cli/main.c +++ b/examples/vm_power_manager/guest_cli/main.c @@ -55,7 +55,11 @@ parse_args(int argc, char **argv) int i, cnt, idx; policy = get_policy(); - set_policy_defaults(policy); + ret = set_policy_defaults(policy); + if (ret != 0) { + printf("Failed to set policy defaults\n"); + return -1; + } argvopt = argv; @@ -120,7 +124,10 @@ parse_args(int argc, char **argv) for (i = 0; i < MAX_VCPU_PER_VM; i++) { if (ports[i]) { printf("***Using port %d\n", i); - set_policy_mac(i, idx++); + if (set_policy_mac(i, idx++) != 0) { + printf("Cannot set policy MAC"); + return -1; + } } } policy->nb_mac_to_monitor = idx; diff --git a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c index 78c3aa0a1e..77e54401aa 100644 --- a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c +++ b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c @@ -51,9 +51,15 @@ set_policy_mac(int port, int idx) { struct channel_packet *policy; union PFID pfid; + int ret; /* Use port MAC address as the vfid */ - rte_eth_macaddr_get(port, &pfid.addr); + ret = rte_eth_macaddr_get(port, &pfid.addr); + if (retval != 0) { + printf("Failed to get device (port %u) MAC address: %s\n", + port, rte_strerror(-retval)); + return retval; + } printf("Port %u MAC: %02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 ":" "%02" PRIx8 ":%02" PRIx8 ":%02" PRIx8 "\n", @@ -66,10 +72,15 @@ set_policy_mac(int port, int idx) return 0; } -void +int set_policy_defaults(struct channel_packet *pkt) { - set_policy_mac(0, 0); + int ret; + + ret = set_policy_mac(0, 0); + if (ret != 0) + return ret; + pkt->nb_mac_to_monitor = 1; pkt->t_boost_status.tbEnabled = false; diff --git a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.h b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.h index fd77f6a69d..0c2cc1374d 100644 --- a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.h +++ b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.h @@ -15,7 +15,7 @@ struct channel_packet *get_policy(void); int set_policy_mac(int port, int idx); -void set_policy_defaults(struct channel_packet *pkt); +int set_policy_defaults(struct channel_packet *pkt); void run_cli(__attribute__((unused)) void *arg); diff --git a/examples/vm_power_manager/main.c b/examples/vm_power_manager/main.c index ed18177574..d39f044c1e 100644 --- a/examples/vm_power_manager/main.c +++ b/examples/vm_power_manager/main.c @@ -112,7 +112,13 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) /* Display the port MAC address. */ struct rte_ether_addr addr; - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval != 0) { + printf("Failed to get device (port %u) MAC address: %s\n", + port, rte_strerror(-retval)); + return retval; + } + printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n", (unsigned int)port, diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c index 91f9a99042..6e6fc91ec0 100644 --- a/examples/vmdq/main.c +++ b/examples/vmdq/main.c @@ -276,7 +276,12 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) return retval; } - rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + retval = rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + if (retval < 0) { + printf("port %d MAC address get failed: %s\n", port, + rte_strerror(-retval)); + return retval; + } printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", (unsigned)port, diff --git a/examples/vmdq_dcb/main.c b/examples/vmdq_dcb/main.c index 2122e41f5e..594c4f1959 100644 --- a/examples/vmdq_dcb/main.c +++ b/examples/vmdq_dcb/main.c @@ -333,7 +333,12 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) return retval; } - rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + retval = rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + if (retval < 0) { + printf("port %d MAC address get failed: %s\n", port, + rte_strerror(-retval)); + return retval; + } printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", (unsigned)port,