ethdev: add speed capabilities
[dpdk.git] / drivers / net / e1000 / em_ethdev.c
index 1f0a7f4..890c5c3 100644 (file)
@@ -625,7 +625,7 @@ eth_em_start(struct rte_eth_dev *dev)
                else
                        goto error_invalid_config;
                break;
-       case ETH_LINK_SPEED_10:
+       case ETH_SPEED_NUM_10M:
                if (dev->data->dev_conf.link_duplex == ETH_LINK_AUTONEG_DUPLEX)
                        hw->phy.autoneg_advertised = E1000_ALL_10_SPEED;
                else if (dev->data->dev_conf.link_duplex ==
@@ -637,7 +637,7 @@ eth_em_start(struct rte_eth_dev *dev)
                else
                        goto error_invalid_config;
                break;
-       case ETH_LINK_SPEED_100:
+       case ETH_SPEED_NUM_100M:
                if (dev->data->dev_conf.link_duplex == ETH_LINK_AUTONEG_DUPLEX)
                        hw->phy.autoneg_advertised = E1000_ALL_100_SPEED;
                else if (dev->data->dev_conf.link_duplex ==
@@ -649,7 +649,7 @@ eth_em_start(struct rte_eth_dev *dev)
                else
                        goto error_invalid_config;
                break;
-       case ETH_LINK_SPEED_1000:
+       case ETH_SPEED_NUM_1G:
                if ((dev->data->dev_conf.link_duplex ==
                                ETH_LINK_AUTONEG_DUPLEX) ||
                        (dev->data->dev_conf.link_duplex ==
@@ -658,7 +658,7 @@ eth_em_start(struct rte_eth_dev *dev)
                else
                        goto error_invalid_config;
                break;
-       case ETH_LINK_SPEED_10000:
+       case ETH_SPEED_NUM_10G:
        default:
                goto error_invalid_config;
        }
@@ -666,13 +666,14 @@ eth_em_start(struct rte_eth_dev *dev)
 
        if (rte_intr_allow_others(intr_handle)) {
                /* check if lsc interrupt is enabled */
-               if (dev->data->dev_conf.intr_conf.lsc != 0)
+               if (dev->data->dev_conf.intr_conf.lsc != 0) {
                        ret = eth_em_interrupt_setup(dev);
                        if (ret) {
                                PMD_INIT_LOG(ERR, "Unable to setup interrupts");
                                em_dev_clear_queues(dev);
                                return ret;
                        }
+               }
        } else {
                rte_intr_callback_unregister(intr_handle,
                                                eth_em_interrupt_handler,
@@ -1054,6 +1055,10 @@ eth_em_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
                .nb_min = E1000_MIN_RING_DESC,
                .nb_align = EM_TXD_ALIGN,
        };
+
+       dev_info->speed_capa = ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M |
+                       ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M |
+                       ETH_LINK_SPEED_1G;
 }
 
 /* return 0 means link status changed, -1 means not changed */
@@ -1101,14 +1106,14 @@ eth_em_link_update(struct rte_eth_dev *dev, int wait_to_complete)
        old = link;
 
        /* Now we check if a transition has happened */
-       if (link_check && (link.link_status == 0)) {
+       if (link_check && (link.link_status == ETH_LINK_DOWN)) {
                hw->mac.ops.get_link_up_info(hw, &link.link_speed,
                        &link.link_duplex);
-               link.link_status = 1;
-       } else if (!link_check && (link.link_status == 1)) {
+               link.link_status = ETH_LINK_UP;
+       } else if (!link_check && (link.link_status == ETH_LINK_UP)) {
                link.link_speed = 0;
-               link.link_duplex = 0;
-               link.link_status = 0;
+               link.link_duplex = ETH_LINK_HALF_DUPLEX;
+               link.link_status = ETH_LINK_DOWN;
        }
        rte_em_dev_atomic_write_link_status(dev, &link);