• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/staging/et131x/
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright �� 2005 Agere Systems Inc.
6 * All rights reserved.
7 *   http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_adapter.h - Header which includes the private adapter structure, along
12 *                    with related support structures, macros, definitions, etc.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software.  Using this
20 * software indicates your acceptance of these terms and conditions.  If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright �� 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 *    list of conditions and the following Disclaimer as comments in the code as
31 *    well as in the documentation and/or other materials provided with the
32 *    distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 *    this list of conditions and the following Disclaimer in the documentation
36 *    and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 *    may be used to endorse or promote products derived from this software
40 *    without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_ADAPTER_H__
60#define __ET131X_ADAPTER_H__
61
62#include "et1310_address_map.h"
63#include "et1310_tx.h"
64#include "et1310_rx.h"
65
66/*
67 * Do not change these values: if changed, then change also in respective
68 * TXdma and Rxdma engines
69 */
70#define NUM_DESC_PER_RING_TX         512	/* TX Do not change these values */
71#define NUM_TCB                      64
72
73/*
74 * These values are all superseded by registry entries to facilitate tuning.
75 * Once the desired performance has been achieved, the optimal registry values
76 * should be re-populated to these #defines:
77 */
78#define NUM_TRAFFIC_CLASSES          1
79
80#define TX_ERROR_PERIOD             1000
81
82#define LO_MARK_PERCENT_FOR_PSR     15
83#define LO_MARK_PERCENT_FOR_RX      15
84
85/* RFD (Receive Frame Descriptor) */
86typedef struct _MP_RFD {
87	struct list_head list_node;
88	struct sk_buff *Packet;
89	u32 PacketSize;	/* total size of receive frame */
90	u16 bufferindex;
91	u8 ringindex;
92} MP_RFD, *PMP_RFD;
93
94/* Enum for Flow Control */
95typedef enum _eflow_control_t {
96	Both = 0,
97	TxOnly = 1,
98	RxOnly = 2,
99	None = 3
100} eFLOW_CONTROL_t, *PeFLOW_CONTROL_t;
101
102/* Struct to define some device statistics */
103typedef struct _ce_stats_t {
104	/* Link Input/Output stats */
105	uint64_t ipackets;	/* # of in packets */
106	uint64_t opackets;	/* # of out packets */
107
108	/* MIB II variables
109	 *
110	 * NOTE: atomic_t types are only guaranteed to store 24-bits; if we
111	 * MUST have 32, then we'll need another way to perform atomic
112	 * operations
113	 */
114	u32 unircv;	/* # multicast packets received */
115	atomic_t unixmt;	/* # multicast packets for Tx */
116	u32 multircv;	/* # multicast packets received */
117	atomic_t multixmt;	/* # multicast packets for Tx */
118	u32 brdcstrcv;	/* # broadcast packets received */
119	atomic_t brdcstxmt;	/* # broadcast packets for Tx */
120	u32 norcvbuf;	/* # Rx packets discarded */
121	u32 noxmtbuf;	/* # Tx packets discarded */
122
123	/* Transciever state informations. */
124	u8 xcvr_addr;
125	u32 xcvr_id;
126
127	/* Tx Statistics. */
128	u32 tx_uflo;		/* Tx Underruns */
129
130	u32 collisions;
131	u32 excessive_collisions;
132	u32 first_collision;
133	u32 late_collisions;
134	u32 max_pkt_error;
135	u32 tx_deferred;
136
137	/* Rx Statistics. */
138	u32 rx_ov_flow;	/* Rx Overflow */
139
140	u32 length_err;
141	u32 alignment_err;
142	u32 crc_err;
143	u32 code_violations;
144	u32 other_errors;
145
146	u32 SynchrounousIterations;
147	u32 InterruptStatus;
148} CE_STATS_t, *PCE_STATS_t;
149
150typedef struct _MP_POWER_MGMT {
151	/* variable putting the phy into coma mode when boot up with no cable
152	 * plugged in after 5 seconds
153	 */
154	u8 TransPhyComaModeOnBoot;
155
156	/* Next two used to save power information at power down. This
157	 * information will be used during power up to set up parts of Power
158	 * Management in JAGCore
159	 */
160	u16 PowerDownSpeed;
161	u8 PowerDownDuplex;
162} MP_POWER_MGMT, *PMP_POWER_MGMT;
163
164/* The private adapter structure */
165struct et131x_adapter {
166	struct net_device *netdev;
167	struct pci_dev *pdev;
168
169	struct work_struct task;
170
171	/* Flags that indicate current state of the adapter */
172	u32 Flags;
173	u32 HwErrCount;
174
175	/* Configuration  */
176	u8 PermanentAddress[ETH_ALEN];
177	u8 CurrentAddress[ETH_ALEN];
178	bool has_eeprom;
179	u8 eepromData[2];
180
181	/* Spinlocks */
182	spinlock_t Lock;
183
184	spinlock_t TCBSendQLock;
185	spinlock_t TCBReadyQLock;
186	spinlock_t SendHWLock;
187
188	spinlock_t RcvLock;
189	spinlock_t RcvPendLock;
190	spinlock_t FbrLock;
191
192	spinlock_t PHYLock;
193
194	/* Packet Filter and look ahead size */
195	u32 PacketFilter;
196	u32 linkspeed;
197	u32 duplex_mode;
198
199	/* multicast list */
200	u32 MCAddressCount;
201	u8 MCList[NIC_MAX_MCAST_LIST][ETH_ALEN];
202
203	/* Pointer to the device's PCI register space */
204	ADDRESS_MAP_t __iomem *regs;
205
206	/* Registry parameters */
207	u8 SpeedDuplex;		/* speed/duplex */
208	eFLOW_CONTROL_t RegistryFlowControl;	/* for 802.3x flow control */
209	u8 RegistryPhyComa;	/* Phy Coma mode enable/disable */
210
211	u32 RegistryRxMemEnd;	/* Size of internal rx memory */
212	u32 RegistryJumboPacket;	/* Max supported ethernet packet size */
213
214
215	/* Derived from the registry: */
216	u8 AiForceDpx;		/* duplex setting */
217	u16 AiForceSpeed;		/* 'Speed', user over-ride of line speed */
218	eFLOW_CONTROL_t FlowControl;	/* flow control validated by the far-end */
219	enum {
220		NETIF_STATUS_INVALID = 0,
221		NETIF_STATUS_MEDIA_CONNECT,
222		NETIF_STATUS_MEDIA_DISCONNECT,
223		NETIF_STATUS_MAX
224	} MediaState;
225
226	/* Minimize init-time */
227	struct timer_list ErrorTimer;
228	MP_POWER_MGMT PoMgmt;
229	u32 CachedMaskValue;
230
231	/* Xcvr status at last poll */
232	MI_BMSR_t Bmsr;
233
234	/* Tx Memory Variables */
235	struct tx_ring tx_ring;
236
237	/* Rx Memory Variables */
238	struct rx_ring rx_ring;
239
240	/* Loopback specifics */
241	u8 ReplicaPhyLoopbk;	/* Replica Enable */
242	u8 ReplicaPhyLoopbkPF;	/* Replica Enable Pass/Fail */
243
244	/* Stats */
245	CE_STATS_t Stats;
246
247	struct net_device_stats net_stats;
248	struct net_device_stats net_stats_prev;
249};
250
251#endif /* __ET131X_ADAPTER_H__ */
252