xref: /nrf52832-nimble/rt-thread/components/drivers/usb/usbdevice/class/rndis.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author            Notes
8*10465441SEvalZero  * 2012-12-24     heyuanjie87       first version
9*10465441SEvalZero  */
10*10465441SEvalZero 
11*10465441SEvalZero #ifndef  __RNDIS_H__
12*10465441SEvalZero #define  __RNDIS_H__
13*10465441SEvalZero 
14*10465441SEvalZero #include <rtthread.h>
15*10465441SEvalZero 
16*10465441SEvalZero #define USB_ETH_MTU	                    1500+14
17*10465441SEvalZero #define RNDIS_MESSAGE_BUFFER_SIZE       128
18*10465441SEvalZero 
19*10465441SEvalZero #define RESPONSE_AVAILABLE            0x00000001
20*10465441SEvalZero 
21*10465441SEvalZero /* Remote NDIS version numbers */
22*10465441SEvalZero #define RNDIS_MAJOR_VERSION	1
23*10465441SEvalZero #define RNDIS_MINOR_VERSION 0
24*10465441SEvalZero 
25*10465441SEvalZero /* common status values */
26*10465441SEvalZero #define RNDIS_STATUS_SUCCESS 			0X00000000
27*10465441SEvalZero #define RNDIS_STATUS_FAILURE			0XC0000001
28*10465441SEvalZero #define RNDIS_STATUS_INVALID_DATA		0XC0010015
29*10465441SEvalZero #define RNDIS_STATUS_NOT_SUPPORTED 		0XC00000BB
30*10465441SEvalZero #define RNDIS_STATUS_MEDIA_CONNECT		0X4001000B
31*10465441SEvalZero #define RNDIS_STATUS_MEDIA_DISCONNECT	0X4001000C
32*10465441SEvalZero 
33*10465441SEvalZero /* Remote NDIS message types */
34*10465441SEvalZero #define REMOTE_NDIS_PACKET_MSG			0x00000001
35*10465441SEvalZero #define REMOTE_NDIS_INITIALIZE_MSG		0X00000002
36*10465441SEvalZero #define REMOTE_NDIS_HALT_MSG			0X00000003
37*10465441SEvalZero #define REMOTE_NDIS_QUERY_MSG			0X00000004
38*10465441SEvalZero #define REMOTE_NDIS_SET_MSG				0X00000005
39*10465441SEvalZero #define REMOTE_NDIS_RESET_MSG			0X00000006
40*10465441SEvalZero #define REMOTE_NDIS_INDICATE_STATUS_MSG 0X00000007
41*10465441SEvalZero #define REMOTE_NDIS_KEEPALIVE_MSG		0X00000008
42*10465441SEvalZero #define REMOTE_NDIS_INITIALIZE_CMPLT	0X80000002
43*10465441SEvalZero #define REMOTE_NDIS_QUERY_CMPLT			0X80000004
44*10465441SEvalZero #define REMOTE_NDIS_SET_CMPLT			0X80000005
45*10465441SEvalZero #define REMOTE_NDIS_RESET_CMPLT			0X80000006
46*10465441SEvalZero #define REMOTE_NDIS_KEEPALIVE_CMPLT		0X80000008
47*10465441SEvalZero 
48*10465441SEvalZero /* device flags */
49*10465441SEvalZero #define RNDIS_DF_CONNECTIONLESS			0x00000001
50*10465441SEvalZero #define RNDIS_DF_CONNECTION_ORIENTED	0x00000002
51*10465441SEvalZero /* mediums */
52*10465441SEvalZero #define RNDIS_MEDIUM_802_3				0x00000000
53*10465441SEvalZero 
54*10465441SEvalZero struct ucls_rndis
55*10465441SEvalZero {
56*10465441SEvalZero     uep_t notify;
57*10465441SEvalZero     rt_uint32_t filter;
58*10465441SEvalZero     rt_bool_t header;
59*10465441SEvalZero     rt_uint8_t rndis_state;
60*10465441SEvalZero     rt_uint8_t media_state;
61*10465441SEvalZero     rt_uint8_t ethaddr[6];
62*10465441SEvalZero };
63*10465441SEvalZero 
64*10465441SEvalZero /* Remote NDIS generic message type */
65*10465441SEvalZero struct rndis_gen_msg
66*10465441SEvalZero {
67*10465441SEvalZero     rt_uint32_t	MessageType;
68*10465441SEvalZero     rt_uint32_t	MessageLength;
69*10465441SEvalZero };
70*10465441SEvalZero typedef struct rndis_gen_msg* rndis_gen_msg_t;
71*10465441SEvalZero 
72*10465441SEvalZero struct rndis_packet_msg
73*10465441SEvalZero {
74*10465441SEvalZero 	rt_uint32_t	MessageType;
75*10465441SEvalZero 	rt_uint32_t	MessageLength;
76*10465441SEvalZero 	rt_uint32_t	DataOffset;
77*10465441SEvalZero 	rt_uint32_t	DataLength;
78*10465441SEvalZero 	rt_uint32_t	OOBDataOffset;
79*10465441SEvalZero 	rt_uint32_t	OOBDataLength;
80*10465441SEvalZero 	rt_uint32_t	NumOOBDataElements;
81*10465441SEvalZero 	rt_uint32_t	PerPacketInfoOffset;
82*10465441SEvalZero 	rt_uint32_t	PerPacketInfoLength;
83*10465441SEvalZero 	rt_uint32_t	VcHandle;
84*10465441SEvalZero 	rt_uint32_t	Reserved;
85*10465441SEvalZero };
86*10465441SEvalZero typedef struct rndis_packet_msg* rndis_packet_msg_t;
87*10465441SEvalZero 
88*10465441SEvalZero /* Remote NDIS Initialize Message */
89*10465441SEvalZero struct rndis_init_msg
90*10465441SEvalZero {
91*10465441SEvalZero     rt_uint32_t MessageType;
92*10465441SEvalZero     rt_uint32_t	MessageLength;
93*10465441SEvalZero     rt_uint32_t	RequestId;
94*10465441SEvalZero     rt_uint32_t	MajorVersion;
95*10465441SEvalZero     rt_uint32_t	MinorVersion;
96*10465441SEvalZero     rt_uint32_t	MaxTransferSize;
97*10465441SEvalZero };
98*10465441SEvalZero typedef struct rndis_init_msg* rndis_init_msg_t;
99*10465441SEvalZero 
100*10465441SEvalZero /* Response */
101*10465441SEvalZero struct rndis_init_cmplt
102*10465441SEvalZero {
103*10465441SEvalZero     rt_uint32_t	MessageType;
104*10465441SEvalZero     rt_uint32_t	MessageLength;
105*10465441SEvalZero     rt_uint32_t	RequestId;
106*10465441SEvalZero     rt_uint32_t	Status;
107*10465441SEvalZero     rt_uint32_t	MajorVersion;
108*10465441SEvalZero     rt_uint32_t	MinorVersion;
109*10465441SEvalZero     rt_uint32_t	DeviceFlags;
110*10465441SEvalZero     rt_uint32_t	Medium;
111*10465441SEvalZero     rt_uint32_t MaxPacketsPerTransfer;
112*10465441SEvalZero     rt_uint32_t	MaxTransferSize;
113*10465441SEvalZero     rt_uint32_t PacketAlignmentFactor;
114*10465441SEvalZero     rt_uint32_t	AfListOffset;
115*10465441SEvalZero     rt_uint32_t	AfListSize;
116*10465441SEvalZero };
117*10465441SEvalZero typedef struct rndis_init_cmplt* rndis_init_cmplt_t;
118*10465441SEvalZero 
119*10465441SEvalZero /* Remote NDIS Halt Message */
120*10465441SEvalZero struct rndis_halt_msg
121*10465441SEvalZero {
122*10465441SEvalZero     rt_uint32_t	MessageType;
123*10465441SEvalZero     rt_uint32_t	MessageLength;
124*10465441SEvalZero     rt_uint32_t	RequestId;
125*10465441SEvalZero };
126*10465441SEvalZero 
127*10465441SEvalZero /* Remote NDIS Query Message */
128*10465441SEvalZero struct rndis_query_msg
129*10465441SEvalZero {
130*10465441SEvalZero     rt_uint32_t	MessageType;
131*10465441SEvalZero     rt_uint32_t	MessageLength;
132*10465441SEvalZero     rt_uint32_t	RequestId;
133*10465441SEvalZero     rt_uint32_t	Oid;
134*10465441SEvalZero     rt_uint32_t	InformationBufferLength;
135*10465441SEvalZero     rt_uint32_t	InformationBufferOffset;
136*10465441SEvalZero     rt_uint32_t	DeviceVcHandle;
137*10465441SEvalZero };
138*10465441SEvalZero typedef struct rndis_query_msg* rndis_query_msg_t;
139*10465441SEvalZero 
140*10465441SEvalZero /* Response */
141*10465441SEvalZero struct rndis_query_cmplt
142*10465441SEvalZero {
143*10465441SEvalZero     rt_uint32_t	MessageType;
144*10465441SEvalZero     rt_uint32_t	MessageLength;
145*10465441SEvalZero     rt_uint32_t	RequestId;
146*10465441SEvalZero     rt_uint32_t	Status;
147*10465441SEvalZero     rt_uint32_t	InformationBufferLength;
148*10465441SEvalZero     rt_uint32_t	InformationBufferOffset;
149*10465441SEvalZero };
150*10465441SEvalZero typedef struct rndis_query_cmplt* rndis_query_cmplt_t;
151*10465441SEvalZero 
152*10465441SEvalZero /* Remote NDIS Set Message */
153*10465441SEvalZero struct rndis_set_msg
154*10465441SEvalZero {
155*10465441SEvalZero     rt_uint32_t	MessageType;
156*10465441SEvalZero     rt_uint32_t	MessageLength;
157*10465441SEvalZero     rt_uint32_t	RequestId;
158*10465441SEvalZero     rt_uint32_t	Oid;
159*10465441SEvalZero     rt_uint32_t	InformationBufferLength;
160*10465441SEvalZero     rt_uint32_t	InformationBufferOffset;
161*10465441SEvalZero     rt_uint32_t	DeviceVcHandle;
162*10465441SEvalZero };
163*10465441SEvalZero typedef struct rndis_set_msg* rndis_set_msg_t;
164*10465441SEvalZero 
165*10465441SEvalZero /* Response */
166*10465441SEvalZero struct rndis_set_cmplt
167*10465441SEvalZero {
168*10465441SEvalZero     rt_uint32_t	MessageType;
169*10465441SEvalZero     rt_uint32_t	MessageLength;
170*10465441SEvalZero     rt_uint32_t	RequestId;
171*10465441SEvalZero     rt_uint32_t	Status;
172*10465441SEvalZero };
173*10465441SEvalZero typedef struct rndis_set_cmplt* rndis_set_cmplt_t;
174*10465441SEvalZero 
175*10465441SEvalZero /* Remote NDIS Soft Reset Message */
176*10465441SEvalZero struct rndis_reset_msg
177*10465441SEvalZero {
178*10465441SEvalZero     rt_uint32_t	MessageType;
179*10465441SEvalZero     rt_uint32_t	MessageLength;
180*10465441SEvalZero     rt_uint32_t	Reserved;
181*10465441SEvalZero };
182*10465441SEvalZero 
183*10465441SEvalZero /* Remote NDIS Indicate Status Message */
184*10465441SEvalZero struct rndis_indicate_status_msg
185*10465441SEvalZero {
186*10465441SEvalZero     rt_uint32_t MessageType;
187*10465441SEvalZero     rt_uint32_t	MessageLength;
188*10465441SEvalZero     rt_uint32_t	Status;
189*10465441SEvalZero     rt_uint32_t	StatusBufferLength;
190*10465441SEvalZero     rt_uint32_t	StatusBufferOffset;
191*10465441SEvalZero };
192*10465441SEvalZero typedef struct rndis_indicate_status_msg* rndis_indicate_status_msg_t;
193*10465441SEvalZero 
194*10465441SEvalZero struct rndis_keepalive_msg
195*10465441SEvalZero {
196*10465441SEvalZero 	rt_uint32_t	MessageType;
197*10465441SEvalZero 	rt_uint32_t	MessageLength;
198*10465441SEvalZero 	rt_uint32_t	RequestID;
199*10465441SEvalZero };
200*10465441SEvalZero typedef struct rndis_keepalive_msg* rndis_keepalive_msg_t;
201*10465441SEvalZero 
202*10465441SEvalZero /* Response: */
203*10465441SEvalZero struct rndis_keepalive_cmplt
204*10465441SEvalZero {
205*10465441SEvalZero 	rt_uint32_t	MessageType;
206*10465441SEvalZero 	rt_uint32_t	MessageLength;
207*10465441SEvalZero 	rt_uint32_t	RequestId;
208*10465441SEvalZero 	rt_uint32_t	Status;
209*10465441SEvalZero };
210*10465441SEvalZero typedef struct rndis_keepalive_cmplt* rndis_keepalive_cmplt_t;
211*10465441SEvalZero 
212*10465441SEvalZero 
213*10465441SEvalZero 
214*10465441SEvalZero 
215*10465441SEvalZero 
216*10465441SEvalZero 
217*10465441SEvalZero 
218*10465441SEvalZero #endif
219