net/i40e: use dynamic log type for control logs
authorOlivier Matz <olivier.matz@6wind.com>
Tue, 4 Apr 2017 16:40:40 +0000 (18:40 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 5 Apr 2017 11:48:45 +0000 (13:48 +0200)
This is an example of how a dynamic log type can be used in a
PMD.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
config/common_base
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_fdir.c
drivers/net/i40e/i40e_logs.h

index 0c135ef..5bdba1d 100644 (file)
@@ -179,11 +179,9 @@ CONFIG_RTE_IXGBE_RX_OLFLAGS_ENABLE=y
 # Compile burst-oriented I40E PMD driver
 #
 CONFIG_RTE_LIBRTE_I40E_PMD=y
-CONFIG_RTE_LIBRTE_I40E_DEBUG_INIT=n
 CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
 CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
 CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
-CONFIG_RTE_LIBRTE_I40E_DEBUG_DRIVER=n
 CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
 CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
 CONFIG_RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE=y
index f8c0310..cb8bf2b 100644 (file)
@@ -40,6 +40,7 @@
 #include <inttypes.h>
 #include <assert.h>
 
+#include <rte_eal.h>
 #include <rte_string_fns.h>
 #include <rte_pci.h>
 #include <rte_ether.h>
@@ -429,6 +430,9 @@ static void i40e_ethertype_filter_restore(struct i40e_pf *pf);
 static void i40e_tunnel_filter_restore(struct i40e_pf *pf);
 static void i40e_filter_restore(struct i40e_pf *pf);
 
+int i40e_logtype_init;
+int i40e_logtype_driver;
+
 static const struct rte_pci_id pci_id_i40e_map[] = {
        { RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_SFP_XL710) },
        { RTE_PCI_DEVICE(I40E_INTEL_VENDOR_ID, I40E_DEV_ID_QEMU) },
@@ -5830,7 +5834,6 @@ i40e_dev_interrupt_handler(struct rte_intr_handle *intr_handle,
                PMD_DRV_LOG(INFO, "No interrupt event");
                goto done;
        }
-#ifdef RTE_LIBRTE_I40E_DEBUG_DRIVER
        if (icr0 & I40E_PFINT_ICR0_ECC_ERR_MASK)
                PMD_DRV_LOG(ERR, "ICR0: unrecoverable ECC error");
        if (icr0 & I40E_PFINT_ICR0_MAL_DETECT_MASK)
@@ -5845,7 +5848,6 @@ i40e_dev_interrupt_handler(struct rte_intr_handle *intr_handle,
                PMD_DRV_LOG(ERR, "ICR0: HMC error");
        if (icr0 & I40E_PFINT_ICR0_PE_CRITERR_MASK)
                PMD_DRV_LOG(ERR, "ICR0: protocol engine critical error");
-#endif /* RTE_LIBRTE_I40E_DEBUG_DRIVER */
 
        if (icr0 & I40E_PFINT_ICR0_VFLR_MASK) {
                PMD_DRV_LOG(INFO, "ICR0: VF reset detected");
@@ -12447,3 +12449,15 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
                        &filter_replace_buf);
        return ret;
 }
+
+RTE_INIT(i40e_init_log);
+static void
+i40e_init_log(void)
+{
+       i40e_logtype_init = rte_log_register("pmd.i40e.init");
+       if (i40e_logtype_init >= 0)
+               rte_log_set_level(i40e_logtype_init, RTE_LOG_NOTICE);
+       i40e_logtype_driver = rte_log_register("pmd.i40e.driver");
+       if (i40e_logtype_driver >= 0)
+               rte_log_set_level(i40e_logtype_driver, RTE_LOG_NOTICE);
+}
index 0700253..32d3b19 100644 (file)
@@ -1592,17 +1592,14 @@ i40e_fdir_filter_restore(struct i40e_pf *pf)
        struct rte_eth_dev *dev = I40E_VSI_TO_ETH_DEV(pf->main_vsi);
        struct i40e_fdir_filter_list *fdir_list = &pf->fdir.fdir_list;
        struct i40e_fdir_filter *f;
-#ifdef RTE_LIBRTE_I40E_DEBUG_DRIVER
        struct i40e_hw *hw = I40E_PF_TO_HW(pf);
        uint32_t fdstat;
        uint32_t guarant_cnt;  /**< Number of filters in guaranteed spaces. */
        uint32_t best_cnt;     /**< Number of filters in best effort spaces. */
-#endif /* RTE_LIBRTE_I40E_DEBUG_DRIVER */
 
        TAILQ_FOREACH(f, fdir_list, rules)
                i40e_add_del_fdir_filter(dev, &f->fdir, TRUE);
 
-#ifdef RTE_LIBRTE_I40E_DEBUG_DRIVER
        fdstat = I40E_READ_REG(hw, I40E_PFQF_FDSTAT);
        guarant_cnt =
                (uint32_t)((fdstat & I40E_PFQF_FDSTAT_GUARANT_CNT_MASK) >>
@@ -1610,7 +1607,6 @@ i40e_fdir_filter_restore(struct i40e_pf *pf)
        best_cnt =
                (uint32_t)((fdstat & I40E_PFQF_FDSTAT_BEST_CNT_MASK) >>
                           I40E_PFQF_FDSTAT_BEST_CNT_SHIFT);
-#endif /* RTE_LIBRTE_I40E_DEBUG_DRIVER */
 
        PMD_DRV_LOG(INFO, "FDIR: Guarant count: %d,  Best count: %d",
                    guarant_cnt, best_cnt);
index e042e24..8e99cd5 100644 (file)
 #ifndef _I40E_LOGS_H_
 #define _I40E_LOGS_H_
 
+extern int i40e_logtype_init;
 #define PMD_INIT_LOG(level, fmt, args...) \
-       RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ##args)
-
-#ifdef RTE_LIBRTE_I40E_DEBUG_INIT
+       rte_log(RTE_LOG_ ## level, i40e_logtype_init, "%s(): " fmt "\n", \
+               __func__, ##args)
 #define PMD_INIT_FUNC_TRACE() PMD_INIT_LOG(DEBUG, " >>")
-#else
-#define PMD_INIT_FUNC_TRACE() do { } while(0)
-#endif
 
 #ifdef RTE_LIBRTE_I40E_DEBUG_RX
 #define PMD_RX_LOG(level, fmt, args...) \
 #define PMD_TX_FREE_LOG(level, fmt, args...) do { } while(0)
 #endif
 
-#ifdef RTE_LIBRTE_I40E_DEBUG_DRIVER
+extern int i40e_logtype_driver;
 #define PMD_DRV_LOG_RAW(level, fmt, args...) \
-       RTE_LOG(level, PMD, "%s(): " fmt, __func__, ## args)
-#else
-#define PMD_DRV_LOG_RAW(level, fmt, args...) do { } while (0)
-#endif
+       rte_log(RTE_LOG_ ## level, i40e_logtype_driver, "%s(): " fmt, \
+               __func__, ## args)
 
 #define PMD_DRV_LOG(level, fmt, args...) \
        PMD_DRV_LOG_RAW(level, fmt "\n", ## args)