aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/winbond/mds_s.h
blob: ebf61e3ce1dcf74e87dbd10e652291bd454204b6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#ifndef __WINBOND_MDS_H
#define __WINBOND_MDS_H

#include <linux/timer.h>
#include <linux/types.h>
#include <asm/atomic.h>

#include "localpara.h"
#include "mac_structures.h"
#include "scan_s.h"

////////////////////////////////////////////////////////////////////////////////////////////////////////
#define MAX_USB_TX_DESCRIPTOR		15		// IS89C35 ability
#define MAX_USB_TX_BUFFER_NUMBER	4		// Virtual pre-buffer number of MAX_USB_TX_BUFFER
#define MAX_USB_TX_BUFFER			4096	// IS89C35 ability 4n alignment is required for hardware

#define AUTH_REQUEST_PAIRWISE_ERROR			0		// _F flag setting
#define AUTH_REQUEST_GROUP_ERROR			1		// _F flag setting

// For variable setting
#define CURRENT_BSS_TYPE				psBSS(psLOCAL->wConnectedSTAindex)->bBssType
#define CURRENT_WEP_MODE				psSME->_dot11PrivacyInvoked
#define CURRENT_BSSID					psBSS(psLOCAL->wConnectedSTAindex)->abBssID
#define CURRENT_DESIRED_WPA_ENABLE		((psSME->bDesiredAuthMode==WPA_AUTH)||(psSME->bDesiredAuthMode==WPAPSK_AUTH))
#ifdef _WPA2_
#define CURRENT_DESIRED_WPA2_ENABLE		((psSME->bDesiredAuthMode==WPA2_AUTH)||(psSME->bDesiredAuthMode==WPA2PSK_AUTH))
#endif //end def _WPA2_
#define CURRENT_PAIRWISE_KEY_OK			psSME->pairwise_key_ok
//[20040712 WS]
#define CURRENT_GROUP_KEY_OK			psSME->group_key_ok
#define CURRENT_PAIRWISE_KEY			psSME->tx_mic_key
#define CURRENT_GROUP_KEY				psSME->group_tx_mic_key
#define CURRENT_ENCRYPT_STATUS			psSME->encrypt_status
#define CURRENT_WEP_ID					adapter->sSmePara._dot11WEPDefaultKeyID
#define CURRENT_CONTROL_PORT_BLOCK		( psSME->wpa_ok!=1 || (adapter->Mds.boCounterMeasureBlock==1 && (CURRENT_ENCRYPT_STATUS==ENCRYPT_TKIP)) )
#define CURRENT_FRAGMENT_THRESHOLD		(adapter->Mds.TxFragmentThreshold & ~0x1)
#define CURRENT_PREAMBLE_MODE			psLOCAL->boShortPreamble?WLAN_PREAMBLE_TYPE_SHORT:WLAN_PREAMBLE_TYPE_LONG
#define CURRENT_TX_RATE					adapter->sLocalPara.CurrentTxRate
#define CURRENT_FALL_BACK_TX_RATE		adapter->sLocalPara.CurrentTxFallbackRate
#define CURRENT_TX_RATE_FOR_MNG			adapter->sLocalPara.CurrentTxRateForMng
#define CURRENT_PROTECT_MECHANISM		psLOCAL->boProtectMechanism
#define CURRENT_RTS_THRESHOLD			adapter->Mds.TxRTSThreshold

#define MIB_GS_XMIT_OK_INC				adapter->sLocalPara.GS_XMIT_OK++
#define MIB_GS_RCV_OK_INC				adapter->sLocalPara.GS_RCV_OK++
#define MIB_GS_XMIT_ERROR_INC			adapter->sLocalPara.GS_XMIT_ERROR

//---------- TX -----------------------------------
#define ETHERNET_TX_DESCRIPTORS         MAX_USB_TX_BUFFER_NUMBER

//---------- RX ------------------------------------
#define ETHERNET_RX_DESCRIPTORS			8	//It's not necessary to allocate more than 2 in sync indicate

//================================================================
// Configration default value
//================================================================
#define DEFAULT_MULTICASTLISTMAX		32 		// standard
#define DEFAULT_TX_BURSTLENGTH			3 		// 32 Longwords
#define DEFAULT_RX_BURSTLENGTH			3 		// 32 Longwords
#define DEFAULT_TX_THRESHOLD			0 		// Full Packet
#define DEFAULT_RX_THRESHOLD			0 		// Full Packet
#define DEFAULT_MAXTXRATE				6 		// 11 Mbps (Long)
#define DEFAULT_CHANNEL					3 		// Chennel 3
#define DEFAULT_RTSThreshold			2347 	// Disable RTS
//#define DEFAULT_PME						1 		// Enable
#define DEFAULT_PME						0 		// Disable
#define DEFAULT_SIFSTIME				10
#define DEFAULT_ACKTIME_1ML             304     // 148+44+112 911220 by LCC
#define DEFAULT_ACKTIME_2ML             248     // 148+44+56 911220 by LCC
#define DEFAULT_FRAGMENT_THRESHOLD      2346 	// No fragment
#define DEFAULT_PREAMBLE_LENGTH			72
#define DEFAULT_PLCPHEADERTIME_LENGTH	24

