when changing verbosity level it will configure rx/tx callbacks to dump
packets based on the verbosity value as following:
    1- dump only received packets:
       testpmd> set verbose 1
    2- dump only sent packets:
       testpmd> set verbose 2
    3- dump sent and received packets:
       testpmd> set verbose (any number > 2)
    4- disable dump
       testpmd> set verbose 0

Signed-off-by: Raslan Darawsheh <rasl...@mellanox.com>
---
 app/test-pmd/config.c  | 25 +++++++++++++++++++++++++
 app/test-pmd/testpmd.c |  4 ++--
 app/test-pmd/testpmd.h |  1 +
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index fb45fea..f402e04 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -50,6 +50,7 @@
 #endif
 #include <rte_gro.h>
 #include <cmdline_parse_etheraddr.h>
+#include <rte_config.h>
 
 #include "testpmd.h"
 
@@ -2963,11 +2964,35 @@ remove_tx_dump_callbacks(portid_t portid)
 }
 
 void
+configure_rxtx_dump_callbacks(uint16_t verbose)
+{
+       portid_t portid;
+
+#ifndef RTE_ETHDEV_RXTX_CALLBACKS
+               TESTPMD_LOG(ERR, "setting rxtx callbacks is not enabled\n");
+               return;
+#endif
+
+       RTE_ETH_FOREACH_DEV(portid)
+       {
+               if (verbose == 1 || verbose > 2)
+                       add_rx_dump_callbacks(portid);
+               else
+                       remove_rx_dump_callbacks(portid);
+               if (verbose >= 2)
+                       add_tx_dump_callbacks(portid);
+               else
+                       remove_tx_dump_callbacks(portid);
+       }
+}
+
+void
 set_verbose_level(uint16_t vb_level)
 {
        printf("Change verbose level from %u to %u\n",
               (unsigned int) verbose_level, (unsigned int) vb_level);
        verbose_level = vb_level;
+       configure_rxtx_dump_callbacks(verbose_level);
 }
 
 void
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 571ecb4..538723c 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1665,7 +1665,7 @@ start_port(portid_t pid)
                                        return -1;
                                }
                        }
-
+                       configure_rxtx_dump_callbacks(0);
                        printf("Configuring Port %d (socket %u)\n", pi,
                                        port->socket_id);
                        /* configure port */
@@ -1764,7 +1764,7 @@ start_port(portid_t pid)
                                return -1;
                        }
                }
-
+               configure_rxtx_dump_callbacks(verbose_level);
                /* start port */
                if (rte_eth_dev_start(pi) < 0) {
                        printf("Fail to start port %d\n", pi);
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index c0d7656..e68710d 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -757,6 +757,7 @@ void add_rx_dump_callbacks(portid_t portid);
 void remove_rx_dump_callbacks(portid_t portid);
 void add_tx_dump_callbacks(portid_t portid);
 void remove_tx_dump_callbacks(portid_t portid);
+void configure_rxtx_dump_callbacks(uint16_t verbose);
 
 /*
  * Work-around of a compilation error with ICC on invocations of the
-- 
2.7.4

Reply via email to