i40e: Add support for disabling all link and change bits needed for PHY interactions
authorKevin Scott <kevin.c.scott@intel.com>
Tue, 3 May 2016 22:13:09 +0000 (15:13 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 14 May 2016 04:36:59 +0000 (21:36 -0700)
Add flag to tell firmware to disable link on all ports.

This patch changes the bits set for telling firmware the PHY needs
to be modified by driver.  Without this patch, the setting will only
set that mode for the current port on the device.  Because the
MDIO interface is common for the copper device. The command needs to
set the mode for all ports.

Change-ID: I8baa7da91d384291ac95b41ae1a516604f8eb67f
Signed-off-by: Kevin Scott <kevin.c.scott@intel.com>
Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
drivers/net/ethernet/intel/i40e/i40e_ethtool.c

index 2a6a5d3dd874e713e451f6347cdb2e34fcae98ef..01cc732195c0e9ccacd7d88da7dcd99824eb824c 100644 (file)
 #define I40E_OEM_VER_PATCH_MASK    0xff
 #define I40E_OEM_VER_BUILD_SHIFT   8
 #define I40E_OEM_VER_SHIFT         24
-#define I40E_PHY_DEBUG_PORT        BIT(4)
+#define I40E_PHY_DEBUG_ALL \
+       (I40E_AQ_PHY_DEBUG_DISABLE_LINK_FW | \
+       I40E_AQ_PHY_DEBUG_DISABLE_ALL_LINK_FW)
 
 /* The values in here are decimal coded as hex as is the case in the NVM map*/
 #define I40E_CURRENT_NVM_VERSION_HI 0x2
index eacbe7430b4833279aa81c969d9f581c842deffb..11cf1a5ebccf0773fc281b0be6929c8f47cec9f7 100644 (file)
@@ -1833,7 +1833,10 @@ struct i40e_aqc_set_phy_debug {
 #define I40E_AQ_PHY_DEBUG_RESET_EXTERNAL_NONE  0x00
 #define I40E_AQ_PHY_DEBUG_RESET_EXTERNAL_HARD  0x01
 #define I40E_AQ_PHY_DEBUG_RESET_EXTERNAL_SOFT  0x02
+/* Disable link manageability on a single port */
 #define I40E_AQ_PHY_DEBUG_DISABLE_LINK_FW      0x10
+/* Disable link manageability on all ports */
+#define I40E_AQ_PHY_DEBUG_DISABLE_ALL_LINK_FW  0x20
        u8      reserved[15];
 };
 
index 51a994d858708d455a2f3062c822588e51427957..6fa05c44826864a1e1ce0cd42fa09c1d7cf0c3f5 100644 (file)
@@ -1880,7 +1880,7 @@ static int i40e_set_phys_id(struct net_device *netdev,
                if (!(pf->flags & I40E_FLAG_HAVE_10GBASET_PHY)) {
                        pf->led_status = i40e_led_get(hw);
                } else {
-                       i40e_aq_set_phy_debug(hw, I40E_PHY_DEBUG_PORT, NULL);
+                       i40e_aq_set_phy_debug(hw, I40E_PHY_DEBUG_ALL, NULL);
                        ret = i40e_led_get_phy(hw, &temp_status,
                                               &pf->phy_led_val);
                        pf->led_status = temp_status;