devices/e1000e/hw-2.6.32-ethercat.h
author Patrick Bruenn <p.bruenn@beckhoff.com>
Tue, 12 Apr 2016 11:17:36 +0200
branchstable-1.5
changeset 2654 b3f6b3e5ef29
parent 2217 6787ee69205e
permissions -rw-r--r--
devices/ccat: revert "limit rx processing to one frame per poll"

revert "limit rx processing to one frame per poll", which caused etherlab
frame timeouts in setups with more than one frame per cycle.
2217
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/*******************************************************************************
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
  Intel PRO/1000 Linux driver
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
  Copyright(c) 1999 - 2008 Intel Corporation.
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
  This program is free software; you can redistribute it and/or modify it
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
  under the terms and conditions of the GNU General Public License,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
  version 2, as published by the Free Software Foundation.
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
  This program is distributed in the hope it will be useful, but WITHOUT
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
  more details.
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
  You should have received a copy of the GNU General Public License along with
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
  this program; if not, write to the Free Software Foundation, Inc.,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
  The full GNU General Public License is included in this distribution in
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
  the file called "COPYING".
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
  Contact Information:
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
  Linux NICS <linux.nics@intel.com>
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
*******************************************************************************/
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
#ifndef _E1000_HW_H_
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
#define _E1000_HW_H_
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
#include <linux/types.h>
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
struct e1000_hw;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
struct e1000_adapter;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
#include "defines-2.6.32-ethercat.h"
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
#define er32(reg)	__er32(hw, E1000_##reg)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
#define ew32(reg,val)	__ew32(hw, E1000_##reg, (val))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
#define e1e_flush()	er32(STATUS)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
#define E1000_WRITE_REG_ARRAY(a, reg, offset, value) \
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
	(writel((value), ((a)->hw_addr + reg + ((offset) << 2))))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
