blob: 07d835b3b7068de21a3bed2f6efee8f637cacc9c (
plain)
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
|
#ifndef __WINBOND_MDS_H
#define __WINBOND_MDS_H
#include <linux/timer.h>
#include <linux/types.h>
#include <linux/atomic.h>
#include "localpara.h"
#include "mac_structures.h"
/* Preamble_Type, see <SFS-802.11G-MIB-203> */
enum {
WLAN_PREAMBLE_TYPE_SHORT,
WLAN_PREAMBLE_TYPE_LONG,
};
/*****************************************************************************/
#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 */
#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_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 0 /* Disable */
#define DEFAULT_SIFSTIME 10
#define DEFAULT_ACKTIME_1ML 304 /* 148 + 44 + 112 */
#define DEFAULT_ACKTIME_2ML 248 /* 148 + 44 + 56 */
#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 */
/* 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
struct wb35_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)];/* 1: MLME 2: NDIS control 3: NDIS data */
u8 TxCountInBuffer[((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03)];
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 */
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];
u16 MicAdd; /* If want to add the Mic, this variable equal to 8 */
u16 MicWriteIndex; /* The number of MicWriteAddress */
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 */
/* ---- for Tx Parameter */
u16 TxFragmentThreshold; /* For frame body only */
u16 TxRTSThreshold;
u32 MaxReceiveTime;
/* 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;
u32 TxTsc_2;
};
#endif
|