log: introduce logtype register macro
[dpdk.git] / drivers / net / i40e / i40e_ethdev.c
index 749d85f..472ce2a 100644 (file)
@@ -398,18 +398,6 @@ static void i40e_tunnel_filter_restore(struct i40e_pf *pf);
 static void i40e_filter_restore(struct i40e_pf *pf);
 static void i40e_notify_all_vfs_link_status(struct rte_eth_dev *dev);
 
-int i40e_logtype_init;
-int i40e_logtype_driver;
-#ifdef RTE_LIBRTE_I40E_DEBUG_RX
-int i40e_logtype_rx;
-#endif
-#ifdef RTE_LIBRTE_I40E_DEBUG_TX
-int i40e_logtype_tx;
-#endif
-#ifdef RTE_LIBRTE_I40E_DEBUG_TX_FREE
-int i40e_logtype_tx_free;
-#endif
-
 static const char *const valid_keys[] = {
        ETH_I40E_FLOATING_VEB_ARG,
        ETH_I40E_FLOATING_VEB_LIST_ARG,
@@ -2280,6 +2268,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
        struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
        uint32_t intr_vector = 0;
        struct i40e_vsi *vsi;
+       uint16_t nb_rxq, nb_txq;
 
        hw->adapter_stopped = 0;
 
@@ -2311,7 +2300,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
        ret = i40e_dev_rxtx_init(pf);
        if (ret != I40E_SUCCESS) {
                PMD_DRV_LOG(ERR, "Failed to init rx/tx queues");
-               goto err_up;
+               return ret;
        }
 
        /* Map queues with MSIX interrupt */
@@ -2336,10 +2325,16 @@ i40e_dev_start(struct rte_eth_dev *dev)
        }
 
        /* Enable all queues which have been configured */
-       ret = i40e_dev_switch_queues(pf, TRUE);
-       if (ret != I40E_SUCCESS) {
-               PMD_DRV_LOG(ERR, "Failed to enable VSI");
-               goto err_up;
+       for (nb_rxq = 0; nb_rxq < dev->data->nb_rx_queues; nb_rxq++) {
+               ret = i40e_dev_rx_queue_start(dev, nb_rxq);
+               if (ret)
+                       goto rx_err;
+       }
+
+       for (nb_txq = 0; nb_txq < dev->data->nb_tx_queues; nb_txq++) {
+               ret = i40e_dev_tx_queue_start(dev, nb_txq);
+               if (ret)
+                       goto tx_err;
        }
 
        /* Enable receiving broadcast packets */
@@ -2369,7 +2364,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
                ret = i40e_aq_set_lb_modes(hw, dev->data->dev_conf.lpbk_mode, NULL);
                if (ret != I40E_SUCCESS) {
                        PMD_DRV_LOG(ERR, "fail to set loopback link");
-                       goto err_up;
+                       goto tx_err;
                }
        }
 
@@ -2377,7 +2372,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
        ret = i40e_apply_link_speed(dev);
        if (I40E_SUCCESS != ret) {
                PMD_DRV_LOG(ERR, "Fail to apply link setting");
-               goto err_up;
+               goto tx_err;
        }
 
        if (!rte_intr_allow_others(intr_handle)) {
@@ -2420,9 +2415,12 @@ i40e_dev_start(struct rte_eth_dev *dev)
 
        return I40E_SUCCESS;
 
-err_up:
-       i40e_dev_switch_queues(pf, FALSE);
-       i40e_dev_clear_queues(dev);
+tx_err:
+       for (i = 0; i < nb_txq; i++)
+               i40e_dev_tx_queue_stop(dev, i);
+rx_err:
+       for (i = 0; i < nb_rxq; i++)
+               i40e_dev_rx_queue_stop(dev, i);
 
        return ret;
 }
@@ -2446,7 +2444,11 @@ i40e_dev_stop(struct rte_eth_dev *dev)
        }
 
        /* Disable all queues */
-       i40e_dev_switch_queues(pf, FALSE);
+       for (i = 0; i < dev->data->nb_tx_queues; i++)
+               i40e_dev_tx_queue_stop(dev, i);
+
+       for (i = 0; i < dev->data->nb_rx_queues; i++)
+               i40e_dev_rx_queue_stop(dev, i);
 
        /* un-map queues with interrupt registers */
        i40e_vsi_disable_queues_intr(main_vsi);
