compat: add module_usb_driver and module_platform_driver
[~emulex/for-vlad/old/compat.git] / include / linux / compat-3.3.h
1 #ifndef LINUX_3_3_COMPAT_H
2 #define LINUX_3_3_COMPAT_H
3
4 #include <linux/version.h>
5
6 #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0))
7
8 /* include to override NL80211_FEATURE_SK_TX_STATUS */
9 #include <linux/nl80211.h>
10
11 /*
12  * This is not part of The 2.6.37 kernel yet but we
13  * we use it to optimize the backport code we
14  * need to implement. Instead of using ifdefs
15  * to check what version of the check we use
16  * we just replace all checks on current code
17  * with this. I'll submit this upstream too, that
18  * way all we'd have to do is to implement this
19  * for older kernels, then we would not have to
20  * edit the upstrema code for backport efforts.
21  */
22 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
23 #define br_port_exists(dev)     (dev->priv_flags & IFF_BRIDGE_PORT)
24 #else
25 #define br_port_exists(dev)     (dev->br_port)
26 #endif
27
28 static inline void skb_complete_wifi_ack(struct sk_buff *skb, bool acked)
29 {
30         WARN_ON(1);
31 }
32 #define NL80211_FEATURE_SK_TX_STATUS 0
33
34 typedef u32 netdev_features_t;
35
36 /* source include/linux/device.h */
37 /**
38  * module_driver() - Helper macro for drivers that don't do anything
39  * special in module init/exit. This eliminates a lot of boilerplate.
40  * Each module may only use this macro once, and calling it replaces
41  * module_init() and module_exit().
42  *
43  * Use this macro to construct bus specific macros for registering
44  * drivers, and do not use it on its own.
45  */
46 #define module_driver(__driver, __register, __unregister) \
47 static int __init __driver##_init(void) \
48 { \
49         return __register(&(__driver)); \
50 } \
51 module_init(__driver##_init); \
52 static void __exit __driver##_exit(void) \
53 { \
54         __unregister(&(__driver)); \
55 } \
56 module_exit(__driver##_exit);
57
58 /* source include/linux/usb.h */
59 /**
60  * module_usb_driver() - Helper macro for registering a USB driver
61  * @__usb_driver: usb_driver struct
62  *
63  * Helper macro for USB drivers which do not do anything special in module
64  * init/exit. This eliminates a lot of boilerplate. Each module may only
65  * use this macro once, and calling it replaces module_init() and module_exit()
66  */
67 #define module_usb_driver(__usb_driver) \
68         module_driver(__usb_driver, usb_register, \
69                        usb_deregister)
70
71 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) */
72
73 #endif /* LINUX_3_3_COMPAT_H */