OSDN Git Service

ixgbe: fix setup_fc for x550em
authorEmil Tantilov <emil.s.tantilov@intel.com>
Fri, 8 Jul 2016 00:18:38 +0000 (17:18 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 22 Jul 2016 08:31:30 +0000 (01:31 -0700)
mac->ops.setup_fc can be null for backplanes which can cause the driver
to crash on load.

Reported-by: Patrick McLean <patrickm@gaikai.com>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c

index 19b75cd..4716ca4 100644 (file)
@@ -1618,6 +1618,8 @@ static void ixgbe_init_mac_link_ops_X550em(struct ixgbe_hw *hw)
 {
        struct ixgbe_mac_info *mac = &hw->mac;
 
+       mac->ops.setup_fc = ixgbe_setup_fc_x550em;
+
        switch (mac->ops.get_media_type(hw)) {
        case ixgbe_media_type_fiber:
                /* CS4227 does not support autoneg, so disable the laser control
@@ -1627,7 +1629,6 @@ static void ixgbe_init_mac_link_ops_X550em(struct ixgbe_hw *hw)
                mac->ops.enable_tx_laser = NULL;
                mac->ops.flap_tx_laser = NULL;
                mac->ops.setup_link = ixgbe_setup_mac_link_multispeed_fiber;
-               mac->ops.setup_fc = ixgbe_setup_fc_x550em;
                switch (hw->device_id) {
                case IXGBE_DEV_ID_X550EM_A_SFP_N:
                        mac->ops.setup_mac_link = ixgbe_setup_mac_link_sfp_n;
@@ -1655,7 +1656,6 @@ static void ixgbe_init_mac_link_ops_X550em(struct ixgbe_hw *hw)
                        mac->ops.setup_link = ixgbe_setup_sgmii;
                break;
        default:
-               mac->ops.setup_fc = ixgbe_setup_fc_x550em;
                break;
        }
 }