mirror of https://gitee.com/openkylin/linux.git
ixgbe: Update NW_MNG_IF_SEL support for X553
The MAC register NW_MNG_IF_SEL fields have been redefined for X553. These changes impact the iXFI driver code flow. Since iXFI is only supported in X552, add MAC checks for iXFI flows. Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
72f740b101
commit
48301cf22f
|
@ -386,7 +386,7 @@ u32 ixgbe_read_reg(struct ixgbe_hw *hw, u32 reg)
|
||||||
if (ixgbe_removed(reg_addr))
|
if (ixgbe_removed(reg_addr))
|
||||||
return IXGBE_FAILED_READ_REG;
|
return IXGBE_FAILED_READ_REG;
|
||||||
if (unlikely(hw->phy.nw_mng_if_sel &
|
if (unlikely(hw->phy.nw_mng_if_sel &
|
||||||
IXGBE_NW_MNG_IF_SEL_ENABLE_10_100M)) {
|
IXGBE_NW_MNG_IF_SEL_SGMII_ENABLE)) {
|
||||||
struct ixgbe_adapter *adapter;
|
struct ixgbe_adapter *adapter;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
|
@ -3778,8 +3778,8 @@ struct ixgbe_info {
|
||||||
#define IXGBE_NW_MNG_IF_SEL_PHY_SPEED_1G BIT(19)
|
#define IXGBE_NW_MNG_IF_SEL_PHY_SPEED_1G BIT(19)
|
||||||
#define IXGBE_NW_MNG_IF_SEL_PHY_SPEED_2_5G BIT(20)
|
#define IXGBE_NW_MNG_IF_SEL_PHY_SPEED_2_5G BIT(20)
|
||||||
#define IXGBE_NW_MNG_IF_SEL_PHY_SPEED_10G BIT(21)
|
#define IXGBE_NW_MNG_IF_SEL_PHY_SPEED_10G BIT(21)
|
||||||
#define IXGBE_NW_MNG_IF_SEL_ENABLE_10_100M BIT(23)
|
#define IXGBE_NW_MNG_IF_SEL_SGMII_ENABLE BIT(25)
|
||||||
#define IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE BIT(24)
|
#define IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE BIT(24) /* X552 only */
|
||||||
#define IXGBE_NW_MNG_IF_SEL_MDIO_PHY_ADD_SHIFT 3
|
#define IXGBE_NW_MNG_IF_SEL_MDIO_PHY_ADD_SHIFT 3
|
||||||
#define IXGBE_NW_MNG_IF_SEL_MDIO_PHY_ADD \
|
#define IXGBE_NW_MNG_IF_SEL_MDIO_PHY_ADD \
|
||||||
(0x1F << IXGBE_NW_MNG_IF_SEL_MDIO_PHY_ADD_SHIFT)
|
(0x1F << IXGBE_NW_MNG_IF_SEL_MDIO_PHY_ADD_SHIFT)
|
||||||
|
|
|
@ -1555,9 +1555,14 @@ static s32 ixgbe_restart_an_internal_phy_x550em(struct ixgbe_hw *hw)
|
||||||
**/
|
**/
|
||||||
static s32 ixgbe_setup_ixfi_x550em(struct ixgbe_hw *hw, ixgbe_link_speed *speed)
|
static s32 ixgbe_setup_ixfi_x550em(struct ixgbe_hw *hw, ixgbe_link_speed *speed)
|
||||||
{
|
{
|
||||||
|
struct ixgbe_mac_info *mac = &hw->mac;
|
||||||
s32 status;
|
s32 status;
|
||||||
u32 reg_val;
|
u32 reg_val;
|
||||||
|
|
||||||
|
/* iXFI is only supported with X552 */
|
||||||
|
if (mac->type != ixgbe_mac_X550EM_x)
|
||||||
|
return IXGBE_ERR_LINK_SETUP;
|
||||||
|
|
||||||
/* Disable AN and force speed to 10G Serial. */
|
/* Disable AN and force speed to 10G Serial. */
|
||||||
status = ixgbe_read_iosf_sb_reg_x550(hw,
|
status = ixgbe_read_iosf_sb_reg_x550(hw,
|
||||||
IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),
|
IXGBE_KRM_LINK_CTRL_1(hw->bus.lan_id),
|
||||||
|
@ -1874,8 +1879,10 @@ static s32 ixgbe_setup_mac_link_t_X550em(struct ixgbe_hw *hw,
|
||||||
else
|
else
|
||||||
force_speed = IXGBE_LINK_SPEED_1GB_FULL;
|
force_speed = IXGBE_LINK_SPEED_1GB_FULL;
|
||||||
|
|
||||||
/* If internal link mode is XFI, then setup XFI internal link. */
|
/* If X552 and internal link mode is XFI, then setup XFI internal link.
|
||||||
if (!(hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE)) {
|
*/
|
||||||
|
if (hw->mac.type == ixgbe_mac_X550EM_x &&
|
||||||
|
!(hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE)) {
|
||||||
status = ixgbe_setup_ixfi_x550em(hw, &force_speed);
|
status = ixgbe_setup_ixfi_x550em(hw, &force_speed);
|
||||||
|
|
||||||
if (status)
|
if (status)
|
||||||
|
@ -2628,7 +2635,8 @@ static s32 ixgbe_setup_internal_phy_t_x550em(struct ixgbe_hw *hw)
|
||||||
if (hw->mac.ops.get_media_type(hw) != ixgbe_media_type_copper)
|
if (hw->mac.ops.get_media_type(hw) != ixgbe_media_type_copper)
|
||||||
return IXGBE_ERR_CONFIG;
|
return IXGBE_ERR_CONFIG;
|
||||||
|
|
||||||
if (hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE) {
|
if (!(hw->mac.type == ixgbe_mac_X550EM_x &&
|
||||||
|
!(hw->phy.nw_mng_if_sel & IXGBE_NW_MNG_IF_SEL_INT_PHY_MODE))) {
|
||||||
speed = IXGBE_LINK_SPEED_10GB_FULL |
|
speed = IXGBE_LINK_SPEED_10GB_FULL |
|
||||||
IXGBE_LINK_SPEED_1GB_FULL;
|
IXGBE_LINK_SPEED_1GB_FULL;
|
||||||
return ixgbe_setup_kr_speed_x550em(hw, speed);
|
return ixgbe_setup_kr_speed_x550em(hw, speed);
|
||||||
|
|
Loading…
Reference in New Issue