Commit 72f740b1 authored by Tony Nguyen's avatar Tony Nguyen Committed by Jeff Kirsher

ixgbe: Enable LASI interrupts for X552 devices

Enable LASI interrupts on X552 devices in order to receive notifications of
link configurations of the external PHY and support the configuration of
the internal iXFI link since iXFI does not support auto-negotiation.  This
is not required for X553 devices; add a check to avoid enabling LASI
interrupts for X553 devices.
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 0e1ff306
...@@ -2404,17 +2404,30 @@ static s32 ixgbe_enable_lasi_ext_t_x550em(struct ixgbe_hw *hw) ...@@ -2404,17 +2404,30 @@ static s32 ixgbe_enable_lasi_ext_t_x550em(struct ixgbe_hw *hw)
status = ixgbe_get_lasi_ext_t_x550em(hw, &lsc); status = ixgbe_get_lasi_ext_t_x550em(hw, &lsc);
/* Enable link status change alarm */ /* Enable link status change alarm */
status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_PMA_TX_VEN_LASI_INT_MASK,
MDIO_MMD_AN, &reg);
if (status)
return status;
reg |= IXGBE_MDIO_PMA_TX_VEN_LASI_INT_EN; /* Enable the LASI interrupts on X552 devices to receive notifications
* of the link configurations of the external PHY and correspondingly
* support the configuration of the internal iXFI link, since iXFI does
* not support auto-negotiation. This is not required for X553 devices
* having KR support, which performs auto-negotiations and which is used
* as the internal link to the external PHY. Hence adding a check here
* to avoid enabling LASI interrupts for X553 devices.
*/
if (hw->mac.type != ixgbe_mac_x550em_a) {
status = hw->phy.ops.read_reg(hw,
IXGBE_MDIO_PMA_TX_VEN_LASI_INT_MASK,
MDIO_MMD_AN, &reg);
if (status)
return status;
reg |= IXGBE_MDIO_PMA_TX_VEN_LASI_INT_EN;
status = hw->phy.ops.write_reg(hw, IXGBE_MDIO_PMA_TX_VEN_LASI_INT_MASK, status = hw->phy.ops.write_reg(hw,
MDIO_MMD_AN, reg); IXGBE_MDIO_PMA_TX_VEN_LASI_INT_MASK,
if (status) MDIO_MMD_AN, reg);
return status; if (status)
return status;
}
/* Enable high temperature failure and global fault alarms */ /* Enable high temperature failure and global fault alarms */
status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_GLOBAL_INT_MASK, status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_GLOBAL_INT_MASK,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment