Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
rndis.h
Go to the documentation of this file.
1 /*
2  * RNDIS Definitions for Remote NDIS
3  *
4  * Authors: Benedikt Spranger, Pengutronix
5  * Robert Schwebel, Pengutronix
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * version 2, as published by the Free Software Foundation.
10  *
11  * This software was originally developed in conformance with
12  * Microsoft's Remote NDIS Specification License Agreement.
13  */
14 
15 #ifndef _LINUX_RNDIS_H
16 #define _LINUX_RNDIS_H
17 
18 #include <linux/rndis.h>
19 #include "ndis.h"
20 
21 #define RNDIS_MAXIMUM_FRAME_SIZE 1518
22 #define RNDIS_MAX_TOTAL_SIZE 1558
23 
24 typedef struct rndis_init_msg_type
25 {
33 
34 typedef struct rndis_init_cmplt_type
35 {
39  __le32 Status;
43  __le32 Medium;
50 
51 typedef struct rndis_halt_msg_type
52 {
57 
58 typedef struct rndis_query_msg_type
59 {
63  __le32 OID;
68 
69 typedef struct rndis_query_cmplt_type
70 {
74  __le32 Status;
78 
79 typedef struct rndis_set_msg_type
80 {
84  __le32 OID;
89 
90 typedef struct rndis_set_cmplt_type
91 {
95  __le32 Status;
97 
98 typedef struct rndis_reset_msg_type
99 {
104 
105 typedef struct rndis_reset_cmplt_type
106 {
109  __le32 Status;
112 
113 typedef struct rndis_indicate_status_msg_type
114 {
117  __le32 Status;
121 
122 typedef struct rndis_keepalive_msg_type
123 {
128 
129 typedef struct rndis_keepalive_cmplt_type
130 {
134  __le32 Status;
136 
138 {
150 } __attribute__ ((packed));
153 {
159 };
161 /* implementation specific */
163 {
167 };
168 
169 typedef struct rndis_resp_t
170 {
171  struct list_head list;
172  u8 *buf;
173  u32 length;
174  int send;
175 } rndis_resp_t;
176 
177 typedef struct rndis_params
178 {
179  u8 confignr;
180  u8 used;
182  enum rndis_state state;
183  u32 medium;
184  u32 speed;
186 
187  const u8 *host_mac;
188  u16 *filter;
189  struct net_device *dev;
190 
191  u32 vendorID;
192  const char *vendorDescr;
193  void (*resp_avail)(void *v);
194  void *v;
195  struct list_head resp_queue;
196 } rndis_params;
197 
198 /* RNDIS Message parser and other useless functions */
199 int rndis_msg_parser (u8 configNr, u8 *buf);
200 int rndis_register(void (*resp_avail)(void *v), void *v);
201 void rndis_deregister (int configNr);
202 int rndis_set_param_dev (u8 configNr, struct net_device *dev,
203  u16 *cdc_filter);
204 int rndis_set_param_vendor (u8 configNr, u32 vendorID,
205  const char *vendorDescr);
206 int rndis_set_param_medium (u8 configNr, u32 medium, u32 speed);
207 void rndis_add_hdr (struct sk_buff *skb);
208 int rndis_rm_hdr(struct gether *port, struct sk_buff *skb,
209  struct sk_buff_head *list);
210 u8 *rndis_get_next_response (int configNr, u32 *length);
211 void rndis_free_response (int configNr, u8 *buf);
212 
213 void rndis_uninit (int configNr);
214 int rndis_signal_connect (int configNr);
215 int rndis_signal_disconnect (int configNr);
216 int rndis_state (int configNr);
217 extern void rndis_set_host_mac (int configNr, const u8 *addr);
218 
219 int rndis_init(void);
220 void rndis_exit (void);
221 
222 #endif /* _LINUX_RNDIS_H */