@ -358,49 +358,47 @@ static int bnx2x_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
cfg_idx = bnx2x_get_link_cfg_idx ( bp ) ;
old_multi_phy_config = bp - > link_params . multi_phy_config ;
switch ( cmd - > port ) {
case PORT_TP :
if ( bp - > port . supported [ cfg_idx ] & SUPPORTED_TP )
break ; /* no port change */
if ( ! ( bp - > port . supported [ 0 ] & SUPPORTED_TP | |
bp - > port . supported [ 1 ] & SUPPORTED_TP ) ) {
DP ( BNX2X_MSG_ETHTOOL , " Unsupported port type \n " ) ;
return - EINVAL ;
}
bp - > link_params . multi_phy_config & =
~ PORT_HW_CFG_PHY_SELECTION_MASK ;
if ( bp - > link_params . multi_phy_config &
PORT_HW_CFG_PHY_SWAPPED_ENABLED )
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_SECOND_PHY ;
else
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_FIRST_PHY ;
break ;
case PORT_FIBRE :
case PORT_DA :
if ( bp - > port . supported [ cfg_idx ] & SUPPORTED_FIBRE )
break ; /* no port change */
if ( ! ( bp - > port . supported [ 0 ] & SUPPORTED_FIBRE | |
bp - > port . supported [ 1 ] & SUPPORTED_FIBRE ) ) {
if ( cmd - > port ! = bnx2x_get_port_type ( bp ) ) {
switch ( cmd - > port ) {
case PORT_TP :
if ( ! ( bp - > port . supported [ 0 ] & SUPPORTED_TP | |
bp - > port . supported [ 1 ] & SUPPORTED_TP ) ) {
DP ( BNX2X_MSG_ETHTOOL ,
" Unsupported port type \n " ) ;
return - EINVAL ;
}
bp - > link_params . multi_phy_config & =
~ PORT_HW_CFG_PHY_SELECTION_MASK ;
if ( bp - > link_params . multi_phy_config &
PORT_HW_CFG_PHY_SWAPPED_ENABLED )
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_SECOND_PHY ;
else
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_FIRST_PHY ;
break ;
case PORT_FIBRE :
case PORT_DA :
if ( ! ( bp - > port . supported [ 0 ] & SUPPORTED_FIBRE | |
bp - > port . supported [ 1 ] & SUPPORTED_FIBRE ) ) {
DP ( BNX2X_MSG_ETHTOOL ,
" Unsupported port type \n " ) ;
return - EINVAL ;
}
bp - > link_params . multi_phy_config & =
~ PORT_HW_CFG_PHY_SELECTION_MASK ;
if ( bp - > link_params . multi_phy_config &
PORT_HW_CFG_PHY_SWAPPED_ENABLED )
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_FIRST_PHY ;
else
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_SECOND_PHY ;
break ;
default :
DP ( BNX2X_MSG_ETHTOOL , " Unsupported port type \n " ) ;
return - EINVAL ;
}
bp - > link_params . multi_phy_config & =
~ PORT_HW_CFG_PHY_SELECTION_MASK ;
if ( bp - > link_params . multi_phy_config &
PORT_HW_CFG_PHY_SWAPPED_ENABLED )
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_FIRST_PHY ;
else
bp - > link_params . multi_phy_config | =
PORT_HW_CFG_PHY_SELECTION_SECOND_PHY ;
break ;
default :
DP ( BNX2X_MSG_ETHTOOL , " Unsupported port type \n " ) ;
return - EINVAL ;
}
/* Save new config in case command complete successfully */
new_multi_phy_config = bp - > link_params . multi_phy_config ;