#define E1000_READ_REG_ARRAY(a, reg, offset) \
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
	(readl((a)->hw_addr + reg + ((offset) << 2)))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    48
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
enum e1e_registers {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    50
	E1000_CTRL     = 0x00000, /* Device Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
	E1000_STATUS   = 0x00008, /* Device Status - RO */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
	E1000_EECD     = 0x00010, /* EEPROM/Flash Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
	E1000_EERD     = 0x00014, /* EEPROM Read - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
	E1000_CTRL_EXT = 0x00018, /* Extended Device Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
	E1000_FLA      = 0x0001C, /* Flash Access - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
	E1000_MDIC     = 0x00020, /* MDI Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    57
	E1000_SCTL     = 0x00024, /* SerDes Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    58
	E1000_FCAL     = 0x00028, /* Flow Control Address Low - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    59
	E1000_FCAH     = 0x0002C, /* Flow Control Address High -RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
	E1000_FEXTNVM  = 0x00028, /* Future Extended NVM - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
	E1000_FCT      = 0x00030, /* Flow Control Type - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    62
	E1000_VET      = 0x00038, /* VLAN Ether Type - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
	E1000_ICR      = 0x000C0, /* Interrupt Cause Read - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    64
	E1000_ITR      = 0x000C4, /* Interrupt Throttling Rate - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
	E1000_ICS      = 0x000C8, /* Interrupt Cause Set - WO */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    66
	E1000_IMS      = 0x000D0, /* Interrupt Mask Set - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    67
	E1000_IMC      = 0x000D8, /* Interrupt Mask Clear - WO */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    68
	E1000_EIAC_82574 = 0x000DC, /* Ext. Interrupt Auto Clear - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    69
	E1000_IAM      = 0x000E0, /* Interrupt Acknowledge Auto Mask */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    70
	E1000_IVAR     = 0x000E4, /* Interrupt Vector Allocation - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    71
	E1000_EITR_82574_BASE = 0x000E8, /* Interrupt Throttling - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    72
#define E1000_EITR_82574(_n) (E1000_EITR_82574_BASE + (_n << 2))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    73
	E1000_RCTL     = 0x00100, /* Rx Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    74
	E1000_FCTTV    = 0x00170, /* Flow Control Transmit Timer Value - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    75
	E1000_TXCW     = 0x00178, /* Tx Configuration Word - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    76
	E1000_RXCW     = 0x00180, /* Rx Configuration Word - RO */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    77
	E1000_TCTL     = 0x00400, /* Tx Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    78
	E1000_TCTL_EXT = 0x00404, /* Extended Tx Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    79
	E1000_TIPG     = 0x00410, /* Tx Inter-packet gap -RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    80
	E1000_AIT      = 0x00458, /* Adaptive Interframe Spacing Throttle -RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    81
	E1000_LEDCTL   = 0x00E00, /* LED Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    82
	E1000_EXTCNF_CTRL  = 0x00F00, /* Extended Configuration Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    83
	E1000_EXTCNF_SIZE  = 0x00F08, /* Extended Configuration Size */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    84
	E1000_PHY_CTRL     = 0x00F10, /* PHY Control Register in CSR */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    85
	E1000_PBA      = 0x01000, /* Packet Buffer Allocation - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    86
	E1000_PBS      = 0x01008, /* Packet Buffer Size */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    87
	E1000_EEMNGCTL = 0x01010, /* MNG EEprom Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    88
	E1000_EEWR     = 0x0102C, /* EEPROM Write Register - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    89
	E1000_FLOP     = 0x0103C, /* FLASH Opcode Register */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
	E1000_PBA_ECC  = 0x01100, /* PBA ECC Register */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    91
	E1000_ERT      = 0x02008, /* Early Rx Threshold - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    92
	E1000_FCRTL    = 0x02160, /* Flow Control Receive Threshold Low - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    93
	E1000_FCRTH    = 0x02168, /* Flow Control Receive Threshold High - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    94
	E1000_PSRCTL   = 0x02170, /* Packet Split Receive Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    95
	E1000_RDBAL    = 0x02800, /* Rx Descriptor Base Address Low - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    96
	E1000_RDBAH    = 0x02804, /* Rx Descriptor Base Address High - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    97
	E1000_RDLEN    = 0x02808, /* Rx Descriptor Length - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    98
	E1000_RDH      = 0x02810, /* Rx Descriptor Head - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    99
	E1000_RDT      = 0x02818, /* Rx Descriptor Tail - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   100
	E1000_RDTR     = 0x02820, /* Rx Delay Timer - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   101
	E1000_RXDCTL_BASE = 0x02828, /* Rx Descriptor Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   102
#define E1000_RXDCTL(_n)   (E1000_RXDCTL_BASE + (_n << 8))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   103
	E1000_RADV     = 0x0282C, /* RX Interrupt Absolute Delay Timer - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   104
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   105
/* Convenience macros
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   106
 *
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   107
 * Note: "_n" is the queue number of the register to be written to.
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   108
 *
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   109
 * Example usage:
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   110
 * E1000_RDBAL_REG(current_rx_queue)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   111
 *
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   112
 */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   113
#define E1000_RDBAL_REG(_n)   (E1000_RDBAL + (_n << 8))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   114
	E1000_KABGTXD  = 0x03004, /* AFE Band Gap Transmit Ref Data */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   115
	E1000_TDBAL    = 0x03800, /* Tx Descriptor Base Address Low - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   116
	E1000_TDBAH    = 0x03804, /* Tx Descriptor Base Address High - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   117
	E1000_TDLEN    = 0x03808, /* Tx Descriptor Length - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   118
	E1000_TDH      = 0x03810, /* Tx Descriptor Head - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   119
	E1000_TDT      = 0x03818, /* Tx Descriptor Tail - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   120
	E1000_TIDV     = 0x03820, /* Tx Interrupt Delay Value - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   121
	E1000_TXDCTL_BASE = 0x03828, /* Tx Descriptor Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   122
#define E1000_TXDCTL(_n)   (E1000_TXDCTL_BASE + (_n << 8))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   123
	E1000_TADV     = 0x0382C, /* Tx Interrupt Absolute Delay Val - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   124
	E1000_TARC_BASE = 0x03840, /* Tx Arbitration Count (0) */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   125
#define E1000_TARC(_n)   (E1000_TARC_BASE + (_n << 8))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   126
	E1000_CRCERRS  = 0x04000, /* CRC Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   127
	E1000_ALGNERRC = 0x04004, /* Alignment Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   128
	E1000_SYMERRS  = 0x04008, /* Symbol Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   129
	E1000_RXERRC   = 0x0400C, /* Receive Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   130
	E1000_MPC      = 0x04010, /* Missed Packet Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   131
	E1000_SCC      = 0x04014, /* Single Collision Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   132
	E1000_ECOL     = 0x04018, /* Excessive Collision Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   133
	E1000_MCC      = 0x0401C, /* Multiple Collision Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   134
	E1000_LATECOL  = 0x04020, /* Late Collision Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   135
	E1000_COLC     = 0x04028, /* Collision Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   136
	E1000_DC       = 0x04030, /* Defer Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   137
	E1000_TNCRS    = 0x04034, /* Tx-No CRS - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   138
	E1000_SEC      = 0x04038, /* Sequence Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   139
	E1000_CEXTERR  = 0x0403C, /* Carrier Extension Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   140
	E1000_RLEC     = 0x04040, /* Receive Length Error Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   141
	E1000_XONRXC   = 0x04048, /* XON Rx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   142
	E1000_XONTXC   = 0x0404C, /* XON Tx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   143
	E1000_XOFFRXC  = 0x04050, /* XOFF Rx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   144
	E1000_XOFFTXC  = 0x04054, /* XOFF Tx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   145
	E1000_FCRUC    = 0x04058, /* Flow Control Rx Unsupported Count- R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   146
	E1000_PRC64    = 0x0405C, /* Packets Rx (64 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   147
	E1000_PRC127   = 0x04060, /* Packets Rx (65-127 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   148
	E1000_PRC255   = 0x04064, /* Packets Rx (128-255 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   149
	E1000_PRC511   = 0x04068, /* Packets Rx (255-511 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   150
	E1000_PRC1023  = 0x0406C, /* Packets Rx (512-1023 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   151
	E1000_PRC1522  = 0x04070, /* Packets Rx (1024-1522 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   152
	E1000_GPRC     = 0x04074, /* Good Packets Rx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   153
	E1000_BPRC     = 0x04078, /* Broadcast Packets Rx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   154
	E1000_MPRC     = 0x0407C, /* Multicast Packets Rx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   155
	E1000_GPTC     = 0x04080, /* Good Packets Tx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   156
	E1000_GORCL    = 0x04088, /* Good Octets Rx Count Low - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   157
	E1000_GORCH    = 0x0408C, /* Good Octets Rx Count High - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   158
	E1000_GOTCL    = 0x04090, /* Good Octets Tx Count Low - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   159
	E1000_GOTCH    = 0x04094, /* Good Octets Tx Count High - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   160
	E1000_RNBC     = 0x040A0, /* Rx No Buffers Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   161
	E1000_RUC      = 0x040A4, /* Rx Undersize Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   162
	E1000_RFC      = 0x040A8, /* Rx Fragment Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   163
	E1000_ROC      = 0x040AC, /* Rx Oversize Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   164
	E1000_RJC      = 0x040B0, /* Rx Jabber Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   165
	E1000_MGTPRC   = 0x040B4, /* Management Packets Rx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   166
	E1000_MGTPDC   = 0x040B8, /* Management Packets Dropped Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   167
	E1000_MGTPTC   = 0x040BC, /* Management Packets Tx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   168
	E1000_TORL     = 0x040C0, /* Total Octets Rx Low - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   169
	E1000_TORH     = 0x040C4, /* Total Octets Rx High - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   170
	E1000_TOTL     = 0x040C8, /* Total Octets Tx Low - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   171
	E1000_TOTH     = 0x040CC, /* Total Octets Tx High - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   172
	E1000_TPR      = 0x040D0, /* Total Packets Rx - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   173
	E1000_TPT      = 0x040D4, /* Total Packets Tx - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   174
	E1000_PTC64    = 0x040D8, /* Packets Tx (64 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   175
	E1000_PTC127   = 0x040DC, /* Packets Tx (65-127 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   176
	E1000_PTC255   = 0x040E0, /* Packets Tx (128-255 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   177
	E1000_PTC511   = 0x040E4, /* Packets Tx (256-511 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   178
	E1000_PTC1023  = 0x040E8, /* Packets Tx (512-1023 bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   179
	E1000_PTC1522  = 0x040EC, /* Packets Tx (1024-1522 Bytes) - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   180
	E1000_MPTC     = 0x040F0, /* Multicast Packets Tx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   181
	E1000_BPTC     = 0x040F4, /* Broadcast Packets Tx Count - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   182
	E1000_TSCTC    = 0x040F8, /* TCP Segmentation Context Tx - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   183
	E1000_TSCTFC   = 0x040FC, /* TCP Segmentation Context Tx Fail - R/clr */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   184
	E1000_IAC      = 0x04100, /* Interrupt Assertion Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   185
	E1000_ICRXPTC  = 0x04104, /* Irq Cause Rx Packet Timer Expire Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   186
	E1000_ICRXATC  = 0x04108, /* Irq Cause Rx Abs Timer Expire Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   187
	E1000_ICTXPTC  = 0x0410C, /* Irq Cause Tx Packet Timer Expire Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   188
	E1000_ICTXATC  = 0x04110, /* Irq Cause Tx Abs Timer Expire Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   189
	E1000_ICTXQEC  = 0x04118, /* Irq Cause Tx Queue Empty Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   190
	E1000_ICTXQMTC = 0x0411C, /* Irq Cause Tx Queue MinThreshold Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   191
	E1000_ICRXDMTC = 0x04120, /* Irq Cause Rx Desc MinThreshold Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   192
	E1000_ICRXOC   = 0x04124, /* Irq Cause Receiver Overrun Count */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   193
	E1000_RXCSUM   = 0x05000, /* Rx Checksum Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   194
	E1000_RFCTL    = 0x05008, /* Receive Filter Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   195
	E1000_MTA      = 0x05200, /* Multicast Table Array - RW Array */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   196
	E1000_RAL_BASE = 0x05400, /* Receive Address Low - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   197
#define E1000_RAL(_n)   (E1000_RAL_BASE + ((_n) * 8))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   198
#define E1000_RA        (E1000_RAL(0))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   199
	E1000_RAH_BASE = 0x05404, /* Receive Address High - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   200
#define E1000_RAH(_n)   (E1000_RAH_BASE + ((_n) * 8))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   201
	E1000_VFTA     = 0x05600, /* VLAN Filter Table Array - RW Array */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   202
	E1000_WUC      = 0x05800, /* Wakeup Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   203
	E1000_WUFC     = 0x05808, /* Wakeup Filter Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   204
	E1000_WUS      = 0x05810, /* Wakeup Status - RO */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   205
	E1000_MANC     = 0x05820, /* Management Control - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   206
	E1000_FFLT     = 0x05F00, /* Flexible Filter Length Table - RW Array */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   207
	E1000_HOST_IF  = 0x08800, /* Host Interface */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   208
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   209
	E1000_KMRNCTRLSTA = 0x00034, /* MAC-PHY interface - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   210
	E1000_MANC2H    = 0x05860, /* Management Control To Host - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   211
	E1000_SW_FW_SYNC = 0x05B5C, /* Software-Firmware Synchronization - RW */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   212
	E1000_GCR	= 0x05B00, /* PCI-Ex Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   213
	E1000_GCR2      = 0x05B64, /* PCI-Ex Control #2 */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   214
	E1000_FACTPS    = 0x05B30, /* Function Active and Power State to MNG */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   215
	E1000_SWSM      = 0x05B50, /* SW Semaphore */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   216
	E1000_FWSM      = 0x05B54, /* FW Semaphore */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   217
	E1000_SWSM2     = 0x05B58, /* Driver-only SW semaphore */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   218
	E1000_CRC_OFFSET = 0x05F50, /* CRC Offset register */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   219
	E1000_HICR      = 0x08F00, /* Host Interface Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   220
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   221
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   222
/* RSS registers */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   223
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   224
/* IGP01E1000 Specific Registers */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   225
#define IGP01E1000_PHY_PORT_CONFIG	0x10 /* Port Config */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   226
#define IGP01E1000_PHY_PORT_STATUS	0x11 /* Status */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   227
#define IGP01E1000_PHY_PORT_CTRL	0x12 /* Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   228
#define IGP01E1000_PHY_LINK_HEALTH	0x13 /* PHY Link Health */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   229
#define IGP02E1000_PHY_POWER_MGMT	0x19 /* Power Management */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   230
#define IGP01E1000_PHY_PAGE_SELECT	0x1F /* Page Select */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   231
#define BM_PHY_PAGE_SELECT		22   /* Page Select for BM */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   232
#define IGP_PAGE_SHIFT			5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   233
#define PHY_REG_MASK			0x1F
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   234
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   235
#define BM_WUC_PAGE			800
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   236
#define BM_WUC_ADDRESS_OPCODE		0x11
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   237
#define BM_WUC_DATA_OPCODE		0x12
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   238
#define BM_WUC_ENABLE_PAGE		769
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   239
#define BM_WUC_ENABLE_REG		17
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   240
#define BM_WUC_ENABLE_BIT		(1 << 2)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   241
#define BM_WUC_HOST_WU_BIT		(1 << 4)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   242
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   243
#define BM_WUC	PHY_REG(BM_WUC_PAGE, 1)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   244
#define BM_WUFC PHY_REG(BM_WUC_PAGE, 2)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   245
#define BM_WUS	PHY_REG(BM_WUC_PAGE, 3)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   246
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   247
#define IGP01E1000_PHY_PCS_INIT_REG	0x00B4
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   248
#define IGP01E1000_PHY_POLARITY_MASK	0x0078
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   249
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   250
#define IGP01E1000_PSCR_AUTO_MDIX	0x1000
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   251
#define IGP01E1000_PSCR_FORCE_MDI_MDIX	0x2000 /* 0=MDI, 1=MDIX */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   252
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   253
#define IGP01E1000_PSCFR_SMART_SPEED	0x0080
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   254
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   255
#define IGP02E1000_PM_SPD		0x0001 /* Smart Power Down */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   256
#define IGP02E1000_PM_D0_LPLU		0x0002 /* For D0a states */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   257
#define IGP02E1000_PM_D3_LPLU		0x0004 /* For all other states */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   258
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   259
#define IGP01E1000_PLHR_SS_DOWNGRADE	0x8000
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   260
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   261
#define IGP01E1000_PSSR_POLARITY_REVERSED	0x0002
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   262
#define IGP01E1000_PSSR_MDIX			0x0800
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   263
#define IGP01E1000_PSSR_SPEED_MASK		0xC000
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   264
#define IGP01E1000_PSSR_SPEED_1000MBPS		0xC000
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   265
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   266
#define IGP02E1000_PHY_CHANNEL_NUM		4
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   267
#define IGP02E1000_PHY_AGC_A			0x11B1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   268
#define IGP02E1000_PHY_AGC_B			0x12B1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   269
#define IGP02E1000_PHY_AGC_C			0x14B1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   270
#define IGP02E1000_PHY_AGC_D			0x18B1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   271
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   272
#define IGP02E1000_AGC_LENGTH_SHIFT	9 /* Course - 15:13, Fine - 12:9 */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   273
#define IGP02E1000_AGC_LENGTH_MASK	0x7F
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   274
#define IGP02E1000_AGC_RANGE		15
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   275
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   276
/* manage.c */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   277
#define E1000_VFTA_ENTRY_SHIFT		5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   278
#define E1000_VFTA_ENTRY_MASK		0x7F
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   279
#define E1000_VFTA_ENTRY_BIT_SHIFT_MASK	0x1F
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   280
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   281
#define E1000_HICR_EN			0x01  /* Enable bit - RO */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   282
/* Driver sets this bit when done to put command in RAM */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   283
#define E1000_HICR_C			0x02
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   284
#define E1000_HICR_FW_RESET_ENABLE	0x40
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   285
#define E1000_HICR_FW_RESET		0x80
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   286
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   287
#define E1000_FWSM_MODE_MASK		0xE
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   288
#define E1000_FWSM_MODE_SHIFT		1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   289
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   290
#define E1000_MNG_IAMT_MODE		0x3
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   291
#define E1000_MNG_DHCP_COOKIE_LENGTH	0x10
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   292
#define E1000_MNG_DHCP_COOKIE_OFFSET	0x6F0
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   293
#define E1000_MNG_DHCP_COMMAND_TIMEOUT	10
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   294
#define E1000_MNG_DHCP_TX_PAYLOAD_CMD	64
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   295
#define E1000_MNG_DHCP_COOKIE_STATUS_PARSING	0x1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   296
#define E1000_MNG_DHCP_COOKIE_STATUS_VLAN	0x2
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   297
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   298
/* nvm.c */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   299
#define E1000_STM_OPCODE  0xDB00
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   300
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   301
#define E1000_KMRNCTRLSTA_OFFSET	0x001F0000
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   302
#define E1000_KMRNCTRLSTA_OFFSET_SHIFT	16
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   303
#define E1000_KMRNCTRLSTA_REN		0x00200000
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   304
#define E1000_KMRNCTRLSTA_DIAG_OFFSET	0x3    /* Kumeran Diagnostic */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   305
#define E1000_KMRNCTRLSTA_DIAG_NELPBK	0x1000 /* Nearend Loopback mode */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   306
#define E1000_KMRNCTRLSTA_K1_CONFIG	0x7
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   307
#define E1000_KMRNCTRLSTA_K1_ENABLE	0x140E
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   308
#define E1000_KMRNCTRLSTA_K1_DISABLE	0x1400
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   309
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   310
#define IFE_PHY_EXTENDED_STATUS_CONTROL	0x10
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   311
#define IFE_PHY_SPECIAL_CONTROL		0x11 /* 100BaseTx PHY Special Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   312
#define IFE_PHY_SPECIAL_CONTROL_LED	0x1B /* PHY Special and LED Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   313
#define IFE_PHY_MDIX_CONTROL		0x1C /* MDI/MDI-X Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   314
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   315
/* IFE PHY Extended Status Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   316
#define IFE_PESC_POLARITY_REVERSED	0x0100
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   317
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   318
/* IFE PHY Special Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   319
#define IFE_PSC_AUTO_POLARITY_DISABLE		0x0010
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   320
#define IFE_PSC_FORCE_POLARITY			0x0020
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   321
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   322
/* IFE PHY Special Control and LED Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   323
#define IFE_PSCL_PROBE_MODE		0x0020
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   324
#define IFE_PSCL_PROBE_LEDS_OFF		0x0006 /* Force LEDs 0 and 2 off */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   325
#define IFE_PSCL_PROBE_LEDS_ON		0x0007 /* Force LEDs 0 and 2 on */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   326
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   327
/* IFE PHY MDIX Control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   328
#define IFE_PMC_MDIX_STATUS	0x0020 /* 1=MDI-X, 0=MDI */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   329
#define IFE_PMC_FORCE_MDIX	0x0040 /* 1=force MDI-X, 0=force MDI */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   330
#define IFE_PMC_AUTO_MDIX	0x0080 /* 1=enable auto MDI/MDI-X, 0=disable */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   331
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   332
#define E1000_CABLE_LENGTH_UNDEFINED	0xFF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   333
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   334
#define E1000_DEV_ID_82571EB_COPPER		0x105E
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   335
#define E1000_DEV_ID_82571EB_FIBER		0x105F
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   336
#define E1000_DEV_ID_82571EB_SERDES		0x1060
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   337
#define E1000_DEV_ID_82571EB_QUAD_COPPER	0x10A4
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   338
#define E1000_DEV_ID_82571PT_QUAD_COPPER	0x10D5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   339
#define E1000_DEV_ID_82571EB_QUAD_FIBER		0x10A5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   340
#define E1000_DEV_ID_82571EB_QUAD_COPPER_LP	0x10BC
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   341
#define E1000_DEV_ID_82571EB_SERDES_DUAL	0x10D9
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   342
#define E1000_DEV_ID_82571EB_SERDES_QUAD	0x10DA
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   343
#define E1000_DEV_ID_82572EI_COPPER		0x107D
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   344
#define E1000_DEV_ID_82572EI_FIBER		0x107E
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   345
#define E1000_DEV_ID_82572EI_SERDES		0x107F
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   346
#define E1000_DEV_ID_82572EI			0x10B9
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   347
#define E1000_DEV_ID_82573E			0x108B
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   348
#define E1000_DEV_ID_82573E_IAMT		0x108C
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   349
#define E1000_DEV_ID_82573L			0x109A
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   350
#define E1000_DEV_ID_82574L			0x10D3
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   351
#define E1000_DEV_ID_82574LA			0x10F6
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   352
#define E1000_DEV_ID_82583V                     0x150C
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   353
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   354
#define E1000_DEV_ID_80003ES2LAN_COPPER_DPT	0x1096
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   355
#define E1000_DEV_ID_80003ES2LAN_SERDES_DPT	0x1098
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   356
#define E1000_DEV_ID_80003ES2LAN_COPPER_SPT	0x10BA
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   357
#define E1000_DEV_ID_80003ES2LAN_SERDES_SPT	0x10BB
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   358
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   359
#define E1000_DEV_ID_ICH8_82567V_3		0x1501
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   360
#define E1000_DEV_ID_ICH8_IGP_M_AMT		0x1049
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   361
#define E1000_DEV_ID_ICH8_IGP_AMT		0x104A
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   362
#define E1000_DEV_ID_ICH8_IGP_C			0x104B
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   363
#define E1000_DEV_ID_ICH8_IFE			0x104C
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   364
#define E1000_DEV_ID_ICH8_IFE_GT		0x10C4
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   365
#define E1000_DEV_ID_ICH8_IFE_G			0x10C5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   366
#define E1000_DEV_ID_ICH8_IGP_M			0x104D
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   367
#define E1000_DEV_ID_ICH9_IGP_AMT		0x10BD
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   368
#define E1000_DEV_ID_ICH9_BM			0x10E5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   369
#define E1000_DEV_ID_ICH9_IGP_M_AMT		0x10F5
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   370
#define E1000_DEV_ID_ICH9_IGP_M			0x10BF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   371
#define E1000_DEV_ID_ICH9_IGP_M_V		0x10CB
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   372
#define E1000_DEV_ID_ICH9_IGP_C			0x294C
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   373
#define E1000_DEV_ID_ICH9_IFE			0x10C0
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   374
#define E1000_DEV_ID_ICH9_IFE_GT		0x10C3
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   375
#define E1000_DEV_ID_ICH9_IFE_G			0x10C2
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   376
#define E1000_DEV_ID_ICH10_R_BM_LM		0x10CC
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   377
#define E1000_DEV_ID_ICH10_R_BM_LF		0x10CD
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   378
#define E1000_DEV_ID_ICH10_R_BM_V		0x10CE
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   379
#define E1000_DEV_ID_ICH10_D_BM_LM		0x10DE
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   380
#define E1000_DEV_ID_ICH10_D_BM_LF		0x10DF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   381
#define E1000_DEV_ID_PCH_M_HV_LM		0x10EA
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   382
#define E1000_DEV_ID_PCH_M_HV_LC		0x10EB
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   383
#define E1000_DEV_ID_PCH_D_HV_DM		0x10EF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   384
#define E1000_DEV_ID_PCH_D_HV_DC		0x10F0
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   385
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   386
#define E1000_REVISION_4 4
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   387
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   388
#define E1000_FUNC_1 1
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   389
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   390
enum e1000_mac_type {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   391
	e1000_82571,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   392
	e1000_82572,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   393
	e1000_82573,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   394
	e1000_82574,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   395
	e1000_82583,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   396
	e1000_80003es2lan,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   397
	e1000_ich8lan,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   398
	e1000_ich9lan,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   399
	e1000_ich10lan,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   400
	e1000_pchlan,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   401
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   402
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   403
enum e1000_media_type {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   404
	e1000_media_type_unknown = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   405
	e1000_media_type_copper = 1,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   406
	e1000_media_type_fiber = 2,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   407
	e1000_media_type_internal_serdes = 3,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   408
	e1000_num_media_types
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   409
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   410
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   411
enum e1000_nvm_type {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   412
	e1000_nvm_unknown = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   413
	e1000_nvm_none,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   414
	e1000_nvm_eeprom_spi,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   415
	e1000_nvm_flash_hw,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   416
	e1000_nvm_flash_sw
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   417
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   418
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   419
enum e1000_nvm_override {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   420
	e1000_nvm_override_none = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   421
	e1000_nvm_override_spi_small,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   422
	e1000_nvm_override_spi_large
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   423
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   424
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   425
enum e1000_phy_type {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   426
	e1000_phy_unknown = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   427
	e1000_phy_none,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   428
	e1000_phy_m88,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   429
	e1000_phy_igp,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   430
	e1000_phy_igp_2,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   431
	e1000_phy_gg82563,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   432
	e1000_phy_igp_3,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   433
	e1000_phy_ife,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   434
	e1000_phy_bm,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   435
	e1000_phy_82578,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   436
	e1000_phy_82577,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   437
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   438
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   439
enum e1000_bus_width {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   440
	e1000_bus_width_unknown = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   441
	e1000_bus_width_pcie_x1,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   442
	e1000_bus_width_pcie_x2,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   443
	e1000_bus_width_pcie_x4 = 4,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   444
	e1000_bus_width_32,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   445
	e1000_bus_width_64,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   446
	e1000_bus_width_reserved
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   447
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   448
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   449
enum e1000_1000t_rx_status {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   450
	e1000_1000t_rx_status_not_ok = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   451
	e1000_1000t_rx_status_ok,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   452
	e1000_1000t_rx_status_undefined = 0xFF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   453
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   454
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   455
enum e1000_rev_polarity{
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   456
	e1000_rev_polarity_normal = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   457
	e1000_rev_polarity_reversed,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   458
	e1000_rev_polarity_undefined = 0xFF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   459
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   460
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   461
enum e1000_fc_mode {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   462
	e1000_fc_none = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   463
	e1000_fc_rx_pause,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   464
	e1000_fc_tx_pause,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   465
	e1000_fc_full,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   466
	e1000_fc_default = 0xFF
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   467
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   468
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   469
enum e1000_ms_type {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   470
	e1000_ms_hw_default = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   471
	e1000_ms_force_master,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   472
	e1000_ms_force_slave,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   473
	e1000_ms_auto
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   474
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   475
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   476
enum e1000_smart_speed {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   477
	e1000_smart_speed_default = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   478
	e1000_smart_speed_on,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   479
	e1000_smart_speed_off
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   480
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   481
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   482
enum e1000_serdes_link_state {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   483
	e1000_serdes_link_down = 0,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   484
	e1000_serdes_link_autoneg_progress,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   485
	e1000_serdes_link_autoneg_complete,
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   486
	e1000_serdes_link_forced_up
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   487
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   488
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   489
/* Receive Descriptor */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   490
struct e1000_rx_desc {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   491
	__le64 buffer_addr; /* Address of the descriptor's data buffer */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   492
	__le16 length;      /* Length of data DMAed into data buffer */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   493
	__le16 csum;	/* Packet checksum */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   494
	u8  status;      /* Descriptor status */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   495
	u8  errors;      /* Descriptor Errors */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   496
	__le16 special;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   497
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   498
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   499
/* Receive Descriptor - Extended */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   500
union e1000_rx_desc_extended {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   501
	struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   502
		__le64 buffer_addr;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   503
		__le64 reserved;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   504
	} read;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   505
	struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   506
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   507
			__le32 mrq;	      /* Multiple Rx Queues */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   508
			union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   509
				__le32 rss;	    /* RSS Hash */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   510
				struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   511
					__le16 ip_id;  /* IP id */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   512
					__le16 csum;   /* Packet Checksum */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   513
				} csum_ip;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   514
			} hi_dword;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   515
		} lower;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   516
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   517
			__le32 status_error;     /* ext status/error */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   518
			__le16 length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   519
			__le16 vlan;	     /* VLAN tag */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   520
		} upper;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   521
	} wb;  /* writeback */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   522
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   523
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   524
#define MAX_PS_BUFFERS 4
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   525
/* Receive Descriptor - Packet Split */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   526
union e1000_rx_desc_packet_split {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   527
	struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   528
		/* one buffer for protocol header(s), three data buffers */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   529
		__le64 buffer_addr[MAX_PS_BUFFERS];
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   530
	} read;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   531
	struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   532
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   533
			__le32 mrq;	      /* Multiple Rx Queues */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   534
			union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   535
				__le32 rss;	      /* RSS Hash */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   536
				struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   537
					__le16 ip_id;    /* IP id */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   538
					__le16 csum;     /* Packet Checksum */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   539
				} csum_ip;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   540
			} hi_dword;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   541
		} lower;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   542
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   543
			__le32 status_error;     /* ext status/error */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   544
			__le16 length0;	  /* length of buffer 0 */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   545
			__le16 vlan;	     /* VLAN tag */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   546
		} middle;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   547
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   548
			__le16 header_status;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   549
			__le16 length[3];	/* length of buffers 1-3 */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   550
		} upper;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   551
		__le64 reserved;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   552
	} wb; /* writeback */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   553
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   554
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   555
/* Transmit Descriptor */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   556
struct e1000_tx_desc {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   557
	__le64 buffer_addr;      /* Address of the descriptor's data buffer */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   558
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   559
		__le32 data;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   560
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   561
			__le16 length;    /* Data buffer length */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   562
			u8 cso;	/* Checksum offset */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   563
			u8 cmd;	/* Descriptor control */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   564
		} flags;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   565
	} lower;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   566
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   567
		__le32 data;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   568
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   569
			u8 status;     /* Descriptor status */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   570
			u8 css;	/* Checksum start */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   571
			__le16 special;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   572
		} fields;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   573
	} upper;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   574
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   575
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   576
/* Offload Context Descriptor */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   577
struct e1000_context_desc {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   578
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   579
		__le32 ip_config;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   580
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   581
			u8 ipcss;      /* IP checksum start */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   582
			u8 ipcso;      /* IP checksum offset */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   583
			__le16 ipcse;     /* IP checksum end */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   584
		} ip_fields;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   585
	} lower_setup;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   586
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   587
		__le32 tcp_config;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   588
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   589
			u8 tucss;      /* TCP checksum start */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   590
			u8 tucso;      /* TCP checksum offset */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   591
			__le16 tucse;     /* TCP checksum end */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   592
		} tcp_fields;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   593
	} upper_setup;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   594
	__le32 cmd_and_length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   595
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   596
		__le32 data;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   597
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   598
			u8 status;     /* Descriptor status */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   599
			u8 hdr_len;    /* Header length */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   600
			__le16 mss;       /* Maximum segment size */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   601
		} fields;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   602
	} tcp_seg_setup;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   603
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   604
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   605
/* Offload data descriptor */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   606
struct e1000_data_desc {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   607
	__le64 buffer_addr;   /* Address of the descriptor's buffer address */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   608
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   609
		__le32 data;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   610
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   611
			__le16 length;    /* Data buffer length */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   612
			u8 typ_len_ext;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   613
			u8 cmd;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   614
		} flags;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   615
	} lower;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   616
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   617
		__le32 data;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   618
		struct {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   619
			u8 status;     /* Descriptor status */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   620
			u8 popts;      /* Packet Options */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   621
			__le16 special;   /* */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   622
		} fields;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   623
	} upper;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   624
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   625
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   626
/* Statistics counters collected by the MAC */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   627
struct e1000_hw_stats {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   628
	u64 crcerrs;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   629
	u64 algnerrc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   630
	u64 symerrs;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   631
	u64 rxerrc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   632
	u64 mpc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   633
	u64 scc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   634
	u64 ecol;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   635
	u64 mcc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   636
	u64 latecol;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   637
	u64 colc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   638
	u64 dc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   639
	u64 tncrs;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   640
	u64 sec;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   641
	u64 cexterr;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   642
	u64 rlec;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   643
	u64 xonrxc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   644
	u64 xontxc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   645
	u64 xoffrxc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   646
	u64 xofftxc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   647
	u64 fcruc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   648
	u64 prc64;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   649
	u64 prc127;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   650
	u64 prc255;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   651
	u64 prc511;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   652
	u64 prc1023;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   653
	u64 prc1522;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   654
	u64 gprc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   655
	u64 bprc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   656
	u64 mprc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   657
	u64 gptc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   658
	u64 gorc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   659
	u64 gotc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   660
	u64 rnbc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   661
	u64 ruc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   662
	u64 rfc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   663
	u64 roc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   664
	u64 rjc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   665
	u64 mgprc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   666
	u64 mgpdc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   667
	u64 mgptc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   668
	u64 tor;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   669
	u64 tot;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   670
	u64 tpr;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   671
	u64 tpt;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   672
	u64 ptc64;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   673
	u64 ptc127;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   674
	u64 ptc255;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   675
	u64 ptc511;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   676
	u64 ptc1023;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   677
	u64 ptc1522;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   678
	u64 mptc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   679
	u64 bptc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   680
	u64 tsctc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   681
	u64 tsctfc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   682
	u64 iac;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   683
	u64 icrxptc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   684
	u64 icrxatc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   685
	u64 ictxptc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   686
	u64 ictxatc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   687
	u64 ictxqec;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   688
	u64 ictxqmtc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   689
	u64 icrxdmtc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   690
	u64 icrxoc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   691
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   692
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   693
struct e1000_phy_stats {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   694
	u32 idle_errors;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   695
	u32 receive_errors;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   696
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   697
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   698
struct e1000_host_mng_dhcp_cookie {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   699
	u32 signature;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   700
	u8  status;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   701
	u8  reserved0;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   702
	u16 vlan_id;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   703
	u32 reserved1;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   704
	u16 reserved2;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   705
	u8  reserved3;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   706
	u8  checksum;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   707
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   708
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   709
/* Host Interface "Rev 1" */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   710
struct e1000_host_command_header {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   711
	u8 command_id;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   712
	u8 command_length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   713
	u8 command_options;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   714
	u8 checksum;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   715
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   716
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   717
#define E1000_HI_MAX_DATA_LENGTH     252
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   718
struct e1000_host_command_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   719
	struct e1000_host_command_header command_header;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   720
	u8 command_data[E1000_HI_MAX_DATA_LENGTH];
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   721
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   722
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   723
/* Host Interface "Rev 2" */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   724
struct e1000_host_mng_command_header {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   725
	u8  command_id;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   726
	u8  checksum;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   727
	u16 reserved1;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   728
	u16 reserved2;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   729
	u16 command_length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   730
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   731
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   732
#define E1000_HI_MAX_MNG_DATA_LENGTH 0x6F8
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   733
struct e1000_host_mng_command_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   734
	struct e1000_host_mng_command_header command_header;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   735
	u8 command_data[E1000_HI_MAX_MNG_DATA_LENGTH];
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   736
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   737
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   738
/* Function pointers and static data for the MAC. */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   739
struct e1000_mac_operations {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   740
	s32  (*id_led_init)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   741
	bool (*check_mng_mode)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   742
	s32  (*check_for_link)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   743
	s32  (*cleanup_led)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   744
	void (*clear_hw_cntrs)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   745
	s32  (*get_bus_info)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   746
	s32  (*get_link_up_info)(struct e1000_hw *, u16 *, u16 *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   747
	s32  (*led_on)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   748
	s32  (*led_off)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   749
	void (*update_mc_addr_list)(struct e1000_hw *, u8 *, u32, u32, u32);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   750
	s32  (*reset_hw)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   751
	s32  (*init_hw)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   752
	s32  (*setup_link)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   753
	s32  (*setup_physical_interface)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   754
	s32  (*setup_led)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   755
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   756
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   757
/* Function pointers for the PHY. */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   758
struct e1000_phy_operations {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   759
	s32  (*acquire_phy)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   760
	s32  (*check_polarity)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   761
	s32  (*check_reset_block)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   762
	s32  (*commit_phy)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   763
	s32  (*force_speed_duplex)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   764
	s32  (*get_cfg_done)(struct e1000_hw *hw);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   765
	s32  (*get_cable_length)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   766
	s32  (*get_phy_info)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   767
	s32  (*read_phy_reg)(struct e1000_hw *, u32, u16 *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   768
	s32  (*read_phy_reg_locked)(struct e1000_hw *, u32, u16 *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   769
	void (*release_phy)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   770
	s32  (*reset_phy)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   771
	s32  (*set_d0_lplu_state)(struct e1000_hw *, bool);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   772
	s32  (*set_d3_lplu_state)(struct e1000_hw *, bool);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   773
	s32  (*write_phy_reg)(struct e1000_hw *, u32, u16);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   774
	s32  (*write_phy_reg_locked)(struct e1000_hw *, u32, u16);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   775
	s32  (*cfg_on_link_up)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   776
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   777
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   778
/* Function pointers for the NVM. */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   779
struct e1000_nvm_operations {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   780
	s32  (*acquire_nvm)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   781
	s32  (*read_nvm)(struct e1000_hw *, u16, u16, u16 *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   782
	void (*release_nvm)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   783
	s32  (*update_nvm)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   784
	s32  (*valid_led_default)(struct e1000_hw *, u16 *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   785
	s32  (*validate_nvm)(struct e1000_hw *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   786
	s32  (*write_nvm)(struct e1000_hw *, u16, u16, u16 *);
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   787
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   788
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   789
struct e1000_mac_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   790
	struct e1000_mac_operations ops;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   791
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   792
	u8 addr[6];
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   793
	u8 perm_addr[6];
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   794
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   795
	enum e1000_mac_type type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   796
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   797
	u32 collision_delta;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   798
	u32 ledctl_default;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   799
	u32 ledctl_mode1;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   800
	u32 ledctl_mode2;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   801
	u32 mc_filter_type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   802
	u32 tx_packet_delta;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   803
	u32 txcw;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   804
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   805
	u16 current_ifs_val;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   806
	u16 ifs_max_val;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   807
	u16 ifs_min_val;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   808
	u16 ifs_ratio;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   809
	u16 ifs_step_size;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   810
	u16 mta_reg_count;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   811
	u16 rar_entry_count;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   812
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   813
	u8  forced_speed_duplex;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   814
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   815
	bool arc_subsystem_valid;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   816
	bool autoneg;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   817
	bool autoneg_failed;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   818
	bool get_link_status;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   819
	bool in_ifs_mode;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   820
	bool serdes_has_link;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   821
	bool tx_pkt_filtering;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   822
	enum e1000_serdes_link_state serdes_link_state;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   823
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   824
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   825
struct e1000_phy_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   826
	struct e1000_phy_operations ops;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   827
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   828
	enum e1000_phy_type type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   829
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   830
	enum e1000_1000t_rx_status local_rx;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   831
	enum e1000_1000t_rx_status remote_rx;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   832
	enum e1000_ms_type ms_type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   833
	enum e1000_ms_type original_ms_type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   834
	enum e1000_rev_polarity cable_polarity;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   835
	enum e1000_smart_speed smart_speed;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   836
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   837
	u32 addr;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   838
	u32 id;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   839
	u32 reset_delay_us; /* in usec */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   840
	u32 revision;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   841
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   842
	enum e1000_media_type media_type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   843
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   844
	u16 autoneg_advertised;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   845
	u16 autoneg_mask;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   846
	u16 cable_length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   847
	u16 max_cable_length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   848
	u16 min_cable_length;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   849
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   850
	u8 mdix;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   851
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   852
	bool disable_polarity_correction;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   853
	bool is_mdix;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   854
	bool polarity_correction;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   855
	bool speed_downgraded;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   856
	bool autoneg_wait_to_complete;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   857
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   858
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   859
struct e1000_nvm_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   860
	struct e1000_nvm_operations ops;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   861
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   862
	enum e1000_nvm_type type;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   863
	enum e1000_nvm_override override;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   864
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   865
	u32 flash_bank_size;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   866
	u32 flash_base_addr;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   867
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   868
	u16 word_size;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   869
	u16 delay_usec;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   870
	u16 address_bits;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   871
	u16 opcode_bits;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   872
	u16 page_size;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   873
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   874
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   875
struct e1000_bus_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   876
	enum e1000_bus_width width;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   877
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   878
	u16 func;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   879
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   880
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   881
struct e1000_fc_info {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   882
	u32 high_water;          /* Flow control high-water mark */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   883
	u32 low_water;           /* Flow control low-water mark */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   884
	u16 pause_time;          /* Flow control pause timer */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   885
	bool send_xon;           /* Flow control send XON */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   886
	bool strict_ieee;        /* Strict IEEE mode */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   887
	enum e1000_fc_mode current_mode; /* FC mode in effect */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   888
	enum e1000_fc_mode requested_mode; /* FC mode requested by caller */
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   889
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   890
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   891
struct e1000_dev_spec_82571 {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   892
	bool laa_is_present;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   893
	bool alt_mac_addr_is_present;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   894
	u32 smb_counter;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   895
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   896
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   897
struct e1000_shadow_ram {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   898
	u16  value;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   899
	bool modified;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   900
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   901
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   902
#define E1000_ICH8_SHADOW_RAM_WORDS		2048
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   903
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   904
struct e1000_dev_spec_ich8lan {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   905
	bool kmrn_lock_loss_workaround_enabled;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   906
	struct e1000_shadow_ram shadow_ram[E1000_ICH8_SHADOW_RAM_WORDS];
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   907
	bool nvm_k1_enabled;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   908
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   909
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   910
struct e1000_hw {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   911
	struct e1000_adapter *adapter;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   912
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   913
	u8 __iomem *hw_addr;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   914
	u8 __iomem *flash_address;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   915
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   916
	struct e1000_mac_info  mac;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   917
	struct e1000_fc_info   fc;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   918
	struct e1000_phy_info  phy;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   919
	struct e1000_nvm_info  nvm;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   920
	struct e1000_bus_info  bus;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   921
	struct e1000_host_mng_dhcp_cookie mng_cookie;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   922
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   923
	union {
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   924
		struct e1000_dev_spec_82571	e82571;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   925
		struct e1000_dev_spec_ich8lan	ich8lan;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   926
	} dev_spec;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   927
};
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   928
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   929
#ifdef DEBUG
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   930
#define hw_dbg(hw, format, arg...) \
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   931
	printk(KERN_DEBUG "%s: " format, e1000e_get_hw_dev_name(hw), ##arg)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   932
#else
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   933
static inline int __attribute__ ((format (printf, 2, 3)))
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   934
hw_dbg(struct e1000_hw *hw, const char *format, ...)
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   935
{
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   936
	return 0;
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   937
}
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   938
#endif
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   939
6787ee69205e Added e1000e driver for 2.6.32.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
   940
#endif