net/ixgbe/base: add physical layer options for FW PHY type
authorWei Dai <wei.dai@intel.com>
Wed, 21 Dec 2016 09:48:04 +0000 (17:48 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 17 Jan 2017 18:40:51 +0000 (19:40 +0100)
The "FW" PHY type now supports speeds 10M, 100M, and 1G.
Previously, only the 1G speed was reported for this PHY type.
Add reporting 10M and 100M speed options.

Signed-off-by: Wei Dai <wei.dai@intel.com>
drivers/net/ixgbe/base/ixgbe_type.h
drivers/net/ixgbe/base/ixgbe_x550.c

index 6ab466b..9851d84 100644 (file)
@@ -3426,6 +3426,7 @@ typedef u32 ixgbe_physical_layer;
 #define IXGBE_PHYSICAL_LAYER_10GBASE_XAUI      0x1000
 #define IXGBE_PHYSICAL_LAYER_SFP_ACTIVE_DA     0x2000
 #define IXGBE_PHYSICAL_LAYER_1000BASE_SX       0x4000
+#define IXGBE_PHYSICAL_LAYER_10BASE_T          0x8000
 
 /* Flow Control Data Sheet defined values
  * Calculation and defines taken from 802.1bb Annex O
index 0011f21..f1f1fbe 100644 (file)
@@ -3784,7 +3784,13 @@ u32 ixgbe_get_supported_physical_layer_X550em(struct ixgbe_hw *hw)
                        physical_layer |= IXGBE_PHYSICAL_LAYER_1000BASE_T;
                break;
        case ixgbe_phy_fw:
-               physical_layer = IXGBE_PHYSICAL_LAYER_1000BASE_T;
+               if (hw->phy.speeds_supported & IXGBE_LINK_SPEED_1GB_FULL)
+                       physical_layer |= IXGBE_PHYSICAL_LAYER_1000BASE_T;
+               if (hw->phy.speeds_supported & IXGBE_LINK_SPEED_100_FULL)
+                       physical_layer |= IXGBE_PHYSICAL_LAYER_100BASE_TX;
+               if (hw->phy.speeds_supported & IXGBE_LINK_SPEED_10_FULL)
+                       physical_layer |= IXGBE_PHYSICAL_LAYER_10BASE_T;
+               break;
        default:
                break;
        }