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
|
#ifndef __INC_USBMODESWITCH_H
#define __INC_USBMODESWITCH_H
typedef enum _USB_MODE
{
USB_MODE_AUTO,
USB_MODE_U2,
USB_MODE_U3,
}USB_MODE, *PUSB_MODE;
typedef struct _USB_MODE_MECH
{
BOOLEAN bUsbModeMechOn;
u1Byte CurUsbMode; // USB mode read from HW when initialization. This represent real USB mode now. (0:unknown, 1:usb2, 2: usb3)
u1Byte RegUsbMode; // USB mode read from Registry when inialization. This represent USB mode set last time. (0:unknown, 1:usb2, 2: usb3)
u1Byte SetUsbMode; // USB mode set. This represent USB mode going to be set be the mechanism. (0:unknown, 1:usb2, 2: usb3)
u1Byte HubUsbMode; // USB mode set. This represent USB mode going to be set be the mechanism. (0:unknown, 1:usb2, 2: usb3)
u1Byte RegForcedUsbMode; //Forced USB mode. (0:not define, 1:usb2, 2: usb3)
u1Byte RegUsbCurMode; //Current USB mode. (0:not define, 1:usb2, 2: usb3)
u1Byte RegUsbSwFast; // COntrol USB switch ability.
u1Byte RegUsbWps; // Check if WPS will not return USB switch true;
u1Byte RegUsbSp; // Thss round is enabled ue to usb switch and only scan one channel.
u1Byte RegUsbChnl; // After USB switch, we only need to scan the channel at first.
u1Byte RegUsbSwitchSpeed; // USB switch speed level
u1Byte RegUsbSwitchThL; // RSSI Low Threshold to Switch USB
u1Byte RegUsbSwitchThH; // RSSI High Threshold to Switch USB
u1Byte RegUsbSwitchThRssi; // RSSI thresh for first link
u1Byte RegUsbSwBy; // USB switch by service or driver itself.
u1Byte RegUsbRfSet; // USB switch by RF setting
u1Byte UsbSwitchRefreshCnt; // USB switch fast mode thresh value.
u1Byte UsbSwitchByCnt; // USB switch fast mode thresh value.
u8Byte Usb2BitMap; // FOr controlling USB2.0 TX SS power index utility
u1Byte Usb2PwrIdx;
BOOLEAN bHardToRaise;
BOOLEAN bWpsRunning;
BOOLEAN bFirstScanOver; //To distinguish NEC WPS dummy profile
RT_WORK_ITEM UsbModeSwitchWorkitem;
RT_TIMER UsbModeSwitchTimer;
u1Byte SwByUIChnl;
BOOLEAN bPauseEDCCAForConnection;
} USB_MODE_MECH, *PUSB_MODE_MECH;
#define UsbModeSwitch_SetUsbModeMechOn(_Adapter, _UsbModeOn) \
(_Adapter)->UsbModeMechanism.bUsbModeMechOn = (_UsbModeOn)
#define UsbModeSwitch_SetRegUsbMode(_Adapter, _RegUsbMode) \
(_Adapter)->UsbModeMechanism.RegUsbMode = (_RegUsbMode)
#define UsbModeSwitch_SetCurUsbMode(_Adapter, _CurUsbMode) \
(_Adapter)->UsbModeMechanism.CurUsbMode = (_CurUsbMode)
#define UsbModeSwitch_SetForcedUsbMode(_Adapter, _ForcedUsbMode) \
(_Adapter)->UsbModeMechanism.RegForcedUsbMode = (_ForcedUsbMode)
#define UsbModeSwitch_SetCurrentUsbMode(_Adapter, _CurrentUsbMode) \
(_Adapter)->UsbModeMechanism.RegUsbCurMode = (_CurrentUsbMode)
#define UsbModeSwitch_SetCurrentHubUsbMode(_Adapter, _CurrentHubUsbMode) \
(_Adapter)->UsbModeMechanism.HubUsbMode = (_CurrentHubUsbMode)
#define UsbModeSwitch_SetUsbRaiseStatus(_Adapter, _bUsbRaiseStatus) \
(_Adapter)->UsbModeMechanism.bHardToRaise = (_bUsbRaiseStatus)
#define UsbModeSwitch_SetUsbWpsStatus(_Adapter, _bWpsStatus) \
(_Adapter)->UsbModeMechanism.bWpsRunning = (_bWpsStatus)
#define UsbModeSwitch_SetFirstScanOver(_Adapter, _bFirstScanOver) \
(_Adapter)->UsbModeMechanism.bFirstScanOver = (_bFirstScanOver)
#define UsbModeSwitch_SetUsbSwitchFast(_Adapter, _UsbSwitchFast) \
(_Adapter)->UsbModeMechanism.RegUsbSwFast = (_UsbSwitchFast)
#define UsbModeSwitch_SetUsbSwitchWps(_Adapter, _UsbSwitchWps) \
(_Adapter)->UsbModeMechanism.RegUsbWps = (_UsbSwitchWps)
#define UsbModeSwitch_SetUsbSwitchPostive(_Adapter, _UsbSwitchPositive) \
(_Adapter)->UsbModeMechanism.RegUsbSp = (_UsbSwitchPositive)
#define UsbModeSwitch_SetUsbSwitchChannel(_Adapter, _UsbSwitchChnl) \
(_Adapter)->UsbModeMechanism.RegUsbChnl = (_UsbSwitchChnl)
#define UsbModeSwitch_SetUsbSwitchSpeed(_Adapter, _UsbSwitchSpeed) \
(_Adapter)->UsbModeMechanism.RegUsbSwitchSpeed = (_UsbSwitchSpeed)
#define UsbModeSwitch_SetUsbSwitchThL(_Adapter, _UsbSwitchThL) \
(_Adapter)->UsbModeMechanism.RegUsbSwitchThL = (_UsbSwitchThL)
#define UsbModeSwitch_SetUsbSwitchThH(_Adapter, _UsbSwitchThH) \
(_Adapter)->UsbModeMechanism.RegUsbSwitchThH = (_UsbSwitchThH)
#define UsbModeSwitch_SetUsbSwitchThRssi(_Adapter, _UsbSwitchThRssi) \
(_Adapter)->UsbModeMechanism.RegUsbSwitchThRssi = (_UsbSwitchThRssi)
#define UsbModeSwitch_SetUsbSwitchBy(_Adapter, _UsbSwitchBy) \
(_Adapter)->UsbModeMechanism.RegUsbSwBy = (_UsbSwitchBy)
#define UsbModeSwitch_SetUsbSwitchRfSet(_Adapter, _UsbSwitchRfSet) \
(_Adapter)->UsbModeMechanism.RegUsbRfSet = (_UsbSwitchRfSet)
VOID
UsbModeSwitchInit(
PADAPTER Adapter
);
VOID
UsbModeSwitchDeinit(
PADAPTER Adapter
);
BOOLEAN
UsbModeSwitchCheck(
PADAPTER Adapter,
pu1Byte BSSID
);
u4Byte
UsbModeCurrentStateQuery(
PADAPTER Adapter
);
BOOLEAN
UsbModeSwitchStartTransition(
PADAPTER Adapter
);
BOOLEAN
UsbModeSwitchConfirm(
PADAPTER Adapter
);
VOID
UsbModeForcedTransition(
PADAPTER Adapter
);
VOID
UsbModeSetHubUsbType(
PADAPTER Adapter,
pu1Byte UsbHostType
);
u1Byte
UsbModeQueryHubUsbType(
PADAPTER Adapter
);
u1Byte
UsbModeQueryDeviceUsbType(
PADAPTER Adapter
);
u1Byte
UsbModeQuerySwitchPositive(
PADAPTER Adapter
);
u1Byte
UsbModeQuerySwitchChannel(
PADAPTER Adapter
);
VOID
UsbModeSwitchCheckExt(
PADAPTER Adapter
);
u1Byte
UsbModeQueryRfTransmitPath(
PADAPTER Adapter,
u1Byte RfType
);
VOID
UsbModeSelectAMPDUPreTx(
PADAPTER Adapter
);
VOID
UsbModeSelectRaMask(
PADAPTER Adapter,
pu8Byte BitMap,
CHANNEL_WIDTH BandWidth
);
VOID
UsbModeSelect3ssPwrInU2(
PADAPTER Adapter,
CHANNEL_WIDTH BandWidth,
u1Byte Channel
);
u1Byte
UsbModeQueryRfSet(
PADAPTER Adapter
);
#endif
|