net/ixgbe: enable 10Mb/s link setup for x553

Message ID 1553844123-51934-1-git-send-email-wei.zhao1@intel.com
State Superseded, archived
Headers show
Series
  • net/ixgbe: enable 10Mb/s link setup for x553
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch warning coding style issues

Commit Message

Zhao1, Wei March 29, 2019, 7:22 a.m.
There is need to eanble 10Mb/s link foixgbe NIC of x553.
This new device has own device id of 0x15E4 and 0x15E5, so
ixgbe PMD driver need to special check when setup link for
these two types of device.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Patch

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 97e1021..0b78647 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2701,6 +2701,9 @@  static int eth_ixgbevf_pci_remove(struct rte_pci_device *pci_dev)
 		allowed_speeds = ETH_LINK_SPEED_100M | ETH_LINK_SPEED_1G |
 			ETH_LINK_SPEED_2_5G |  ETH_LINK_SPEED_5G |
 			ETH_LINK_SPEED_10G;
+		if ((hw->device_id == IXGBE_DEV_ID_X550EM_A_1G_T) ||
+			(hw->device_id == IXGBE_DEV_ID_X550EM_A_1G_T_L))
+			allowed_speeds |= ETH_LINK_SPEED_10M;
 		break;
 	default:
 		allowed_speeds = ETH_LINK_SPEED_100M | ETH_LINK_SPEED_1G |
@@ -2708,6 +2711,7 @@  static int eth_ixgbevf_pci_remove(struct rte_pci_device *pci_dev)
 	}
 
 	link_speeds = &dev->data->dev_conf.link_speeds;
+	*link_speeds = ETH_LINK_SPEED_10M;
 	if (*link_speeds & ~allowed_speeds) {
 		PMD_INIT_LOG(ERR, "Invalid link setting");
 		goto error;
@@ -2742,6 +2746,8 @@  static int eth_ixgbevf_pci_remove(struct rte_pci_device *pci_dev)
 			speed |= IXGBE_LINK_SPEED_1GB_FULL;
 		if (*link_speeds & ETH_LINK_SPEED_100M)
 			speed |= IXGBE_LINK_SPEED_100_FULL;
+		if (*link_speeds & ETH_LINK_SPEED_10M)
+			speed |= IXGBE_LINK_SPEED_10_FULL;
 	}
 
 	err = ixgbe_setup_link(hw, speed, link_up);
@@ -4061,8 +4067,12 @@  static int ixgbevf_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
 	switch (link_speed) {
 	default:
 	case IXGBE_LINK_SPEED_UNKNOWN:
+		if ((hw->device_id == IXGBE_DEV_ID_X550EM_A_1G_T) ||
+			(hw->device_id == IXGBE_DEV_ID_X550EM_A_1G_T_L))
+			link.link_speed = ETH_SPEED_NUM_10M;
+		else
+			link.link_speed = ETH_SPEED_NUM_100M;
 		link.link_duplex = ETH_LINK_FULL_DUPLEX;
-		link.link_speed = ETH_SPEED_NUM_100M;
 		break;
 
 	case IXGBE_LINK_SPEED_100_FULL: