Print this page
Import some changes from FreeBSD (details later, this is quick-n-dirty for now).
        
*** 3316,3326 ****
                      IXGBE_LINK_SPEED_100_FULL;
          }
  
          if (setup_hw) {
                  if (ixgbe_setup_link(&ixgbe->hw, autoneg_advertised,
!                     ixgbe->param_adv_autoneg_cap, B_TRUE) != IXGBE_SUCCESS) {
                          ixgbe_notice(ixgbe, "Setup link failed on this "
                              "device.");
                          return (IXGBE_FAILURE);
                  }
          }
--- 3316,3326 ----
                      IXGBE_LINK_SPEED_100_FULL;
          }
  
          if (setup_hw) {
                  if (ixgbe_setup_link(&ixgbe->hw, autoneg_advertised,
!                    B_TRUE) != IXGBE_SUCCESS) {
                          ixgbe_notice(ixgbe, "Setup link failed on this "
                              "device.");
                          return (IXGBE_FAILURE);
                  }
          }
*** 3415,3425 ****
                  /* clear the interrupt */
                  IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1);
  
                  /* if link up, do multispeed fiber setup */
                  (void) ixgbe_setup_link(hw, IXGBE_LINK_SPEED_82599_AUTONEG,
!                     B_TRUE, B_TRUE);
                  ixgbe_driver_link_check(ixgbe);
                  ixgbe_get_hw_state(ixgbe);
          } else if (eicr & IXGBE_EICR_GPI_SDP2) {
                  /* clear the interrupt */
                  IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP2);
--- 3415,3425 ----
                  /* clear the interrupt */
                  IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1);
  
                  /* if link up, do multispeed fiber setup */
                  (void) ixgbe_setup_link(hw, IXGBE_LINK_SPEED_82599_AUTONEG,
!                     B_TRUE);
                  ixgbe_driver_link_check(ixgbe);
                  ixgbe_get_hw_state(ixgbe);
          } else if (eicr & IXGBE_EICR_GPI_SDP2) {
                  /* clear the interrupt */
                  IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP2);
*** 3427,3437 ****
                  /* if link up, do sfp module setup */
                  (void) hw->mac.ops.setup_sfp(hw);
  
                  /* do multispeed fiber setup */
                  (void) ixgbe_setup_link(hw, IXGBE_LINK_SPEED_82599_AUTONEG,
!                     B_TRUE, B_TRUE);
                  ixgbe_driver_link_check(ixgbe);
                  ixgbe_get_hw_state(ixgbe);
          }
          mutex_exit(&ixgbe->gen_lock);
  
--- 3427,3437 ----
                  /* if link up, do sfp module setup */
                  (void) hw->mac.ops.setup_sfp(hw);
  
                  /* do multispeed fiber setup */
                  (void) ixgbe_setup_link(hw, IXGBE_LINK_SPEED_82599_AUTONEG,
!                     B_TRUE);
                  ixgbe_driver_link_check(ixgbe);
                  ixgbe_get_hw_state(ixgbe);
          }
          mutex_exit(&ixgbe->gen_lock);
  
*** 4066,4076 ****
                  reg |= (IXGBE_AUTOC_FLU |
                      IXGBE_AUTOC_10G_KX4);
                  IXGBE_WRITE_REG(&ixgbe->hw, IXGBE_AUTOC, reg);
  
                  (void) ixgbe_setup_link(&ixgbe->hw, IXGBE_LINK_SPEED_10GB_FULL,
!                     B_FALSE, B_TRUE);
                  break;
  
          default:
                  break;
          }
--- 4066,4076 ----
                  reg |= (IXGBE_AUTOC_FLU |
                      IXGBE_AUTOC_10G_KX4);
                  IXGBE_WRITE_REG(&ixgbe->hw, IXGBE_AUTOC, reg);
  
                  (void) ixgbe_setup_link(&ixgbe->hw, IXGBE_LINK_SPEED_10GB_FULL,
!                     B_TRUE);
                  break;
  
          default:
                  break;
          }