static const char *
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)];
+ static const struct rte_ether_addr null_mac; /* static defaults to 0 */
+ static char err_address[32];
+ static char addresses[RTE_MAX_ETHPORTS][32];
int ret;
- if (unlikely(port >= RTE_MAX_ETHPORTS))
+ if (unlikely(port >= RTE_MAX_ETHPORTS)) {
+ if (err_address[0] == '\0')
+ rte_ether_format_addr(err_address,
+ sizeof(err_address), &null_mac);
return err_address;
+ }
if (unlikely(addresses[port][0]=='\0')){
struct rte_ether_addr mac;
ret = rte_eth_macaddr_get(port, &mac);
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],
- mac.addr_bytes[3], mac.addr_bytes[4], mac.addr_bytes[5]);
+ rte_ether_format_addr(addresses[port],
+ sizeof(addresses[port]), &mac);
}
return addresses[port];
}
/*
* This function displays the recorded statistics for each port
* and for each client. It uses ANSI terminal codes to clear
- * screen when called. It is called from a single non-master
+ * screen when called. It is called from a single worker
* thread in the server process, when the process is run with more
* than one lcore enabled.
*/
}
/*
- * The function called from each non-master lcore used by the process.
+ * The function called from each worker lcore used by the process.
* The test_and_set function is used to randomly pick a single lcore on which
* the code to display the statistics will run. Otherwise, the code just
* repeatedly sleeps.
*/
static int
-sleep_lcore(__attribute__((unused)) void *dummy)
+sleep_lcore(__rte_unused void *dummy)
{
/* Used to pick a display thread - static, so zero-initialised */
static rte_atomic32_t display_stats;
}
/*
- * Function called by the master lcore of the DPDK process.
+ * Function called by the main lcore of the DPDK process.
*/
static void
do_packet_forwarding(void)
/* clear statistics */
clear_stats();
- /* put all other cores to sleep bar master */
- rte_eal_mp_remote_launch(sleep_lcore, NULL, SKIP_MASTER);
+ /* put all other cores to sleep except main */
+ rte_eal_mp_remote_launch(sleep_lcore, NULL, SKIP_MAIN);
do_packet_forwarding();
return 0;