*/
uint8_t rmv_interrupt = 1; /* enabled by default */
+/*
+ * Display or mask ether events
+ * Default to all events except VF_MBOX
+ */
+uint32_t event_print_mask = (UINT32_C(1) << RTE_ETH_EVENT_UNKNOWN) |
+ (UINT32_C(1) << RTE_ETH_EVENT_INTR_LSC) |
+ (UINT32_C(1) << RTE_ETH_EVENT_QUEUE_STATE) |
+ (UINT32_C(1) << RTE_ETH_EVENT_INTR_RESET) |
+ (UINT32_C(1) << RTE_ETH_EVENT_MACSEC) |
+ (UINT32_C(1) << RTE_ETH_EVENT_INTR_RMV);
+
/*
* NIC bypass mode configuration options.
*/
uint16_t nb_tx_queue_stats_mappings = 0;
uint16_t nb_rx_queue_stats_mappings = 0;
-unsigned max_socket = 0;
+unsigned int num_sockets = 0;
+unsigned int socket_ids[RTE_MAX_NUMA_NODES];
#ifdef RTE_LIBRTE_BITRATE
/* Bitrate statistics */
*/
static int all_ports_started(void);
+/*
+ * Helper function to check if socket is allready discovered.
+ * If yes, return positive value. If not, return zero.
+ */
+int
+new_socket_id(unsigned int socket_id)
+{
+ unsigned int i;
+
+ for (i = 0; i < num_sockets; i++) {
+ if (socket_ids[i] == socket_id)
+ return 0;
+ }
+ return 1;
+}
+
/*
* Setup default configuration.
*/
nb_lc = 0;
for (i = 0; i < RTE_MAX_LCORE; i++) {
- sock_num = rte_lcore_to_socket_id(i) + 1;
- if (sock_num > max_socket) {
- if (sock_num > RTE_MAX_NUMA_NODES)
- rte_exit(EXIT_FAILURE, "Total sockets greater than %u\n", RTE_MAX_NUMA_NODES);
- max_socket = sock_num;
+ sock_num = rte_lcore_to_socket_id(i);
+ if (new_socket_id(sock_num)) {
+ if (num_sockets >= RTE_MAX_NUMA_NODES) {
+ rte_exit(EXIT_FAILURE,
+ "Total sockets greater than %u\n",
+ RTE_MAX_NUMA_NODES);
+ }
+ socket_ids[num_sockets++] = sock_num;
}
if (!rte_lcore_is_enabled(i))
continue;
{
static int warning_once = 0;
- if (socket_id >= max_socket) {
+ if (new_socket_id(socket_id)) {
if (!warning_once && numa_support)
printf("Warning: NUMA should be configured manually by"
" using --port-numa-config and"
uint8_t port_per_socket[RTE_MAX_NUMA_NODES];
memset(port_per_socket,0,RTE_MAX_NUMA_NODES);
+
+ if (numa_support) {
+ memset(port_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
+ memset(rxring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
+ memset(txring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
+ }
+
/* Configuration of logical cores. */
fwd_lcores = rte_zmalloc("testpmd: fwd_lcores",
sizeof(struct fwd_lcore *) * nb_lcores,
if (numa_support) {
uint8_t i;
- for (i = 0; i < max_socket; i++)
- mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool, i);
+ for (i = 0; i < num_sockets; i++)
+ mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool,
+ socket_ids[i]);
} else {
if (socket_num == UMA_NO_CONFIG)
mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool, 0);
}
#endif
#ifdef RTE_LIBRTE_LATENCY_STATS
- if (latencystats_lcore_id == rte_lcore_id())
+ if (latencystats_enabled != 0 &&
+ latencystats_lcore_id == rte_lcore_id())
rte_latencystats_update();
#endif
if (da->type == RTE_DEVTYPE_VIRTUAL)
snprintf(name, sizeof(name), "%s", da->virt.drv_name);
else if (da->type == RTE_DEVTYPE_WHITELISTED_PCI)
- rte_eal_pci_device_name(&da->pci.addr, name, sizeof(name));
+ rte_pci_device_name(&da->pci.addr, name, sizeof(name));
printf("removing device %s\n", name);
rte_eal_dev_detach(name);
dev->state = RTE_ETH_DEV_UNUSED;
fprintf(stderr, "\nPort %" PRIu8 ": %s called upon invalid event %d\n",
port_id, __func__, type);
fflush(stderr);
- } else {
+ } else if (event_print_mask & (UINT32_C(1) << type)) {
printf("\nPort %" PRIu8 ": %s event\n", port_id,
event_desc[type]);
fflush(stdout);
rte_panic("Empty set of forwarding logical cores - check the "
"core mask supplied in the command parameters\n");
- /* Bitrate stats disabled by default */
+ /* Bitrate/latency stats disabled by default */
+#ifdef RTE_LIBRTE_BITRATE
bitrate_enabled = 0;
+#endif
+#ifdef RTE_LIBRTE_LATENCY_STATS
+ latencystats_enabled = 0;
+#endif
argc -= diag;
argv += diag;