Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]

Diff markup

Differences between /linux/include/linux/usb/usbnet.h (Version 2.6.25.8) and /linux/include/linux/usb/usbnet.h (Version 2.6.11.8)


  1 /*                                                  1 
  2  * USB Networking Link Interface                  
  3  *                                                
  4  * Copyright (C) 2000-2005 by David Brownell <    
  5  * Copyright (C) 2003-2005 David Hollis <dholl    
  6  *                                                
  7  * This program is free software; you can redi    
  8  * it under the terms of the GNU General Publi    
  9  * the Free Software Foundation; either versio    
 10  * (at your option) any later version.            
 11  *                                                
 12  * This program is distributed in the hope tha    
 13  * but WITHOUT ANY WARRANTY; without even the     
 14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR    
 15  * GNU General Public License for more details    
 16  *                                                
 17  * You should have received a copy of the GNU     
 18  * along with this program; if not, write to t    
 19  * Foundation, Inc., 59 Temple Place, Suite 33    
 20  */                                               
 21                                                   
 22                                                   
 23 #ifndef __USBNET_H                                
 24 #define __USBNET_H                                
 25                                                   
 26                                                   
 27 /* interface from usbnet core to each USB netw    
 28 struct usbnet {                                   
 29         /* housekeeping */                        
 30         struct usb_device       *udev;            
 31         struct usb_interface    *intf;            
 32         struct driver_info      *driver_info;     
 33         const char              *driver_name;     
 34         void                    *driver_priv;     
 35         wait_queue_head_t       *wait;            
 36         struct mutex            phy_mutex;        
 37         unsigned char           suspend_count;    
 38                                                   
 39         /* i/o info: pipes etc */                 
 40         unsigned                in, out;          
 41         struct usb_host_endpoint *status;         
 42         unsigned                maxpacket;        
 43         struct timer_list       delay;            
 44                                                   
 45         /* protocol/interface state */            
 46         struct net_device       *net;             
 47         struct net_device_stats stats;            
 48         int                     msg_enable;       
 49         unsigned long           data [5];         
 50         u32                     xid;              
 51         u32                     hard_mtu;         
 52         size_t                  rx_urb_size;      
 53         struct mii_if_info      mii;              
 54                                                   
 55         /* various kinds of pending driver wor    
 56         struct sk_buff_head     rxq;              
 57         struct sk_buff_head     txq;              
 58         struct sk_buff_head     done;             
 59         struct urb              *interrupt;       
 60         struct tasklet_struct   bh;               
 61                                                   
 62         struct work_struct      kevent;           
 63         unsigned long           flags;            
 64 #               define EVENT_TX_HALT    0         
 65 #               define EVENT_RX_HALT    1         
 66 #               define EVENT_RX_MEMORY  2         
 67 #               define EVENT_STS_SPLIT  3         
 68 #               define EVENT_LINK_RESET 4         
 69 };                                                
 70                                                   
 71 static inline struct usb_driver *driver_of(str    
 72 {                                                 
 73         return to_usb_driver(intf->dev.driver)    
 74 }                                                 
 75                                                   
 76 /* interface from the device/framing level "mi    
 77 struct driver_info {                              
 78         char            *description;             
 79                                                   
 80         int             flags;                    
 81 /* framing is CDC Ethernet, not writing ZLPs (    
 82 #define FLAG_FRAMING_NC 0x0001          /* gua    
 83 #define FLAG_FRAMING_GL 0x0002          /* gen    
 84 #define FLAG_FRAMING_Z  0x0004          /* zau    
 85 #define FLAG_FRAMING_RN 0x0008          /* RND    
 86                                                   
 87 #define FLAG_NO_SETINT  0x0010          /* dev    
 88 #define FLAG_ETHER      0x0020          /* may    
 89                                                   
 90 #define FLAG_FRAMING_AX 0x0040          /* AX8    
 91 #define FLAG_WLAN       0x0080          /* use    
 92                                                   
 93                                                   
 94         /* init device ... can sleep, or cause    
 95         int     (*bind)(struct usbnet *, struc    
 96                                                   
 97         /* cleanup device ... can sleep, but c    
 98         void    (*unbind)(struct usbnet *, str    
 99                                                   
100         /* reset device ... can sleep */          
101         int     (*reset)(struct usbnet *);        
102                                                   
103         /* see if peer is connected ... can sl    
104         int     (*check_connect)(struct usbnet    
105                                                   
106         /* for status polling */                  
107         void    (*status)(struct usbnet *, str    
108                                                   
109         /* link reset handling, called from de    
110         int     (*link_reset)(struct usbnet *)    
111                                                   
112         /* fixup rx packet (strip framing) */     
113         int     (*rx_fixup)(struct usbnet *dev    
114                                                   
115         /* fixup tx packet (add framing) */       
116         struct sk_buff  *(*tx_fixup)(struct us    
117                                 struct sk_buff    
118                                                   
119         /* early initialization code, can slee    
120          * having 'subminidrivers' that need t    
121          * right after minidriver have initial    
122         int     (*early_init)(struct usbnet *d    
123                                                   
124         /* called by minidriver when link stat    
125          * 1=connect */                           
126         void    (*link_change)(struct usbnet *    
127                                                   
128         /* for new devices, use the descriptor    
129         int             in;             /* rx     
130         int             out;            /* tx     
131                                                   
132         unsigned long   data;           /* Mis    
133 };                                                
134                                                   
135 /* Minidrivers are just drivers using the "usb    
136  * network-specific subroutine library ... tha    
137  * much everything except custom framing and c    
138  */                                               
139 extern int usbnet_probe(struct usb_interface *    
140 extern int usbnet_suspend (struct usb_interfac    
141 extern int usbnet_resume (struct usb_interface    
142 extern void usbnet_disconnect(struct usb_inter    
143                                                   
144                                                   
145 /* Drivers that reuse some of the standard USB    
146  * (notably, using multiple interfaces accordi    
147  * union descriptor) get some helper code.        
148  */                                               
149 struct cdc_state {                                
150         struct usb_cdc_header_desc      *heade    
151         struct usb_cdc_union_desc       *u;       
152         struct usb_cdc_ether_desc       *ether    
153         struct usb_interface            *contr    
154         struct usb_interface            *data;    
155 };                                                
156                                                   
157 extern int usbnet_generic_cdc_bind (struct usb    
158 extern void usbnet_cdc_unbind (struct usbnet *    
159                                                   
160 /* CDC and RNDIS support the same host-chosen     
161 #define DEFAULT_FILTER  (USB_CDC_PACKET_TYPE_B    
162                         |USB_CDC_PACKET_TYPE_A    
163                         |USB_CDC_PACKET_TYPE_P    
164                         |USB_CDC_PACKET_TYPE_D    
165                                                   
166                                                   
167 /* we record the state for each of our queued     
168 enum skb_state {                                  
169         illegal = 0,                              
170         tx_start, tx_done,                        
171         rx_start, rx_done, rx_cleanup             
172 };                                                
173                                                   
174 struct skb_data {       /* skb->cb is one of t    
175         struct urb              *urb;             
176         struct usbnet           *dev;             
177         enum skb_state          state;            
178         size_t                  length;           
179 };                                                
180                                                   
181                                                   
182 extern int usbnet_get_endpoints(struct usbnet     
183 extern void usbnet_defer_kevent (struct usbnet    
184 extern void usbnet_skb_return (struct usbnet *    
185 extern void usbnet_unlink_rx_urbs(struct usbne    
186                                                   
187 extern int usbnet_get_settings (struct net_dev    
188 extern int usbnet_set_settings (struct net_dev    
189 extern u32 usbnet_get_link (struct net_device     
190 extern u32 usbnet_get_msglevel (struct net_dev    
191 extern void usbnet_set_msglevel (struct net_de    
192 extern void usbnet_get_drvinfo (struct net_dev    
193 extern int usbnet_nway_reset(struct net_device    
194                                                   
195 /* messaging support includes the interface na    
196  * used before it has one ... notably, in mini    
197  */                                               
198 #ifdef DEBUG                                      
199 #define devdbg(usbnet, fmt, arg...) \             
200         printk(KERN_DEBUG "%s: " fmt "\n" , (u    
201 #else                                             
202 #define devdbg(usbnet, fmt, arg...) do {} whil    
203 #endif                                            
204                                                   
205 #define deverr(usbnet, fmt, arg...) \             
206         printk(KERN_ERR "%s: " fmt "\n" , (usb    
207 #define devwarn(usbnet, fmt, arg...) \            
208         printk(KERN_WARNING "%s: " fmt "\n" ,     
209                                                   
210 #define devinfo(usbnet, fmt, arg...) \            
211         printk(KERN_INFO "%s: " fmt "\n" , (us    
212                                                   
213                                                   
214 #endif  /* __USBNET_H */                          
215                                                   
  This page was automatically generated by the LXR engine.