]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ixgbe: Add support for reporting 2.5G link speed
authorMark Rustad <mark.d.rustad@intel.com>
Fri, 10 Jul 2015 21:19:22 +0000 (14:19 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Mon, 12 Oct 2015 16:04:59 +0000 (09:04 -0700)
Orabug: 21918732

Now that we can do 2.5G link speed, we need to be able to report it.
Also change the nested triadic involved in creating the log message
to instead use a simpler switch statement to set a string pointer.

Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 454adb008d78e4ecdfec3f2e5e9eb08ee5a60f1a)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

index b0cc439d7b01887c6f803bdead3d397dfd3ba156..ab2edc8e7703f014e0dc09f8d91de5dee1054083 100644 (file)
@@ -166,6 +166,8 @@ static int ixgbe_get_settings(struct net_device *netdev,
        /* set the supported link speeds */
        if (supported_link & IXGBE_LINK_SPEED_10GB_FULL)
                ecmd->supported |= SUPPORTED_10000baseT_Full;
+       if (supported_link & IXGBE_LINK_SPEED_2_5GB_FULL)
+               ecmd->supported |= SUPPORTED_2500baseX_Full;
        if (supported_link & IXGBE_LINK_SPEED_1GB_FULL)
                ecmd->supported |= SUPPORTED_1000baseT_Full;
        if (supported_link & IXGBE_LINK_SPEED_100_FULL)
@@ -177,6 +179,8 @@ static int ixgbe_get_settings(struct net_device *netdev,
                        ecmd->advertising |= ADVERTISED_100baseT_Full;
                if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_10GB_FULL)
                        ecmd->advertising |= ADVERTISED_10000baseT_Full;
+               if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_2_5GB_FULL)
+                       ecmd->advertising |= ADVERTISED_2500baseX_Full;
                if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL)
                        ecmd->advertising |= ADVERTISED_1000baseT_Full;
        } else {
@@ -286,6 +290,9 @@ static int ixgbe_get_settings(struct net_device *netdev,
                case IXGBE_LINK_SPEED_10GB_FULL:
                        ethtool_cmd_speed_set(ecmd, SPEED_10000);
                        break;
+               case IXGBE_LINK_SPEED_2_5GB_FULL:
+                       ethtool_cmd_speed_set(ecmd, SPEED_2500);
+                       break;
                case IXGBE_LINK_SPEED_1GB_FULL:
                        ethtool_cmd_speed_set(ecmd, SPEED_1000);
                        break;
index 7e1d1d0e86e45a0f3e12d3af48f41562d31a6422..6e3c01c2523339cedf883b58b99e88d56fba7cf2 100644 (file)
@@ -6374,6 +6374,7 @@ static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter)
        struct net_device *upper;
        struct list_head *iter;
        u32 link_speed = adapter->link_speed;
+       const char *speed_str;
        bool flow_rx, flow_tx;
 
        /* only continue if link was previously down */
@@ -6411,14 +6412,24 @@ static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter)
        if (test_bit(__IXGBE_PTP_RUNNING, &adapter->state))
                ixgbe_ptp_start_cyclecounter(adapter);
 
-       e_info(drv, "NIC Link is Up %s, Flow Control: %s\n",
-              (link_speed == IXGBE_LINK_SPEED_10GB_FULL ?
-              "10 Gbps" :
-              (link_speed == IXGBE_LINK_SPEED_1GB_FULL ?
-              "1 Gbps" :
-              (link_speed == IXGBE_LINK_SPEED_100_FULL ?
-              "100 Mbps" :
-              "unknown speed"))),
+       switch (link_speed) {
+       case IXGBE_LINK_SPEED_10GB_FULL:
+               speed_str = "10 Gbps";
+               break;
+       case IXGBE_LINK_SPEED_2_5GB_FULL:
+               speed_str = "2.5 Gbps";
+               break;
+       case IXGBE_LINK_SPEED_1GB_FULL:
+               speed_str = "1 Gbps";
+               break;
+       case IXGBE_LINK_SPEED_100_FULL:
+               speed_str = "100 Mbps";
+               break;
+       default:
+               speed_str = "unknown speed";
+               break;
+       }
+       e_info(drv, "NIC Link is Up %s, Flow Control: %s\n", speed_str,
               ((flow_rx && flow_tx) ? "RX/TX" :
               (flow_rx ? "RX" :
               (flow_tx ? "TX" : "None"))));