uint8_t tx_pkt_nb_segs = 1; /**< Number of segments in TXONLY packets */
uint16_t nb_pkt_per_burst = DEF_PKT_BURST; /**< Number of packets per burst. */
-uint16_t mb_mempool_cache = DEF_PKT_BURST; /**< Size of mbuf mempool cache. */
+uint16_t mb_mempool_cache = DEF_MBUF_CACHE; /**< Size of mbuf mempool cache. */
/* current configuration is in DCB or not,0 means it is not in DCB mode */
uint8_t dcb_config = 0;
*/
#define RX_PTHRESH 8 /**< Default value of RX prefetch threshold register. */
#define RX_HTHRESH 8 /**< Default value of RX host threshold register. */
-#define RX_WTHRESH 4 /**< Default value of RX write-back threshold register. */
+#define RX_WTHRESH 0 /**< Default value of RX write-back threshold register. */
-#define TX_PTHRESH 36 /**< Default value of TX prefetch threshold register. */
+#define TX_PTHRESH 32 /**< Default value of TX prefetch threshold register. */
#define TX_HTHRESH 0 /**< Default value of TX host threshold register. */
#define TX_WTHRESH 0 /**< Default value of TX write-back threshold register. */
/*
* Receive Side Scaling (RSS) configuration.
*/
-uint16_t rss_hf = ETH_RSS_IPV4 | ETH_RSS_IPV6; /* RSS IP by default. */
+uint64_t rss_hf = ETH_RSS_IP; /* RSS IP by default. */
/*
* Port topology configuration
.drop_queue = 127,
};
-static volatile int test_done = 1; /* stop packet forwarding when set to 1. */
+volatile int test_done = 1; /* stop packet forwarding when set to 1. */
struct queue_stats_mappings tx_queue_stats_mappings_array[MAX_TX_QUEUE_STATS_MAPPINGS];
struct queue_stats_mappings rx_queue_stats_mappings_array[MAX_RX_QUEUE_STATS_MAPPINGS];
mb_ctor_arg = (struct mbuf_ctor_arg *) opaque_arg;
mb = (struct rte_mbuf *) raw_mbuf;
- mb->type = RTE_MBUF_PKT;
mb->pool = mp;
mb->buf_addr = (void *) ((char *)mb + mb_ctor_arg->seg_buf_offset);
mb->buf_physaddr = (uint64_t) (rte_mempool_virt2phy(mp, mb) +
mb_ctor_arg->seg_buf_offset);
mb->buf_len = mb_ctor_arg->seg_buf_size;
- mb->type = RTE_MBUF_PKT;
mb->ol_flags = 0;
mb->pkt.data = (char *) mb->buf_addr + RTE_PKTMBUF_HEADROOM;
mb->pkt.nb_segs = 1;
* Records which Mbuf pool to use by each logical core, if needed.
*/
for (lc_id = 0; lc_id < nb_lcores; lc_id++) {
- mbp = mbuf_pool_find(rte_lcore_to_socket_id(lc_id));
+ mbp = mbuf_pool_find(
+ rte_lcore_to_socket_id(fwd_lcores_cpuids[lc_id]));
+
if (mbp == NULL)
mbp = mbuf_pool_find(0);
fwd_lcores[lc_id]->mbp = mbp;
rte_exit(EXIT_FAILURE, "FAIL from init_fwd_streams()\n");
}
+
+void
+reconfig(portid_t new_port_id)
+{
+ struct rte_port *port;
+
+ /* Reconfiguration of Ethernet ports. */
+ ports = rte_realloc(ports,
+ sizeof(struct rte_port) * nb_ports,
+ CACHE_LINE_SIZE);
+ if (ports == NULL) {
+ rte_exit(EXIT_FAILURE, "rte_realloc(%d struct rte_port) failed\n",
+ nb_ports);
+ }
+
+ port = &ports[new_port_id];
+ rte_eth_dev_info_get(new_port_id, &port->dev_info);
+
+ /* set flag to initialize port/queue */
+ port->need_reconfig = 1;
+ port->need_reconfig_queues = 1;
+
+ init_port_config();
+}
+
+
int
init_fwd_streams(void)
{
if ((!port->rx_queue_stats_mapping_enabled) && (!port->tx_queue_stats_mapping_enabled)) {
printf(" RX-packets: %-14"PRIu64" RX-dropped: %-14"PRIu64"RX-total: "
"%-"PRIu64"\n",
- stats->ipackets, stats->ierrors,
- (uint64_t) (stats->ipackets + stats->ierrors));
+ stats->ipackets, stats->imissed,
+ (uint64_t) (stats->ipackets + stats->imissed));
if (cur_fwd_eng == &csum_fwd_engine)
printf(" Bad-ipcsum: %-14"PRIu64" Bad-l4csum: %-14"PRIu64" \n",
port->rx_bad_ip_csum, port->rx_bad_l4_csum);
+ if (((stats->ierrors - stats->imissed) + stats->rx_nombuf) > 0) {
+ printf(" RX-badcrc: %-14"PRIu64" RX-badlen: %-14"PRIu64
+ "RX-error: %-"PRIu64"\n",
+ stats->ibadcrc, stats->ibadlen, stats->ierrors);
+ printf(" RX-nombufs: %-14"PRIu64"\n", stats->rx_nombuf);
+ }
printf(" TX-packets: %-14"PRIu64" TX-dropped: %-14"PRIu64"TX-total: "
"%-"PRIu64"\n",
stats->opackets, port->tx_dropped,
(uint64_t) (stats->opackets + port->tx_dropped));
-
- if (stats->rx_nombuf > 0)
- printf(" RX-nombufs: %-14"PRIu64"\n", stats->rx_nombuf);
-
}
else {
printf(" RX-packets: %14"PRIu64" RX-dropped:%14"PRIu64" RX-total:"
"%14"PRIu64"\n",
- stats->ipackets, stats->ierrors,
- (uint64_t) (stats->ipackets + stats->ierrors));
+ stats->ipackets, stats->imissed,
+ (uint64_t) (stats->ipackets + stats->imissed));
if (cur_fwd_eng == &csum_fwd_engine)
printf(" Bad-ipcsum:%14"PRIu64" Bad-l4csum:%14"PRIu64"\n",
port->rx_bad_ip_csum, port->rx_bad_l4_csum);
+ if (((stats->ierrors - stats->imissed) + stats->rx_nombuf) > 0) {
+ printf(" RX-badcrc: %14"PRIu64" RX-badlen: %14"PRIu64
+ " RX-error:%"PRIu64"\n",
+ stats->ibadcrc, stats->ibadlen, stats->ierrors);
+ printf(" RX-nombufs: %14"PRIu64"\n",
+ stats->rx_nombuf);
+ }
printf(" TX-packets: %14"PRIu64" TX-dropped:%14"PRIu64" TX-total:"
"%14"PRIu64"\n",
stats->opackets, port->tx_dropped,
(uint64_t) (stats->opackets + port->tx_dropped));
-
- if (stats->rx_nombuf > 0)
- printf(" RX-nombufs:%14"PRIu64"\n", stats->rx_nombuf);
}
/* Display statistics of XON/XOFF pause frames, if any. */
port->stats.ibytes = 0;
stats.obytes -= port->stats.obytes;
port->stats.obytes = 0;
- stats.ierrors -= port->stats.ierrors;
- port->stats.ierrors = 0;
+ stats.imissed -= port->stats.imissed;
+ port->stats.imissed = 0;
stats.oerrors -= port->stats.oerrors;
port->stats.oerrors = 0;
stats.rx_nombuf -= port->stats.rx_nombuf;
total_recv += stats.ipackets;
total_xmit += stats.opackets;
- total_rx_dropped += stats.ierrors;
+ total_rx_dropped += stats.imissed;
total_tx_dropped += port->tx_dropped;
total_rx_nombuf += stats.rx_nombuf;
portid_t pi;
queueid_t qi;
struct rte_port *port;
- uint8_t *mac_addr;
+ struct ether_addr mac_addr;
if (test_done == 0) {
printf("Please stop forwarding first\n");
RTE_PORT_HANDLING, RTE_PORT_STARTED) == 0)
printf("Port %d can not be set into started\n", pi);
- mac_addr = port->eth_addr.addr_bytes;
+ rte_eth_macaddr_get(pi, &mac_addr);
printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi,
- mac_addr[0], mac_addr[1], mac_addr[2],
- mac_addr[3], mac_addr[4], mac_addr[5]);
+ mac_addr.addr_bytes[0], mac_addr.addr_bytes[1],
+ mac_addr.addr_bytes[2], mac_addr.addr_bytes[3],
+ mac_addr.addr_bytes[4], mac_addr.addr_bytes[5]);
/* at least one port started, need checking link status */
need_check_link_status = 1;
return 1;
}
+int
+port_is_started(portid_t port_id)
+{
+ if (port_id_is_invalid(port_id))
+ return -1;
+
+ if (ports[port_id].port_status != RTE_PORT_STARTED)
+ return 0;
+
+ return 1;
+}
+
void
pmd_test_exit(void)
{
if (diag < 0)
rte_panic("Cannot init EAL\n");
- if (rte_eal_pci_probe())
- rte_panic("Cannot probe PCI\n");
-
nb_ports = (portid_t) rte_eth_dev_count();
if (nb_ports == 0)
rte_exit(EXIT_FAILURE, "No probed ethernet devices - "