@@ -4935,6 +4937,7 @@ i40e_res_pool_free(struct i40e_res_pool_info *pool,
 {
        struct pool_entry *entry, *next, *prev, *valid_entry = NULL;
        uint32_t pool_offset;
+       uint16_t len;
        int insert;
 
        if (pool == NULL) {
@@ -4973,12 +4976,13 @@ i40e_res_pool_free(struct i40e_res_pool_info *pool,
        }
 
        insert = 0;
+       len = valid_entry->len;
        /* Try to merge with next one*/
        if (next != NULL) {
                /* Merge with next one */
-               if (valid_entry->base + valid_entry->len == next->base) {
+               if (valid_entry->base + len == next->base) {
                        next->base = valid_entry->base;
-                       next->len += valid_entry->len;
+                       next->len += len;
                        rte_free(valid_entry);
                        valid_entry = next;
                        insert = 1;
@@ -4988,13 +4992,15 @@ i40e_res_pool_free(struct i40e_res_pool_info *pool,
        if (prev != NULL) {
                /* Merge with previous one */
                if (prev->base + prev->len == valid_entry->base) {
-                       prev->len += valid_entry->len;
+                       prev->len += len;
                        /* If it merge with next one, remove next node */
                        if (insert == 1) {
                                LIST_REMOVE(valid_entry, next);
                                rte_free(valid_entry);
+                               valid_entry = NULL;
                        } else {
                                rte_free(valid_entry);
+                               valid_entry = NULL;
                                insert = 1;
                        }
                }
@@ -5010,8 +5016,8 @@ i40e_res_pool_free(struct i40e_res_pool_info *pool,
                        LIST_INSERT_HEAD(&pool->free_list, valid_entry, next);
        }
 
-       pool->num_free += valid_entry->len;
-       pool->num_alloc -= valid_entry->len;
+       pool->num_free += len;
+       pool->num_alloc -= len;
 
        return 0;
 }
@@ -6282,33 +6288,6 @@ i40e_switch_tx_queue(struct i40e_hw *hw, uint16_t q_idx, bool on)
        return I40E_SUCCESS;
 }
 
-/* Swith on or off the tx queues */
-static int
-i40e_dev_switch_tx_queues(struct i40e_pf *pf, bool on)
-{
-       struct rte_eth_dev_data *dev_data = pf->dev_data;
-       struct i40e_tx_queue *txq;
-       struct rte_eth_dev *dev = pf->adapter->eth_dev;
-       uint16_t i;
-       int ret;
-
-       for (i = 0; i < dev_data->nb_tx_queues; i++) {
-               txq = dev_data->tx_queues[i];
-               /* Don't operate the queue if not configured or
-                * if starting only per queue */
-               if (!txq || !txq->q_set || (on && txq->tx_deferred_start))
-                       continue;
-               if (on)
-                       ret = i40e_dev_tx_queue_start(dev, i);
-               else
-                       ret = i40e_dev_tx_queue_stop(dev, i);
-               if ( ret != I40E_SUCCESS)
-                       return ret;
-       }
-
-       return I40E_SUCCESS;
-}
-
 int
 i40e_switch_rx_queue(struct i40e_hw *hw, uint16_t q_idx, bool on)
 {
@@ -6360,59 +6339,6 @@ i40e_switch_rx_queue(struct i40e_hw *hw, uint16_t q_idx, bool on)
 
        return I40E_SUCCESS;
 }
-/* Switch on or off the rx queues */
-static int
-i40e_dev_switch_rx_queues(struct i40e_pf *pf, bool on)
-{
-       struct rte_eth_dev_data *dev_data = pf->dev_data;
-       struct i40e_rx_queue *rxq;
-       struct rte_eth_dev *dev = pf->adapter->eth_dev;
-       uint16_t i;
-       int ret;
-
-       for (i = 0; i < dev_data->nb_rx_queues; i++) {
-               rxq = dev_data->rx_queues[i];
-               /* Don't operate the queue if not configured or
-                * if starting only per queue */
-               if (!rxq || !rxq->q_set || (on && rxq->rx_deferred_start))
-                       continue;
-               if (on)
-                       ret = i40e_dev_rx_queue_start(dev, i);
-               else
-                       ret = i40e_dev_rx_queue_stop(dev, i);
-               if (ret != I40E_SUCCESS)
-                       return ret;
-       }
-
-       return I40E_SUCCESS;
-}
-
-/* Switch on or off all the rx/tx queues */
-int
-i40e_dev_switch_queues(struct i40e_pf *pf, bool on)
-{
-       int ret;
-
-       if (on) {
-               /* enable rx queues before enabling tx queues */
-               ret = i40e_dev_switch_rx_queues(pf, on);
-               if (ret) {
-                       PMD_DRV_LOG(ERR, "Failed to switch rx queues");
-                       return ret;
-               }
-               ret = i40e_dev_switch_tx_queues(pf, on);
-       } else {
-               /* Stop tx queues before stopping rx queues */
-               ret = i40e_dev_switch_tx_queues(pf, on);
-               if (ret) {
-                       PMD_DRV_LOG(ERR, "Failed to switch tx queues");
-                       return ret;
-               }
-               ret = i40e_dev_switch_rx_queues(pf, on);
-       }
-
-       return ret;
-}
 
 /* Initialize VSI for TX */
 static int
@@ -13179,6 +13105,9 @@ i40e_rss_config_hash_function(struct i40e_pf *pf,
                                break;
                }
 
+               if (i == UINT64_BIT)
+                       return -EINVAL;
+
                for (j = I40E_FILTER_PCTYPE_INVALID + 1;
                     j < I40E_FILTER_PCTYPE_MAX; j++) {
                        if (pf->adapter->pctypes_tbl[i] & (1ULL << j))
@@ -13311,6 +13240,9 @@ i40e_rss_clear_hash_function(struct i40e_pf *pf,
                                break;
                }
 
+               if (i == UINT64_BIT)
+                       return -EINVAL;
+
                for (j = I40E_FILTER_PCTYPE_INVALID + 1;
                     j < I40E_FILTER_PCTYPE_MAX; j++) {
                        if (pf->adapter->pctypes_tbl[i] & (1ULL << j))
@@ -13467,33 +13399,17 @@ i40e_config_rss_filter(struct i40e_pf *pf,
        return 0;
 }
 
-RTE_INIT(i40e_init_log)
-{
-       i40e_logtype_init = rte_log_register("pmd.net.i40e.init");
-       if (i40e_logtype_init >= 0)
-               rte_log_set_level(i40e_logtype_init, RTE_LOG_NOTICE);
-       i40e_logtype_driver = rte_log_register("pmd.net.i40e.driver");
-       if (i40e_logtype_driver >= 0)
-               rte_log_set_level(i40e_logtype_driver, RTE_LOG_NOTICE);
-
+RTE_LOG_REGISTER(i40e_logtype_init, pmd.net.i40e.init, NOTICE);
+RTE_LOG_REGISTER(i40e_logtype_driver, pmd.net.i40e.driver, NOTICE);
 #ifdef RTE_LIBRTE_I40E_DEBUG_RX
-       i40e_logtype_rx = rte_log_register("pmd.net.i40e.rx");
-       if (i40e_logtype_rx >= 0)
-               rte_log_set_level(i40e_logtype_rx, RTE_LOG_DEBUG);
+RTE_LOG_REGISTER(i40e_logtype_rx, pmd.net.i40e.rx, DEBUG);
 #endif
-
 #ifdef RTE_LIBRTE_I40E_DEBUG_TX
-       i40e_logtype_tx = rte_log_register("pmd.net.i40e.tx");
-       if (i40e_logtype_tx >= 0)
-               rte_log_set_level(i40e_logtype_tx, RTE_LOG_DEBUG);
+RTE_LOG_REGISTER(i40e_logtype_tx, pmd.net.i40e.tx, DEBUG);
 #endif
-
 #ifdef RTE_LIBRTE_I40E_DEBUG_TX_FREE
-       i40e_logtype_tx_free = rte_log_register("pmd.net.i40e.tx_free");
-       if (i40e_logtype_tx_free >= 0)
-               rte_log_set_level(i40e_logtype_tx_free, RTE_LOG_DEBUG);
+RTE_LOG_REGISTER(i40e_logtype_tx_free, pmd.net.i40e.tx_free, DEBUG);
 #endif
-}
 
 RTE_PMD_REGISTER_PARAM_STRING(net_i40e,
                              ETH_I40E_FLOATING_VEB_ARG "=1"