ESXi-6.0-U1a
This commit is contained in:
parent
bd21c8aa72
commit
2ee8c8344c
51 changed files with 4144 additions and 3381 deletions
|
@ -416,6 +416,9 @@
|
|||
/** \brief Logical unit is not configured (array only). */
|
||||
#define VMK_SCSI_ASC_LU_NOT_CONFIGURED 0x68
|
||||
|
||||
#define VMK_SCSI_ASC_ATA_PASSTHROUGH_INFO_AVAILABLE 0x00
|
||||
#define VMK_SCSI_ASCQ_ATA_PASSTHROUGH_INFO_AVAILABLE 0x1d
|
||||
|
||||
/*
|
||||
* Inquiry data.
|
||||
*/
|
||||
|
|
|
@ -186,6 +186,16 @@ typedef struct vmk_ScsiSenseDataSimple {
|
|||
} format;
|
||||
} vmk_ScsiSenseDataSimple;
|
||||
|
||||
/**
|
||||
* \brief Description Type field
|
||||
* SPC 4 r33, Section 4.5.2.1 table 27
|
||||
*/
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_INFORMATION 0x0
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_COMMAND_SPECIFIC_INFIRMATION 0x1
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_SENSE_KEY_SPECIFIC 0x2
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_FIELD_REPLACABLE_UNIT 0x3
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_ATA_STATUS_RETURN 0x9
|
||||
|
||||
/**
|
||||
* \brief SCSI Device event handler callback entry
|
||||
*
|
||||
|
|
|
@ -416,6 +416,9 @@
|
|||
/** \brief Logical unit is not configured (array only). */
|
||||
#define VMK_SCSI_ASC_LU_NOT_CONFIGURED 0x68
|
||||
|
||||
#define VMK_SCSI_ASC_ATA_PASSTHROUGH_INFO_AVAILABLE 0x00
|
||||
#define VMK_SCSI_ASCQ_ATA_PASSTHROUGH_INFO_AVAILABLE 0x1d
|
||||
|
||||
/*
|
||||
* Inquiry data.
|
||||
*/
|
||||
|
|
|
@ -186,6 +186,16 @@ typedef struct vmk_ScsiSenseDataSimple {
|
|||
} format;
|
||||
} vmk_ScsiSenseDataSimple;
|
||||
|
||||
/**
|
||||
* \brief Description Type field
|
||||
* SPC 4 r33, Section 4.5.2.1 table 27
|
||||
*/
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_INFORMATION 0x0
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_COMMAND_SPECIFIC_INFIRMATION 0x1
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_SENSE_KEY_SPECIFIC 0x2
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_FIELD_REPLACABLE_UNIT 0x3
|
||||
#define VMK_SCSI_SENSE_DESCRIPTOR_TYPE_ATA_STATUS_RETURN 0x9
|
||||
|
||||
/**
|
||||
* \brief SCSI Device event handler callback entry
|
||||
*
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#define BUILD_NUMBER "build-2809209"
|
||||
#define BUILD_NUMBER_NUMERIC 2809209
|
||||
#define BUILD_NUMBER_NUMERIC_STRING "2809209"
|
||||
#define PRODUCT_BUILD_NUMBER "product-build-28864"
|
||||
#define PRODUCT_BUILD_NUMBER_NUMERIC 28864
|
||||
#define PRODUCT_BUILD_NUMBER_NUMERIC_STRING "28864"
|
||||
#define BUILD_NUMBER "build-5966297"
|
||||
#define BUILD_NUMBER_NUMERIC 5966297
|
||||
#define BUILD_NUMBER_NUMERIC_STRING "5966297"
|
||||
#define PRODUCT_BUILD_NUMBER "product-build-26992"
|
||||
#define PRODUCT_BUILD_NUMBER_NUMERIC 26992
|
||||
#define PRODUCT_BUILD_NUMBER_NUMERIC_STRING "26992"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -54,7 +54,7 @@
|
|||
#endif
|
||||
|
||||
#define DRV_NAME "ahci"
|
||||
#define DRV_VERSION "3.0-21vmw"
|
||||
#define DRV_VERSION "3.0-22vmw"
|
||||
|
||||
#if defined(__VMKLNX__)
|
||||
static int ahci_skip_host_reset = 0;
|
||||
|
@ -652,6 +652,15 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|||
{ PCI_VDEVICE(INTEL, 0x8d66), board_ahci }, /* Wellsburg RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x8d6e), board_ahci }, /* Wellsburg RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x23a3), board_ahci }, /* Coleto Creek AHCI */
|
||||
{ PCI_VDEVICE(INTEL, 0x9d03), board_ahci }, /* Sunrise Point-LP AHCI */
|
||||
{ PCI_VDEVICE(INTEL, 0x9d05), board_ahci }, /* Sunrise Point-LP RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0x9d07), board_ahci }, /* Sunrise Point-LP RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0xa102), board_ahci }, /* Sunrise Point-H AHCI */
|
||||
{ PCI_VDEVICE(INTEL, 0xa103), board_ahci }, /* Sunrise Point-H AHCI */
|
||||
{ PCI_VDEVICE(INTEL, 0xa105), board_ahci }, /* Sunrise Point-H RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0xa106), board_ahci }, /* Sunrise Point-H RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H RAID */
|
||||
{ PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
|
||||
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
/* 80003ES2LAN Gigabit Ethernet Controller (Copper)
|
||||
* 80003ES2LAN Gigabit Ethernet Controller (Serdes)
|
||||
|
@ -719,11 +713,18 @@ static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw)
|
|||
e1000_release_phy_80003es2lan(hw);
|
||||
|
||||
/* Disable IBIST slave mode (far-end loopback) */
|
||||
e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
&kum_reg_data);
|
||||
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE;
|
||||
e1000_write_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
kum_reg_data);
|
||||
ret_val = e1000_read_kmrn_reg_80003es2lan(hw,
|
||||
E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
&kum_reg_data);
|
||||
if (!ret_val) {
|
||||
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE;
|
||||
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
|
||||
E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
kum_reg_data);
|
||||
if (ret_val)
|
||||
e_dbg("Error disabling far-end loopback\n");
|
||||
} else
|
||||
e_dbg("Error disabling far-end loopback\n");
|
||||
|
||||
ret_val = e1000e_get_auto_rd_done(hw);
|
||||
if (ret_val)
|
||||
|
@ -777,11 +778,18 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)
|
|||
return ret_val;
|
||||
|
||||
/* Disable IBIST slave mode (far-end loopback) */
|
||||
e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
&kum_reg_data);
|
||||
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE;
|
||||
e1000_write_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
kum_reg_data);
|
||||
ret_val =
|
||||
e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
&kum_reg_data);
|
||||
if (!ret_val) {
|
||||
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE;
|
||||
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
|
||||
E1000_KMRNCTRLSTA_INBAND_PARAM,
|
||||
kum_reg_data);
|
||||
if (ret_val)
|
||||
e_dbg("Error disabling far-end loopback\n");
|
||||
} else
|
||||
e_dbg("Error disabling far-end loopback\n");
|
||||
|
||||
/* Set the transmit descriptor write-back policy */
|
||||
reg_data = er32(TXDCTL(0));
|
||||
|
@ -1370,6 +1378,7 @@ static const struct e1000_mac_operations es2_mac_ops = {
|
|||
.setup_led = e1000e_setup_led_generic,
|
||||
.config_collision_dist = e1000e_config_collision_dist_generic,
|
||||
.rar_set = e1000e_rar_set_generic,
|
||||
.rar_get_count = e1000e_rar_get_count_generic,
|
||||
.validate_mdi_setting = e1000e_validate_mdi_setting_generic,
|
||||
};
|
||||
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
#ifndef _E1000E_80003ES2LAN_H_
|
||||
#define _E1000E_80003ES2LAN_H_
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
/* 82571EB Gigabit Ethernet Controller
|
||||
* 82571EB Gigabit Ethernet Controller (Copper)
|
||||
|
@ -1011,6 +1005,11 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
|
|||
|
||||
/* Must release MDIO ownership and mutex after MAC reset. */
|
||||
switch (hw->mac.type) {
|
||||
case e1000_82573:
|
||||
/* Release mutex only if the hw semaphore is acquired */
|
||||
if (!ret_val)
|
||||
e1000_put_hw_semaphore_82573(hw);
|
||||
break;
|
||||
case e1000_82574:
|
||||
case e1000_82583:
|
||||
/* Release mutex only if the hw semaphore is acquired */
|
||||
|
@ -1341,8 +1340,12 @@ static void e1000_clear_vfta_82571(struct e1000_hw *hw)
|
|||
static bool e1000_check_mng_mode_82574(struct e1000_hw *hw)
|
||||
{
|
||||
u16 data;
|
||||
s32 ret_val;
|
||||
|
||||
ret_val = e1000_read_nvm(hw, NVM_INIT_CONTROL2_REG, 1, &data);
|
||||
if (ret_val)
|
||||
return false;
|
||||
|
||||
e1000_read_nvm(hw, NVM_INIT_CONTROL2_REG, 1, &data);
|
||||
return (data & E1000_NVM_INIT_CTRL2_MNGM) != 0;
|
||||
}
|
||||
|
||||
|
@ -1898,6 +1901,7 @@ static const struct e1000_mac_operations e82571_mac_ops = {
|
|||
.config_collision_dist = e1000e_config_collision_dist_generic,
|
||||
.read_mac_addr = e1000_read_mac_addr_82571,
|
||||
.rar_set = e1000e_rar_set_generic,
|
||||
.rar_get_count = e1000e_rar_get_count_generic,
|
||||
.validate_mdi_setting = e1000e_validate_mdi_setting_generic,
|
||||
};
|
||||
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
#ifndef _E1000E_82571_H_
|
||||
#define _E1000E_82571_H_
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
#ifndef _E1000E_DEFINES_H_
|
||||
#define _E1000E_DEFINES_H_
|
||||
|
@ -148,6 +142,7 @@
|
|||
#define E1000_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */
|
||||
#define E1000_RCTL_DTYP_PS 0x00000400 /* Packet Split descriptor */
|
||||
#define E1000_RCTL_RDMTS_HALF 0x00000000 /* Rx desc min thresh size */
|
||||
#define E1000_RCTL_RDMTS_HEX 0x00010000
|
||||
#define E1000_RCTL_MO_SHIFT 12 /* multicast offset shift */
|
||||
#define E1000_RCTL_MO_3 0x00003000 /* multicast offset 15:4 */
|
||||
#define E1000_RCTL_BAM 0x00008000 /* broadcast enable */
|
||||
|
@ -349,6 +344,7 @@
|
|||
#define E1000_TIPG_IPGR2_SHIFT 20
|
||||
|
||||
#define MAX_JUMBO_FRAME_SIZE 0x3F00
|
||||
#define E1000_TX_PTR_GAP 0x1F
|
||||
|
||||
/* Extended Configuration Control and Size */
|
||||
#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
|
||||
|
@ -535,6 +531,12 @@
|
|||
#define E1000_TSYNCTXCTL_VALID 0x00000001 /* Tx timestamp valid */
|
||||
#define E1000_TSYNCTXCTL_ENABLED 0x00000010 /* enable Tx timestamping */
|
||||
|
||||
/* HH Time Sync */
|
||||
#define E1000_TSYNCTXCTL_MAX_ALLOWED_DLY_MASK 0x0000F000 /* max delay */
|
||||
#define E1000_TSYNCTXCTL_SYNC_COMP_ERR 0x20000000 /* sync err */
|
||||
#define E1000_TSYNCTXCTL_SYNC_COMP 0x40000000 /* sync complete */
|
||||
#define E1000_TSYNCTXCTL_START_SYNC 0x80000000 /* initiate sync */
|
||||
|
||||
#define E1000_TSYNCRXCTL_VALID 0x00000001 /* Rx timestamp valid */
|
||||
#define E1000_TSYNCRXCTL_TYPE_MASK 0x0000000E /* Rx type mask */
|
||||
#define E1000_TSYNCRXCTL_TYPE_L2_V2 0x00
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
/* Linux PRO/1000 Ethernet Driver main header file */
|
||||
|
||||
|
@ -96,9 +90,6 @@ struct e1000_info;
|
|||
|
||||
#define E1000_MNG_VLAN_NONE (-1)
|
||||
|
||||
/* Number of packet split data buffers (not including the header buffer) */
|
||||
#define PS_PAGE_BUFFERS (MAX_PS_BUFFERS - 1)
|
||||
|
||||
#define DEFAULT_JUMBO 9234
|
||||
|
||||
/* Time to wait before putting the device into D3 if there's no link (in ms). */
|
||||
|
@ -148,6 +139,7 @@ enum e1000_boards {
|
|||
board_pchlan,
|
||||
board_pch2lan,
|
||||
board_pch_lpt,
|
||||
board_pch_spt
|
||||
};
|
||||
|
||||
struct e1000_ps_page {
|
||||
|
@ -286,15 +278,16 @@ struct e1000_adapter {
|
|||
u32 tx_head_addr;
|
||||
u32 tx_fifo_size;
|
||||
u32 tx_dma_failed;
|
||||
u32 tx_hwtstamp_timeouts;
|
||||
|
||||
/* Rx */
|
||||
#ifdef CONFIG_E1000E_NAPI
|
||||
bool (*clean_rx) (struct e1000_ring *ring, int *work_done,
|
||||
bool (*clean_rx)(struct e1000_ring *ring, int *work_done,
|
||||
int work_to_do) ____cacheline_aligned_in_smp;
|
||||
#else
|
||||
bool (*clean_rx) (struct e1000_ring *ring) ____cacheline_aligned_in_smp;
|
||||
bool (*clean_rx)(struct e1000_ring *ring) ____cacheline_aligned_in_smp;
|
||||
#endif
|
||||
void (*alloc_rx_buf) (struct e1000_ring *ring, int cleaned_count,
|
||||
void (*alloc_rx_buf)(struct e1000_ring *ring, int cleaned_count,
|
||||
gfp_t gfp);
|
||||
struct e1000_ring *rx_ring;
|
||||
|
||||
|
@ -312,6 +305,12 @@ struct e1000_adapter {
|
|||
#ifdef HAVE_HW_TIME_STAMP
|
||||
u32 rx_hwtstamp_cleared;
|
||||
#endif
|
||||
#ifdef DYNAMIC_LTR_SUPPORT
|
||||
u64 c10_mpc_count; /* frequently updated MPC count */
|
||||
u64 c10_rx_bytes; /* frequently updated RX bytes count */
|
||||
u32 c10_pba_bytes; /* current PBA RXA converted to bytes*/
|
||||
bool c10_demote_ltr; /* is/should LTR be demoted */
|
||||
#endif /* DYNAMIC_LTR_SUPPORT */
|
||||
|
||||
unsigned int rx_ps_pages;
|
||||
u16 rx_ps_bsize0;
|
||||
|
@ -365,6 +364,7 @@ struct e1000_adapter {
|
|||
|
||||
#endif
|
||||
unsigned int flags;
|
||||
|
||||
#if defined(__VMKLNX__)
|
||||
unsigned int flags1;
|
||||
enum {
|
||||
|
@ -372,6 +372,7 @@ struct e1000_adapter {
|
|||
hw_hang_on_tso
|
||||
} hw_hang_reason;
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
|
||||
unsigned int flags2;
|
||||
struct work_struct downshift_task;
|
||||
struct work_struct update_phy_task;
|
||||
|
@ -392,6 +393,7 @@ struct e1000_adapter {
|
|||
struct hwtstamp_config hwtstamp_config;
|
||||
struct delayed_work systim_overflow_work;
|
||||
struct sk_buff *tx_hwtstamp_skb;
|
||||
unsigned long tx_hwtstamp_start;
|
||||
struct work_struct tx_hwtstamp_work;
|
||||
spinlock_t systim_lock; /* protects SYSTIML/H regsters */
|
||||
struct cyclecounter cc;
|
||||
|
@ -453,6 +455,8 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca);
|
|||
* 25MHz 46-bit 2^46 / 10^9 / 3600 = 19.55 hours
|
||||
*/
|
||||
#define E1000_SYSTIM_OVERFLOW_PERIOD (HZ * 60 * 60 * 4)
|
||||
#define E1000_MAX_82574_SYSTIM_REREADS 50
|
||||
#define E1000_82574_SYSTIM_EPSILON (1ULL << 35ULL)
|
||||
#endif /* HAVE_HW_TIME_STAMP */
|
||||
|
||||
/* hardware capability, feature, and workaround flags */
|
||||
|
@ -496,6 +500,7 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca);
|
|||
#if defined(__VMKLNX__)
|
||||
#define FLAG_READ_ONLY_NVM (1 << 0)
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
|
||||
#define FLAG2_CRC_STRIPPING (1 << 0)
|
||||
#define FLAG2_HAS_PHY_WAKEUP (1 << 1)
|
||||
#define FLAG2_IS_DISCARDING (1 << 2)
|
||||
|
@ -529,7 +534,6 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca);
|
|||
|
||||
enum e1000_state_t {
|
||||
__E1000_OBFF_DISABLED,
|
||||
__E1000_SHUTDOWN,
|
||||
__E1000_TESTING,
|
||||
__E1000_RESETTING,
|
||||
__E1000_ACCESS_SHARED_RESOURCE,
|
||||
|
@ -577,9 +581,9 @@ extern void e1000e_get_hw_control(struct e1000_adapter *adapter);
|
|||
extern void e1000e_release_hw_control(struct e1000_adapter *adapter);
|
||||
extern void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr);
|
||||
|
||||
#if defined(__VMKLNX__)
|
||||
#ifdef __VMKLNX__
|
||||
extern void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw);
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
#endif /* __VMKLNX__ */
|
||||
extern unsigned int copybreak;
|
||||
|
||||
extern const struct e1000_info e1000_82571_info;
|
||||
|
@ -593,6 +597,7 @@ extern const struct e1000_info e1000_ich10_info;
|
|||
extern const struct e1000_info e1000_pch_info;
|
||||
extern const struct e1000_info e1000_pch2_info;
|
||||
extern const struct e1000_info e1000_pch_lpt_info;
|
||||
extern const struct e1000_info e1000_pch_spt_info;
|
||||
extern const struct e1000_info e1000_es2_info;
|
||||
|
||||
#ifdef HAVE_PTP_1588_CLOCK
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
/* ethtool support for e1000 */
|
||||
|
||||
|
@ -152,6 +146,7 @@ static const struct e1000_stats e1000_gstrings_stats[] = {
|
|||
E1000_STAT("tx_dma_failed", tx_dma_failed),
|
||||
#ifdef HAVE_HW_TIME_STAMP
|
||||
E1000_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared),
|
||||
E1000_STAT("tx_hwtstamp_timeouts", tx_hwtstamp_timeouts),
|
||||
#endif
|
||||
E1000_STAT("uncorr_ecc_errors", uncorr_errors),
|
||||
E1000_STAT("corr_ecc_errors", corr_errors),
|
||||
|
@ -746,10 +741,11 @@ static int e1000_set_eeprom(struct net_device *netdev,
|
|||
if (eeprom->magic !=
|
||||
(adapter->pdev->vendor | (adapter->pdev->device << 16)))
|
||||
return -EFAULT;
|
||||
#if defined(__VMKLNX__)
|
||||
|
||||
#ifdef __VMKLNX__
|
||||
if (adapter->flags1 & FLAG_READ_ONLY_NVM)
|
||||
return -EINVAL;
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
#endif /* __VMKLNX__ */
|
||||
|
||||
max_len = hw->nvm.word_size * 2;
|
||||
|
||||
|
@ -964,10 +960,10 @@ static bool reg_pattern_test(struct e1000_adapter *adapter, u64 *data,
|
|||
reg + (offset << 2), val,
|
||||
(test[pat] & write & mask));
|
||||
*data = reg;
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool reg_set_and_check(struct e1000_adapter *adapter, u64 *data,
|
||||
|
@ -980,9 +976,9 @@ static bool reg_set_and_check(struct e1000_adapter *adapter, u64 *data,
|
|||
e_err("set/check test failed (reg 0x%05X): got 0x%08X expected 0x%08X\n",
|
||||
reg, (val & mask), (write & mask));
|
||||
*data = reg;
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
#define REG_PATTERN_TEST_ARRAY(reg, offset, mask, write) \
|
||||
|
@ -1075,18 +1071,20 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
|
|||
case e1000_pchlan:
|
||||
case e1000_pch2lan:
|
||||
case e1000_pch_lpt:
|
||||
case e1000_pch_spt:
|
||||
mask |= (1 << 18);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (mac->type == e1000_pch_lpt)
|
||||
if ((mac->type == e1000_pch_lpt) || (mac->type == e1000_pch_spt))
|
||||
wlock_mac = (er32(FWSM) & E1000_FWSM_WLOCK_MAC_MASK) >>
|
||||
E1000_FWSM_WLOCK_MAC_SHIFT;
|
||||
|
||||
for (i = 0; i < mac->rar_entry_count; i++) {
|
||||
if (mac->type == e1000_pch_lpt) {
|
||||
if ((mac->type == e1000_pch_lpt) ||
|
||||
(mac->type == e1000_pch_spt)) {
|
||||
/* Cannot test write-protected SHRAL[n] registers */
|
||||
if ((wlock_mac == 1) || (wlock_mac && (i > wlock_mac)))
|
||||
continue;
|
||||
|
@ -1097,18 +1095,23 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
|
|||
else
|
||||
mask &= ~(1 << 30);
|
||||
}
|
||||
|
||||
if (mac->type == e1000_pch2lan) {
|
||||
/* SHRAH[0,1,2] different than previous */
|
||||
if (i == 7)
|
||||
if (i == 1)
|
||||
mask &= 0xFFF4FFFF;
|
||||
/* SHRAH[3] different than SHRAH[0,1,2] */
|
||||
if (i == 10)
|
||||
if (i == 4)
|
||||
mask |= (1 << 30);
|
||||
/* RAR[1-6] owned by management engine - skipping */
|
||||
if (i > 0)
|
||||
i += 6;
|
||||
}
|
||||
|
||||
REG_PATTERN_TEST_ARRAY(E1000_RA, ((i << 1) + 1), mask,
|
||||
0xFFFFFFFF);
|
||||
/* reset index to actual value */
|
||||
if ((mac->type == e1000_pch2lan) && (i > 6))
|
||||
i -= 6;
|
||||
}
|
||||
|
||||
for (i = 0; i < mac->mta_reg_count; i++)
|
||||
|
@ -1431,7 +1434,7 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
|
|||
rctl = er32(RCTL);
|
||||
#ifndef __VMKLNX__
|
||||
if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
|
||||
#endif
|
||||
#endif /* !__VMKLNX__ */
|
||||
ew32(RCTL, rctl & ~E1000_RCTL_EN);
|
||||
ew32(RDBAL(0), ((u64)rx_ring->dma & 0xFFFFFFFF));
|
||||
ew32(RDBAH(0), ((u64)rx_ring->dma >> 32));
|
||||
|
@ -2062,15 +2065,14 @@ static void e1000_get_wol(struct net_device *netdev,
|
|||
* Comment out that check for now until support for can/should wakeup
|
||||
* is added as part of Power Management features.
|
||||
*/
|
||||
#if !defined(__VMKLNX__)
|
||||
#ifndef __VMKLNX__
|
||||
if (!(adapter->flags & FLAG_HAS_WOL) ||
|
||||
!device_can_wakeup(pci_dev_to_dev(adapter->pdev)))
|
||||
return;
|
||||
#else /* defined(__VMKLNX__) */
|
||||
#else /* !__VMKLNX__ */
|
||||
if (!(adapter->flags & FLAG_HAS_WOL))
|
||||
return;
|
||||
#endif /* !defined(__VMKLNX__) */
|
||||
|
||||
#endif /* !__VMKLNX__ */
|
||||
|
||||
wol->supported = WAKE_UCAST | WAKE_MCAST |
|
||||
WAKE_BCAST | WAKE_MAGIC | WAKE_PHY;
|
||||
|
@ -2105,18 +2107,18 @@ static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|||
* Comment out that check for now until support for can/should wakeup
|
||||
* is added as part of Power Management features.
|
||||
*/
|
||||
#if !defined(__VMKLNX__)
|
||||
#ifndef __VMKLNX__
|
||||
if (!(adapter->flags & FLAG_HAS_WOL) ||
|
||||
!device_can_wakeup(pci_dev_to_dev(adapter->pdev)) ||
|
||||
(wol->wolopts & ~(WAKE_UCAST | WAKE_MCAST | WAKE_BCAST |
|
||||
WAKE_MAGIC | WAKE_PHY)))
|
||||
return -EOPNOTSUPP;
|
||||
#else /* defined(__VMKLNX__) */
|
||||
#else /* !__VMKLNX__ */
|
||||
if (!(adapter->flags & FLAG_HAS_WOL) ||
|
||||
(wol->wolopts & ~(WAKE_UCAST | WAKE_MCAST | WAKE_BCAST |
|
||||
WAKE_MAGIC | WAKE_PHY)))
|
||||
return -EOPNOTSUPP;
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
#endif /* !__VMKLNX__ */
|
||||
|
||||
/* these settings will always override what we currently have */
|
||||
adapter->wol = 0;
|
||||
|
@ -2212,6 +2214,7 @@ static int e1000_phys_id(struct net_device *netdev, u32 data)
|
|||
(hw->mac.type == e1000_pchlan) ||
|
||||
(hw->mac.type == e1000_pch2lan) ||
|
||||
(hw->mac.type == e1000_pch_lpt) ||
|
||||
(hw->mac.type == e1000_pch_spt) ||
|
||||
(hw->mac.type == e1000_82583) || (hw->mac.type == e1000_82574)) {
|
||||
if (!adapter->blink_timer.function) {
|
||||
init_timer(&adapter->blink_timer);
|
||||
|
@ -2678,7 +2681,7 @@ static const struct ethtool_ops_ext e1000e_ethtool_ops_ext = {
|
|||
void e1000e_set_ethtool_ops(struct net_device *netdev)
|
||||
{
|
||||
/* have to "undeclare" const on this struct to remove warnings */
|
||||
SET_ETHTOOL_OPS(netdev, (struct ethtool_ops *)&e1000_ethtool_ops);
|
||||
netdev->ethtool_ops = (struct ethtool_ops *)&e1000_ethtool_ops;
|
||||
#ifdef HAVE_RHEL6_ETHTOOL_OPS_EXT_STRUCT
|
||||
set_ethtool_ops_ext(netdev, &e1000e_ethtool_ops_ext);
|
||||
#endif /* HAVE_RHEL6_ETHTOOL_OPS_EXT_STRUCT */
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
#ifndef _E1000E_HW_H_
|
||||
#define _E1000E_HW_H_
|
||||
|
@ -92,9 +86,12 @@ struct e1000_hw;
|
|||
#define E1000_DEV_ID_PCH_LPTLP_I218_V 0x1559
|
||||
#define E1000_DEV_ID_PCH_I218_LM2 0x15A0
|
||||
#define E1000_DEV_ID_PCH_I218_V2 0x15A1
|
||||
#define E1000_DEV_ID_PCH_I218_LM3 0x15A2 /* Wildcat Point PCH */
|
||||
#define E1000_DEV_ID_PCH_I218_V3 0x15A3 /* Wildcat Point PCH */
|
||||
|
||||
#define E1000_DEV_ID_PCH_I218_LM3 0x15A2 /* Wildcat Point PCH */
|
||||
#define E1000_DEV_ID_PCH_I218_V3 0x15A3 /* Wildcat Point PCH */
|
||||
#define E1000_DEV_ID_PCH_SPT_I219_LM 0x156F /* Sunrise Point PCH */
|
||||
#define E1000_DEV_ID_PCH_SPT_I219_V 0x1570 /* Sunrise Point PCH */
|
||||
#define E1000_DEV_ID_PCH_SPT_I219_LM2 0x15B8 /* Sunrise Point-H PCH */
|
||||
#define E1000_DEV_ID_PCH_SPT_I219_V2 0x15B7 /* Sunrise Point-H PCH */
|
||||
|
||||
#define E1000_REVISION_4 4
|
||||
|
||||
|
@ -116,6 +113,7 @@ enum e1000_mac_type {
|
|||
e1000_pchlan,
|
||||
e1000_pch2lan,
|
||||
e1000_pch_lpt,
|
||||
e1000_pch_spt,
|
||||
};
|
||||
|
||||
enum e1000_media_type {
|
||||
|
@ -244,7 +242,7 @@ union e1000_rx_desc_extended {
|
|||
#define MAX_PS_BUFFERS 4
|
||||
|
||||
/* Number of packet split data buffers (not including the header buffer) */
|
||||
#define PS_PAGE_BUFFERS (MAX_PS_BUFFERS - 1)
|
||||
#define PS_PAGE_BUFFERS (MAX_PS_BUFFERS - 1)
|
||||
|
||||
/* Receive Descriptor - Packet Split */
|
||||
union e1000_rx_desc_packet_split {
|
||||
|
@ -467,29 +465,30 @@ struct e1000_host_mng_command_info {
|
|||
|
||||
/* Function pointers for the MAC. */
|
||||
struct e1000_mac_operations {
|
||||
s32(*id_led_init) (struct e1000_hw *);
|
||||
s32(*blink_led) (struct e1000_hw *);
|
||||
s32 (*id_led_init) (struct e1000_hw *);
|
||||
s32 (*blink_led) (struct e1000_hw *);
|
||||
bool (*check_mng_mode) (struct e1000_hw *);
|
||||
s32(*check_for_link) (struct e1000_hw *);
|
||||
s32(*cleanup_led) (struct e1000_hw *);
|
||||
s32 (*check_for_link) (struct e1000_hw *);
|
||||
s32 (*cleanup_led) (struct e1000_hw *);
|
||||
void (*clear_hw_cntrs) (struct e1000_hw *);
|
||||
void (*clear_vfta) (struct e1000_hw *);
|
||||
s32(*get_bus_info) (struct e1000_hw *);
|
||||
s32 (*get_bus_info) (struct e1000_hw *);
|
||||
void (*set_lan_id) (struct e1000_hw *);
|
||||
s32(*get_link_up_info) (struct e1000_hw *, u16 *, u16 *);
|
||||
s32(*led_on) (struct e1000_hw *);
|
||||
s32(*led_off) (struct e1000_hw *);
|
||||
s32 (*get_link_up_info) (struct e1000_hw *, u16 *, u16 *);
|
||||
s32 (*led_on) (struct e1000_hw *);
|
||||
s32 (*led_off) (struct e1000_hw *);
|
||||
void (*update_mc_addr_list) (struct e1000_hw *, u8 *, u32);
|
||||
s32(*reset_hw) (struct e1000_hw *);
|
||||
s32(*init_hw) (struct e1000_hw *);
|
||||
s32(*setup_link) (struct e1000_hw *);
|
||||
s32(*setup_physical_interface) (struct e1000_hw *);
|
||||
s32(*setup_led) (struct e1000_hw *);
|
||||
s32 (*reset_hw) (struct e1000_hw *);
|
||||
s32 (*init_hw) (struct e1000_hw *);
|
||||
s32 (*setup_link) (struct e1000_hw *);
|
||||
s32 (*setup_physical_interface) (struct e1000_hw *);
|
||||
s32 (*setup_led) (struct e1000_hw *);
|
||||
void (*write_vfta) (struct e1000_hw *, u32, u32);
|
||||
void (*config_collision_dist) (struct e1000_hw *);
|
||||
void (*rar_set) (struct e1000_hw *, u8 *, u32);
|
||||
s32(*read_mac_addr) (struct e1000_hw *);
|
||||
s32(*validate_mdi_setting) (struct e1000_hw *);
|
||||
int (*rar_set) (struct e1000_hw *, u8 *, u32);
|
||||
u32 (*rar_get_count) (struct e1000_hw *);
|
||||
s32 (*read_mac_addr) (struct e1000_hw *);
|
||||
s32 (*validate_mdi_setting) (struct e1000_hw *);
|
||||
};
|
||||
|
||||
/* When to use various PHY register access functions:
|
||||
|
@ -507,40 +506,40 @@ struct e1000_mac_operations {
|
|||
*
|
||||
*/
|
||||
struct e1000_phy_operations {
|
||||
s32(*acquire) (struct e1000_hw *);
|
||||
s32(*cfg_on_link_up) (struct e1000_hw *);
|
||||
s32(*check_polarity) (struct e1000_hw *);
|
||||
s32(*check_reset_block) (struct e1000_hw *);
|
||||
s32(*commit) (struct e1000_hw *);
|
||||
s32(*force_speed_duplex) (struct e1000_hw *);
|
||||
s32(*get_cfg_done) (struct e1000_hw *hw);
|
||||
s32(*get_cable_length) (struct e1000_hw *);
|
||||
s32(*get_info) (struct e1000_hw *);
|
||||
s32(*set_page) (struct e1000_hw *, u16);
|
||||
s32(*read_reg) (struct e1000_hw *, u32, u16 *);
|
||||
s32(*read_reg_locked) (struct e1000_hw *, u32, u16 *);
|
||||
s32(*read_reg_page) (struct e1000_hw *, u32, u16 *);
|
||||
s32 (*acquire) (struct e1000_hw *);
|
||||
s32 (*cfg_on_link_up) (struct e1000_hw *);
|
||||
s32 (*check_polarity) (struct e1000_hw *);
|
||||
s32 (*check_reset_block) (struct e1000_hw *);
|
||||
s32 (*commit) (struct e1000_hw *);
|
||||
s32 (*force_speed_duplex) (struct e1000_hw *);
|
||||
s32 (*get_cfg_done) (struct e1000_hw *hw);
|
||||
s32 (*get_cable_length) (struct e1000_hw *);
|
||||
s32 (*get_info) (struct e1000_hw *);
|
||||
s32 (*set_page) (struct e1000_hw *, u16);
|
||||
s32 (*read_reg) (struct e1000_hw *, u32, u16 *);
|
||||
s32 (*read_reg_locked) (struct e1000_hw *, u32, u16 *);
|
||||
s32 (*read_reg_page) (struct e1000_hw *, u32, u16 *);
|
||||
void (*release) (struct e1000_hw *);
|
||||
s32(*reset) (struct e1000_hw *);
|
||||
s32(*set_d0_lplu_state) (struct e1000_hw *, bool);
|
||||
s32(*set_d3_lplu_state) (struct e1000_hw *, bool);
|
||||
s32(*write_reg) (struct e1000_hw *, u32, u16);
|
||||
s32(*write_reg_locked) (struct e1000_hw *, u32, u16);
|
||||
s32(*write_reg_page) (struct e1000_hw *, u32, u16);
|
||||
s32 (*reset) (struct e1000_hw *);
|
||||
s32 (*set_d0_lplu_state) (struct e1000_hw *, bool);
|
||||
s32 (*set_d3_lplu_state) (struct e1000_hw *, bool);
|
||||
s32 (*write_reg) (struct e1000_hw *, u32, u16);
|
||||
s32 (*write_reg_locked) (struct e1000_hw *, u32, u16);
|
||||
s32 (*write_reg_page) (struct e1000_hw *, u32, u16);
|
||||
void (*power_up) (struct e1000_hw *);
|
||||
void (*power_down) (struct e1000_hw *);
|
||||
};
|
||||
|
||||
/* Function pointers for the NVM. */
|
||||
struct e1000_nvm_operations {
|
||||
s32(*acquire) (struct e1000_hw *);
|
||||
s32(*read) (struct e1000_hw *, u16, u16, u16 *);
|
||||
s32 (*acquire) (struct e1000_hw *);
|
||||
s32 (*read) (struct e1000_hw *, u16, u16, u16 *);
|
||||
void (*release) (struct e1000_hw *);
|
||||
void (*reload) (struct e1000_hw *);
|
||||
s32(*update) (struct e1000_hw *);
|
||||
s32(*valid_led_default) (struct e1000_hw *, u16 *);
|
||||
s32(*validate) (struct e1000_hw *);
|
||||
s32(*write) (struct e1000_hw *, u16, u16, u16 *);
|
||||
s32 (*update) (struct e1000_hw *);
|
||||
s32 (*valid_led_default) (struct e1000_hw *, u16 *);
|
||||
s32 (*validate) (struct e1000_hw *);
|
||||
s32 (*write) (struct e1000_hw *, u16, u16, u16 *);
|
||||
};
|
||||
|
||||
struct e1000_mac_info {
|
||||
|
@ -681,6 +680,10 @@ struct e1000_dev_spec_ich8lan {
|
|||
bool eee_disable;
|
||||
u16 eee_lp_ability;
|
||||
enum e1000_ulp_state ulp_state;
|
||||
#ifdef DYNAMIC_LTR_SUPPORT
|
||||
u16 lat_enc;
|
||||
u16 max_ltr_enc;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct e1000_hw {
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,30 +1,24 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Intel PRO/1000 Linux driver
|
||||
Copyright(c) 1999 - 2013 Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
The full GNU General Public License is included in this distribution in
|
||||
the file called "COPYING".
|
||||
|
||||
Contact Information:
|
||||
Linux NICS <linux.nics@intel.com>
|
||||
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Intel PRO/1000 Linux driver
|
||||
* Copyright(c) 1999 - 2014 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in
|
||||
* the file called "COPYING".
|
||||
*
|
||||
* Contact Information:
|
||||
* Linux NICS <linux.nics@intel.com>
|
||||
* e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
*/
|
||||
|
||||
#ifndef _E1000E_ICH8LAN_H_
|
||||
#define _E1000E_ICH8LAN_H_
|
||||
|
@ -35,9 +29,9 @@
|
|||
#define ICH_FLASH_FADDR 0x0008
|
||||
#define ICH_FLASH_FDATA0 0x0010
|
||||
|
||||
#if defined(__VMKLNX__)
|
||||
#define ICH_FLASH_PR0 0x0074
|
||||
#endif /* defined(__VMKLNX__) */
|
||||
#ifdef __VMKLNX__
|
||||
#define ICH_FLASH_PR0 0x0074
|
||||
#endif /* __VMKLNX__ */
|
||||
|
||||
/* Requires up to 10 seconds when MNG might be accessing part. */
|
||||
#define ICH_FLASH_READ_COMMAND_TIMEOUT 10000000
|
||||
|
@ -108,10 +102,14 @@
|
|||
|
||||
#define E1000_FEXTNVM7_DISABLE_SMB_PERST 0x00000020
|
||||
|
||||
#define NVM_SIZE_MULTIPLIER 4096 /*multiplier for NVMS field */
|
||||
#define E1000_FLASH_BASE_ADDR 0xE000 /*offset of NVM access regs */
|
||||
#define E1000_CTRL_EXT_NVMVS 0x3 /*NVM valid sector */
|
||||
|
||||
#define PCIE_ICH8_SNOOP_ALL PCIE_NO_SNOOP_ALL
|
||||
|
||||
#define E1000_ICH_RAR_ENTRIES 7
|
||||
#define E1000_PCH2_RAR_ENTRIES 11 /* RAR[0-6], SHRA[0-3] */
|
||||
#define E1000_ICH_RAR_ENTRIES 7
|
||||
#define E1000_PCH2_RAR_ENTRIES 5 /* RAR[0], SHRA[0-3] */
|
||||
#define E1000_PCH_LPT_RAR_ENTRIES 12 /* RAR[0], SHRA[0-10] */
|
||||
|
||||
#define PHY_PAGE_SHIFT 5
|
||||
|
@ -236,7 +234,6 @@
|
|||
#define I82579_LPI_CTRL_100_ENABLE 0x2000
|
||||
#define I82579_LPI_CTRL_1000_ENABLE 0x4000
|
||||
#define I82579_LPI_CTRL_ENABLE_MASK 0x6000
|
||||
#define I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT 0x80
|
||||
|
||||
/* 82579 DFT Control */
|
||||
#define I82579_DFT_CTRL PHY_REG(769, 20)
|
||||
|
@ -250,16 +247,19 @@
|
|||
#define I82577_MSE_THRESHOLD 0x0887 /* 82577 Mean Square Error Threshold */
|
||||
#define I82579_MSE_LINK_DOWN 0x2411 /* MSE count before dropping link */
|
||||
#define I82579_RX_CONFIG 0x3412 /* Receive configuration */
|
||||
#define I82579_LPI_PLL_SHUT 0x4412 /* LPI PLL Shut Enable */
|
||||
#define I82579_EEE_PCS_STATUS 0x182E /* IEEE MMD Register 3.1 >> 8 */
|
||||
#define I82579_EEE_CAPABILITY 0x0410 /* IEEE MMD Register 3.20 */
|
||||
#define I82579_EEE_ADVERTISEMENT 0x040E /* IEEE MMD Register 7.60 */
|
||||
#define I82579_EEE_LP_ABILITY 0x040F /* IEEE MMD Register 7.61 */
|
||||
#define I82579_EEE_100_SUPPORTED (1 << 1) /* 100BaseTx EEE */
|
||||
#define I82579_EEE_1000_SUPPORTED (1 << 2) /* 1000BaseTx EEE */
|
||||
#define I82579_LPI_100_PLL_SHUT (1 << 2) /* 100M LPI PLL Shut Enabled */
|
||||
#define I217_EEE_PCS_STATUS 0x9401 /* IEEE MMD Register 3.1 */
|
||||
#define I217_EEE_CAPABILITY 0x8000 /* IEEE MMD Register 3.20 */
|
||||
#define I217_EEE_ADVERTISEMENT 0x8001 /* IEEE MMD Register 7.60 */
|
||||
#define I217_EEE_LP_ABILITY 0x8002 /* IEEE MMD Register 7.61 */
|
||||
#define I217_RX_CONFIG 0xB20C /* Receive configuration */
|
||||
|
||||
#define E1000_EEE_RX_LPI_RCVD 0x0400 /* Tx LP idle received */
|
||||
#define E1000_EEE_TX_LPI_RCVD 0x0800 /* Rx LP idle received */
|
||||
|
@ -302,5 +302,7 @@ s32 e1000_read_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 *data);
|
|||
s32 e1000_write_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 data);
|
||||
s32 e1000_set_eee_pchlan(struct e1000_hw *hw);
|
||||
s32 e1000_enable_ulp_lpt_lp(struct e1000_hw *hw, bool to_sx);
|
||||
s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force);
|
||||
#endif /* _E1000E_ICH8LAN_H_ */
|
||||
#ifdef DYNAMIC_LTR_SUPPORT
|
||||
void e1000_demote_ltr(struct e1000_hw *hw, bool demote, bool link);
|
||||