app/testpmd: verify DCB config during forward config
authorHuisong Li <lihuisong@huawei.com>
Wed, 28 Apr 2021 06:40:44 +0000 (14:40 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 29 Apr 2021 16:10:14 +0000 (18:10 +0200)
Currently, the check for doing DCB test is assigned to
start_packet_forwarding(), which will be called when
run "start" cmd. But fwd_config_setup() is used in many
scenarios, such as, "port config all rxq".

This patch moves the check from start_packet_forwarding()
to fwd_config_setup().

Fixes: 7741e4cf16c0 ("app/testpmd: VMDq and DCB updates")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
app/test-pmd/config.c
app/test-pmd/testpmd.c

index bbf039d..fc057e5 100644 (file)
@@ -3199,6 +3199,10 @@ icmp_echo_config_setup(void)
 void
 fwd_config_setup(void)
 {
+       struct rte_port *port;
+       portid_t pt_id;
+       unsigned int i;
+
        cur_fwd_config.fwd_eng = cur_fwd_eng;
        if (strcmp(cur_fwd_eng->fwd_mode_name, "icmpecho") == 0) {
                icmp_echo_config_setup();
@@ -3206,9 +3210,24 @@ fwd_config_setup(void)
        }
 
        if ((nb_rxq > 1) && (nb_txq > 1)){
-               if (dcb_config)
+               if (dcb_config) {
+                       for (i = 0; i < nb_fwd_ports; i++) {
+                               pt_id = fwd_ports_ids[i];
+                               port = &ports[pt_id];
+                               if (!port->dcb_flag) {
+                                       printf("In DCB mode, all forwarding ports must "
+                                               "be configured in this mode.\n");
+                                       return;
+                               }
+                       }
+                       if (nb_fwd_lcores == 1) {
+                               printf("In DCB mode,the nb forwarding cores "
+                                       "should be larger than 1.\n");
+                               return;
+                       }
+
                        dcb_fwd_config_setup();
-               else
+               else
                        rss_fwd_config_setup();
        }
        else
index a076b1d..abcbdaa 100644 (file)
@@ -2138,9 +2138,7 @@ start_packet_forwarding(int with_tx_first)
 {
        port_fwd_begin_t port_fwd_begin;
        port_fwd_end_t  port_fwd_end;
-       struct rte_port *port;
        unsigned int i;
-       portid_t   pt_id;
 
        if (strcmp(cur_fwd_eng->fwd_mode_name, "rxonly") == 0 && !nb_rxq)
                rte_exit(EXIT_FAILURE, "rxq are 0, cannot use rxonly fwd mode\n");
@@ -2163,23 +2161,6 @@ start_packet_forwarding(int with_tx_first)
                printf("Packet forwarding already started\n");
                return;
        }
-
-       if (dcb_config) {
-               for (i = 0; i < nb_fwd_ports; i++) {
-                       pt_id = fwd_ports_ids[i];
-                       port = &ports[pt_id];
-                       if (!port->dcb_flag) {
-                               printf("In DCB mode, all forwarding ports must "
-                                       "be configured in this mode.\n");
-                               return;
-                       }
-               }
-               if (nb_fwd_lcores == 1) {
-                       printf("In DCB mode,the nb forwarding cores "
-                               "should be larger than 1.\n");
-                       return;
-               }
-       }
        test_done = 0;
 
        fwd_config_setup();