/*------------------------------------------------------------------------
 0.96 sec since time unit of the R03 for the current, W89C32 is about 60ns
 instead of 960 ns. This shall be fixed in the future W89C32
 -------------------------------------------------------------------------*/
#define DEFAULT_MAX_RECEIVE_TIME        16440000

#define RX_BUF_SIZE						2352        // 600 	// For 301 must be multiple of 8
#define MAX_RX_DESCRIPTORS              18         // Rx Layer 2
#define MAX_BUFFER_QUEUE	8 // The value is always equal 8 due to NDIS_PACKET's MiniportReserved field size


// For brand-new rx system
#define MDS_ID_IGNORE				ETHERNET_RX_DESCRIPTORS

// For Tx Packet status classify
#define PACKET_FREE_TO_USE						0
#define PACKET_COME_FROM_NDIS					0x08
#define PACKET_COME_FROM_MLME					0x80
#define PACKET_SEND_COMPLETE					0xff

typedef struct _MDS
{
	// For Tx usage
	u8	TxOwner[ ((MAX_USB_TX_BUFFER_NUMBER + 3) & ~0x03) ];
	u8	*pTxBuffer;
	u16	TxBufferSize[ ((MAX_USB_TX_BUFFER_NUMBER + 1) & ~0x01) ];
	u8	TxDesFrom[ ((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03) ];//931130.4.u // 1: MLME 2: NDIS control 3: NDIS data
	u8	TxCountInBuffer[ ((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03) ]; // 20060928

	u8	TxFillIndex;//the next index of TxBuffer can be used
	u8	TxDesIndex;//The next index of TxDes can be used
	u8	ScanTxPause;	//data Tx pause because the scanning is progressing, but probe request Tx won't.
	u8	TxPause;//For pause the Mds_Tx modult

	atomic_t	TxThreadCount;//For thread counting 931130.4.v
//950301 delete due to HW
//	atomic_t	TxConcurrentCount;//931130.4.w

	u16	TxResult[ ((MAX_USB_TX_DESCRIPTOR + 1) & ~0x01) ];//Collect the sending result of Mpdu

	u8	MicRedundant[8]; // For tmp use
	u8	*MicWriteAddress[2]; //The start address to fill the Mic, use 2 point due to Mic maybe fragment

	u16	MicWriteSize[2]; //931130.4.x

	u16	MicAdd; // If want to add the Mic, this variable equal to 8
	u16	MicWriteIndex;//The number of MicWriteAddress 931130.4.y

	u8	TxRate[ ((MAX_USB_TX_DESCRIPTOR+1)&~0x01) ][2]; // [0] current tx rate, [1] fall back rate
	u8	TxInfo[ ((MAX_USB_TX_DESCRIPTOR+1)&~0x01) ];	//Store information for callback function

	//WKCHEN added for scanning mechanism
	u8	TxToggle;		//It is TRUE if there are tx activities in some time interval
	u8	Reserved_[3];

	//---------- for Tx Parameter
	u16	TxFragmentThreshold;    	// For frame body only
	u16	TxRTSThreshold;

	u32		MaxReceiveTime;//911220.3 Add

	// depend on OS,
	u32					MulticastListNo;
	u32					PacketFilter; // Setting by NDIS, the current packet filter in use.
	u8					MulticastAddressesArray[DEFAULT_MULTICASTLISTMAX][MAC_ADDR_LENGTH];

	//COUNTERMEASURE
	u8		bMICfailCount;
	u8		boCounterMeasureBlock;
	u8		reserved_4[2];

	u32	TxTsc; // 20060214
	u32	TxTsc_2; // 20060214

} MDS, *PMDS;


typedef struct _RxBuffer
{
    u8 * pBufferAddress;     // Pointer the received data buffer.
	u16	BufferSize;
	u8	RESERVED;
	u8	BufferIndex;// Only 1 byte
} RXBUFFER, *PRXBUFFER;

//
// Reveive Layer 1 Format.
//----------------------------
typedef struct _RXLAYER1
{
    u16  SequenceNumber;     // The sequence number of the last received packet.
	u16	BufferTotalSize;

	u32	InUsed;
    u32   DecryptionMethod;   // The desired defragment number of the next incoming packet.

	u8	DeFragmentNumber;
	u8	FrameType;
    u8	TypeEncapsulated;
	u8	BufferNumber;

	u32	FirstFrameArrivedTime;

	RXBUFFER	BufferQueue[ MAX_BUFFER_QUEUE ];

	u8		LastFrameType; // 20061004 for fix intel 3945 's bug
	u8		RESERVED[3];  //@@ anson

	/////////////////////////////////////////////////////////////////////////////////////////////
	// For brand-new Rx system
	u8	ReservedBuffer[ 2400 ];//If Buffer ID is reserved one, it must copy the data into this area
	u8	*ReservedBufferPoint;// Point to the next availabe address of reserved buffer

}RXLAYER1, * PRXLAYER1;

#endif