app/testpmd: fix TC mapping in DCB init config
[dpdk.git] / app / test-pmd / testpmd.c
index a0332c2..484c19b 100644 (file)
@@ -78,6 +78,7 @@
 #ifdef RTE_LIBRTE_PDUMP
 #include <rte_pdump.h>
 #endif
+#include <rte_flow.h>
 
 #include "testpmd.h"
 
@@ -110,7 +111,7 @@ uint8_t mp_anon = 0;
 /*
  * Record the Ethernet address of peer target ports to which packets are
  * forwarded.
- * Must be instanciated with the ethernet addresses of peer traffic generator
+ * Must be instantiated with the ethernet addresses of peer traffic generator
  * ports.
  */
 struct ether_addr peer_eth_addrs[RTE_MAX_ETHPORTS];
@@ -1545,6 +1546,8 @@ close_port(portid_t pid)
                        continue;
                }
 
+               if (port->flow_list)
+                       port_flow_flush(pi);
                rte_eth_dev_close(pi);
 
                if (rte_atomic16_cmpset(&(port->port_status),
@@ -1599,6 +1602,9 @@ detach_port(uint8_t port_id)
                return;
        }
 
+       if (ports[port_id].flow_list)
+               port_flow_flush(port_id);
+
        if (rte_eth_dev_detach(port_id, name))
                return;
 
@@ -1829,24 +1835,13 @@ init_port_config(void)
                        port->dev_conf.rx_adv_conf.rss_conf.rss_hf = 0;
                }
 
-               if (port->dcb_flag == 0 && port->dev_info.max_vfs == 0) {
+               if (port->dcb_flag == 0) {
                        if( port->dev_conf.rx_adv_conf.rss_conf.rss_hf != 0)
                                port->dev_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
                        else
                                port->dev_conf.rxmode.mq_mode = ETH_MQ_RX_NONE;
                }
 
-               if (port->dev_info.max_vfs != 0) {
-                       if (port->dev_conf.rx_adv_conf.rss_conf.rss_hf != 0)
-                               port->dev_conf.rxmode.mq_mode =
-                                       ETH_MQ_RX_VMDQ_RSS;
-                       else
-                               port->dev_conf.rxmode.mq_mode =
-                                       ETH_MQ_RX_NONE;
-
-                       port->dev_conf.txmode.mq_mode = ETH_MQ_TX_NONE;
-               }
-
                rxtx_port_config(port);
 
                rte_eth_macaddr_get(pid, &port->eth_addr);
@@ -1907,7 +1902,7 @@ get_eth_dcb_conf(struct rte_eth_conf *eth_conf,
                struct rte_eth_vmdq_dcb_tx_conf *vmdq_tx_conf =
                                &eth_conf->tx_adv_conf.vmdq_dcb_tx_conf;
 
-               /* VMDQ+DCB RX and TX configrations */
+               /* VMDQ+DCB RX and TX configurations */
                vmdq_rx_conf->enable_default_pool = 0;
                vmdq_rx_conf->default_pool = 0;
                vmdq_rx_conf->nb_queue_pools =
@@ -1938,9 +1933,9 @@ get_eth_dcb_conf(struct rte_eth_conf *eth_conf,
                rx_conf->nb_tcs = num_tcs;
                tx_conf->nb_tcs = num_tcs;
 
-               for (i = 0; i < num_tcs; i++) {
-                       rx_conf->dcb_tc[i] = i;
-                       tx_conf->dcb_tc[i] = i;
+               for (i = 0; i < ETH_DCB_NUM_USER_PRIORITIES; i++) {
+                       rx_conf->dcb_tc[i] = i % num_tcs;
+                       tx_conf->dcb_tc[i] = i % num_tcs;
                }
                eth_conf->rxmode.mq_mode = ETH_MQ_RX_DCB_RSS;
                eth_conf->rx_adv_conf.rss_conf.rss_hf = rss_hf;