+ struct rte_ring *rxtx[NUM_RINGS];
+ int port, cmdl_port0 = -1;
+ uint8_t nb_ports;
+
+ nb_ports = rte_eth_dev_count();
+ printf("nb_ports=%d\n", (int)nb_ports);
+
+ /* create the rings and eth_rings in the test code.
+ * This does not test the rte_pmd_ring_devinit function.
+ *
+ * Test with the command line option --vdev=net_ring0 to test rte_pmd_ring_devinit.
+ */
+ rxtx[0] = rte_ring_create("R0", RING_SIZE, SOCKET0, RING_F_SP_ENQ|RING_F_SC_DEQ);
+ if (rxtx[0] == NULL) {
+ printf("rte_ring_create R0 failed");
+ return -1;
+ }
+
+ rxtx[1] = rte_ring_create("R1", RING_SIZE, SOCKET0, RING_F_SP_ENQ|RING_F_SC_DEQ);
+ if (rxtx[1] == NULL) {
+ printf("rte_ring_create R1 failed");
+ return -1;
+ }
+
+ tx_porta = rte_eth_from_rings("net_ringa", rxtx, NUM_RINGS, rxtx, NUM_RINGS, SOCKET0);
+ rx_portb = rte_eth_from_rings("net_ringb", rxtx, NUM_RINGS, rxtx, NUM_RINGS, SOCKET0);
+ rxtx_portc = rte_eth_from_rings("net_ringc", rxtx, NUM_RINGS, rxtx, NUM_RINGS, SOCKET0);
+ rxtx_portd = rte_eth_from_rings("net_ringd", rxtx, NUM_RINGS, rxtx, NUM_RINGS, SOCKET0);
+ rxtx_porte = rte_eth_from_rings("net_ringe", rxtx, NUM_RINGS, rxtx, NUM_RINGS, SOCKET0);
+
+ printf("tx_porta=%d rx_portb=%d rxtx_portc=%d rxtx_portd=%d rxtx_porte=%d\n",
+ tx_porta, rx_portb, rxtx_portc, rxtx_portd, rxtx_porte);
+
+ if ((tx_porta == -1) || (rx_portb == -1) || (rxtx_portc == -1)
+ || (rxtx_portd == -1) || (rxtx_porte == -1)) {
+ printf("rte_eth_from rings failed\n");
+ return -1;
+ }
+
+ mp = rte_pktmbuf_pool_create("mbuf_pool", NB_MBUF, 32,
+ 0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());