When an AML40 port links up at 10G, DPDK reports the speed as 100M
instead of 10G. The 10G link status bit is not recognized in
txgbe_check_mac_link_aml40(), so any non-40G speed falls through to
the default case (UNKNOWN) which is then reported as 100M.

Add the 10G port status bit recognition, and include 10G in the
default advertised speed mask in txgbe_dev_start() so a 10G link is
reported with the correct speed.

Fixes: abf042d32b39 ("net/txgbe: add Amber-Lite 25G/40G NICs")
Cc: [email protected]

Signed-off-by: Zaiyu Wang <[email protected]>
---
 drivers/net/txgbe/base/txgbe_aml40.c | 3 +++
 drivers/net/txgbe/txgbe_ethdev.c     | 3 ++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/txgbe/base/txgbe_aml40.c 
b/drivers/net/txgbe/base/txgbe_aml40.c
index 05eac68f3b..90d4453b06 100644
--- a/drivers/net/txgbe/base/txgbe_aml40.c
+++ b/drivers/net/txgbe/base/txgbe_aml40.c
@@ -85,6 +85,9 @@ s32 txgbe_check_mac_link_aml40(struct txgbe_hw *hw, u32 
*speed,
                if ((links_reg & TXGBE_CFG_PORT_ST_AML_LINK_40G) ==
                        TXGBE_CFG_PORT_ST_AML_LINK_40G)
                        *speed = TXGBE_LINK_SPEED_40GB_FULL;
+               else if ((links_reg & TXGBE_CFG_PORT_ST_AML_LINK_10G) ==
+                       TXGBE_CFG_PORT_ST_AML_LINK_10G)
+                       *speed = TXGBE_LINK_SPEED_10GB_FULL;
        } else {
                *speed = TXGBE_LINK_SPEED_UNKNOWN;
        }
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index b0d2bc3450..ae755996e6 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -1912,7 +1912,8 @@ txgbe_dev_start(struct rte_eth_dev *dev)
        speed = 0x0;
        if (*link_speeds == RTE_ETH_LINK_SPEED_AUTONEG) {
                if (hw->mac.type == txgbe_mac_aml40) {
-                       speed = TXGBE_LINK_SPEED_40GB_FULL;
+                       speed = TXGBE_LINK_SPEED_40GB_FULL |
+                               TXGBE_LINK_SPEED_10GB_FULL;
                } else  if (hw->mac.type == txgbe_mac_aml) {
                        speed = (TXGBE_LINK_SPEED_10GB_FULL |
                                 TXGBE_LINK_SPEED_25GB_FULL);
-- 
2.55.0.windows.2

Reply via email to