Enable exception path for unmatched packets to go through queue 0.

Signed-off-by: Serhii Iliushyk <[email protected]>
---
 doc/guides/nics/ntnic.rst        |  9 +++++++++
 drivers/net/ntnic/ntnic_ethdev.c | 21 +++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/doc/guides/nics/ntnic.rst b/doc/guides/nics/ntnic.rst
index 5375d89a2d..01b6dca652 100644
--- a/doc/guides/nics/ntnic.rst
+++ b/doc/guides/nics/ntnic.rst
@@ -136,6 +136,15 @@ Multiple arguments for the same device are separated by 
‘,’ comma.
 
    By default, the value is set to 1.
 
+``exception_path`` parameter [int]
+
+   Enable exception path for unmatched packets to go through queue 0.
+
+   To enable exception_path::
+
+      -a <domain>:<bus>:00.0,exception_path=1
+
+   By default, the value is set to 0.
 
 Logging and Debugging
 ---------------------
diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index 01b3fe00ef..29508888a3 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -73,11 +73,13 @@ uint64_t rte_tsc_freq;
 #define ETH_DEV_NTNIC_HELP_ARG "help"
 #define ETH_DEV_NTHW_RXQUEUES_ARG "rxqs"
 #define ETH_DEV_NTHW_TXQUEUES_ARG "txqs"
+#define ETH_DEV_NTHW_EXCEPTION_PATH_ARG "exception_path"
 
 static const char *const valid_arguments[] = {
        ETH_DEV_NTNIC_HELP_ARG,
        ETH_DEV_NTHW_RXQUEUES_ARG,
        ETH_DEV_NTHW_TXQUEUES_ARG,
+       ETH_DEV_NTHW_EXCEPTION_PATH_ARG,
        NULL,
 };
 
@@ -2260,6 +2262,25 @@ nthw_pci_dev_init(struct rte_pci_device *pci_dev)
                        NT_LOG_DBGX(DBG, NTNIC, "devargs: %s=%u",
                                ETH_DEV_NTHW_TXQUEUES_ARG, nb_tx_queues);
                }
+
+               kvargs_count = rte_kvargs_count(kvlist, 
ETH_DEV_NTHW_EXCEPTION_PATH_ARG);
+
+               if (kvargs_count != 0) {
+                       assert(kvargs_count == 1);
+                       res = rte_kvargs_process(kvlist, 
ETH_DEV_NTHW_EXCEPTION_PATH_ARG,
+                                       &nthw_string_to_u32, &exception_path);
+
+                       if (res < 0) {
+                               NT_LOG_DBGX(ERR, NTNIC,
+                                       "problem with command line arguments: 
res=%d", res);
+                               return -1;
+                       }
+
+                       NT_LOG_DBGX(DBG, NTNIC, "devargs: %s=%u",
+                               ETH_DEV_NTHW_EXCEPTION_PATH_ARG, 
exception_path);
+               }
+
+               rte_kvargs_free(kvlist);
        }
 
 
-- 
2.45.0

Reply via email to