/* Starts the hardware by filling the bus info structure and media type, clears all on chip counters, initializes receive address registers, multicast table, VLAN filter table, calls routine to set up link and flow control settings, and leaves transmit and receive units disabled and uninitialized  */
s32 ixgbe_start_hw_generic(struct ixgbe_hw *hw)
/* Starts the hardware by filling the bus info structure and media type, clears all on chip counters, initializes receive address registers, multicast table, VLAN filter table, calls routine to set up link and flow control settings, and leaves transmit and receive units disabled and uninitialized  */
s32 ixgbe_start_hw_generic(struct ixgbe_hw *hw)
{
	u32 ctrl_ext;
	hw->phy.media_type = hw->mac.ops.get_media_type(hw);
	hw->phy.ops.identify(hw);
	hw->mac.ops.clear_vfta(hw);
	hw->mac.ops.clear_hw_cntrs(hw);
	ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT);
	ctrl_ext |= IXGBE_CTRL_EXT_NS_DIS;
	IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl_ext);
	IXGBE_WRITE_FLUSH(hw);
	ixgbe_setup_fc(hw, 0);
	hw->adapter_stopped = false;
	return 0;
}