ethdev: remove deprecated statistics
[dpdk.git] / drivers / net / i40e / i40e_ethdev.c
index cde314d..d8b6bd7 100644 (file)
@@ -1381,27 +1381,20 @@ i40e_vsi_disable_queues_intr(struct i40e_vsi *vsi)
 }
 
 static inline uint8_t
-i40e_parse_link_speed(uint16_t eth_link_speed)
+i40e_parse_link_speeds(uint16_t link_speeds)
 {
        uint8_t link_speed = I40E_LINK_SPEED_UNKNOWN;
 
-       switch (eth_link_speed) {
-       case ETH_SPEED_NUM_40G:
-               link_speed = I40E_LINK_SPEED_40GB;
-               break;
-       case ETH_SPEED_NUM_20G:
-               link_speed = I40E_LINK_SPEED_20GB;
-               break;
-       case ETH_SPEED_NUM_10G:
-               link_speed = I40E_LINK_SPEED_10GB;
-               break;
-       case ETH_SPEED_NUM_1G:
-               link_speed = I40E_LINK_SPEED_1GB;
-               break;
-       case ETH_SPEED_NUM_100M:
-               link_speed = I40E_LINK_SPEED_100MB;
-               break;
-       }
+       if (link_speeds & ETH_LINK_SPEED_40G)
+               link_speed |= I40E_LINK_SPEED_40GB;
+       if (link_speeds & ETH_LINK_SPEED_20G)
+               link_speed |= I40E_LINK_SPEED_20GB;
+       if (link_speeds & ETH_LINK_SPEED_10G)
+               link_speed |= I40E_LINK_SPEED_10GB;
+       if (link_speeds & ETH_LINK_SPEED_1G)
+               link_speed |= I40E_LINK_SPEED_1GB;
+       if (link_speeds & ETH_LINK_SPEED_100M)
+               link_speed |= I40E_LINK_SPEED_100MB;
 
        return link_speed;
 }
@@ -1427,9 +1420,9 @@ i40e_apply_link_speed(struct rte_eth_dev *dev)
        struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
        struct rte_eth_conf *conf = &dev->data->dev_conf;
 
-       speed = i40e_parse_link_speed(conf->link_speed);
+       speed = i40e_parse_link_speeds(conf->link_speeds);
        abilities |= I40E_AQ_PHY_ENABLE_ATOMIC_LINK;
-       if (conf->link_speed == ETH_LINK_SPEED_AUTONEG)
+       if (!(conf->link_speeds & ETH_LINK_SPEED_FIXED))
                abilities |= I40E_AQ_PHY_AN_ENABLED;
        else
                abilities |= I40E_AQ_PHY_LINK_ENABLED;
@@ -1449,10 +1442,8 @@ i40e_dev_start(struct rte_eth_dev *dev)
 
        hw->adapter_stopped = 0;
 
-       if ((dev->data->dev_conf.link_duplex != ETH_LINK_AUTONEG_DUPLEX) &&
-               (dev->data->dev_conf.link_duplex != ETH_LINK_FULL_DUPLEX)) {
-               PMD_INIT_LOG(ERR, "Invalid link_duplex (%hu) for port %hhu",
-                            dev->data->dev_conf.link_duplex,
+       if (dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED) {
+               PMD_INIT_LOG(ERR, "Invalid link_speeds for port %hhu; autonegotiation disabled",
                             dev->data->port_id);
                return -EINVAL;
        }
@@ -1525,6 +1516,12 @@ i40e_dev_start(struct rte_eth_dev *dev)
        }
 
        /* Apply link configure */
+       if (dev->data->dev_conf.link_speeds & ~(ETH_LINK_SPEED_100M |
+                               ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G |
+                               ETH_LINK_SPEED_20G | ETH_LINK_SPEED_40G)) {
+               PMD_DRV_LOG(ERR, "Invalid link setting");
+               goto err_up;
+       }
        ret = i40e_apply_link_speed(dev);
        if (I40E_SUCCESS != ret) {
                PMD_DRV_LOG(ERR, "Fail to apply link setting");
@@ -1809,6 +1806,9 @@ i40e_dev_link_update(struct rte_eth_dev *dev,
                break;
        }
 
+       link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+                       ETH_LINK_SPEED_FIXED);
+
 out:
        rte_i40e_dev_atomic_write_link_status(dev, &link);
        if (link.link_status == old.link_status)
@@ -2099,7 +2099,6 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
        stats->obytes   = ns->eth.tx_bytes;
        stats->oerrors  = ns->eth.tx_errors +
                        pf->main_vsi->eth_stats.tx_errors;
-       stats->imcasts  = pf->main_vsi->eth_stats.rx_multicast;
 
        /* Rx Errors */
        stats->imissed  = ns->eth.rx_discards +