diff --git a/examples/bbdev_app/main.c b/examples/bbdev_app/main.c
index 349876589..fb38dc3a7 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/distributor/main.c b/examples/distributor/main.c
index 49b4e611f..567c5e989 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 774df7eb1..29891012a 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 8393b0d60..667d7eaf2 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 c734c7750..f77830282 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 ae0faf621..1c12bbb2f 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 f90edc5a2..104612339 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 4930310cc..02dc11495 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, &eth_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 c822c8c58..d59e6d02f 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 2520e5108..5514f4ba5 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -1931,7 +1931,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, &ethaddr);
+	ret = rte_eth_macaddr_get(portid, &ethaddr);
+	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(&ethaddr);
 	print_ethaddr("Address: ", &ethaddr);
 	printf("\n");
diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c
index 6b165f2f0..63333b5b6 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 8eb5b610e..c576fc767 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 b15f0330b..6838f288c 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 7c84b40ff..61d78295d 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 4f930d097..f975aa12d 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 21278eed7..b36834974 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 6b9f09a4d..d7bcbfae7 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 0abb8cb5e..fa92a2829 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 2e3b1d3c6..a03f64a1a 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 572e74cf5..ff6c9e2f1 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 7253acac4..4dea12a65 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 a0b75d9f6..a924aa231 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 015053370..802e29d10 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 132f582a9..b397b318e 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 de0521922..122c63244 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 6e273f644..a1a7ae699 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, &eth_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, &eth_hdr->s_addr);
+		rte_ether_addr_copy(&eth_addr, &eth_hdr->s_addr);
 
 		/* Set multicast address 01-1B-19-00-00-00. */
 		rte_ether_addr_copy(&eth_multicast, &eth_hdr->d_addr);
diff --git a/examples/quota_watermark/qw/main.c b/examples/quota_watermark/qw/main.c
index a61360b99..c985eed24 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 5d545115c..07e95e8d1 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 7b4657e42..455bdc063 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 8f1805aeb..73d313b84 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 8d6514dd8..f9f857c09 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 b5632d771..ab649bf14 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 2094145eb..f63b3c988 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 78c3aa0a1..77e54401a 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 fd77f6a69..0c2cc1374 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 288a2462a..02b4cc450 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 91f9a9904..6e6fc91ec 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 2122e41f5..594c4f195 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,
