compat: Avoid symbols duplication by compat
[compat-rdma/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 #include <linux/skbuff.h>
11 #include <net/sch_generic.h>
12
13 #if !((LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,9) && LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,23) && LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)))
14 /* mask qdisc_cb_private_validate as RHEL6.3 backports it */
15 #define qdisc_cb_private_validate(a, b) compat_qdisc_cb_private_validate(a, b)
16 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,37))
17 static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz)
18 {
19         BUILD_BUG_ON(sizeof(skb->cb) < sizeof(struct qdisc_skb_cb) + sz);
20 }
21 #else
22 static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz)
23 {
24         /* XXX ? */
25 }
26 #endif
27 #endif
28
29 #define __pskb_copy LINUX_BACKPORT(__pskb_copy)
30 extern struct sk_buff *__pskb_copy(struct sk_buff *skb,
31                                    int headroom, gfp_t gfp_mask);
32
33 #ifndef CONFIG_COMPAT_RHEL_6_4
34 static inline void skb_complete_wifi_ack(struct sk_buff *skb, bool acked)
35 {
36         WARN_ON(1);
37 }
38 #endif /* CONFIG_COMPAT_RHEL_6_4 */
39
40 #define NL80211_FEATURE_SK_TX_STATUS 0
41
42 typedef u32 netdev_features_t;
43
44 #ifndef CONFIG_COMPAT_SLES_11_3
45 /* source include/linux/device.h */
46 /**
47  * module_driver() - Helper macro for drivers that don't do anything
48  * special in module init/exit. This eliminates a lot of boilerplate.
49  * Each module may only use this macro once, and calling it replaces
50  * module_init() and module_exit().
51  *
52  * Use this macro to construct bus specific macros for registering
53  * drivers, and do not use it on its own.
54  */
55 #define module_driver(__driver, __register, __unregister) \
56 static int __init __driver##_init(void) \
57 { \
58         return __register(&(__driver)); \
59 } \
60 module_init(__driver##_init); \
61 static void __exit __driver##_exit(void) \
62 { \
63         __unregister(&(__driver)); \
64 } \
65 module_exit(__driver##_exit);
66
67 /* source include/linux/usb.h */
68 /**
69  * module_usb_driver() - Helper macro for registering a USB driver
70  * @__usb_driver: usb_driver struct
71  *
72  * Helper macro for USB drivers which do not do anything special in module
73  * init/exit. This eliminates a lot of boilerplate. Each module may only
74  * use this macro once, and calling it replaces module_init() and module_exit()
75  */
76 #define module_usb_driver(__usb_driver) \
77         module_driver(__usb_driver, usb_register, \
78                        usb_deregister)
79
80 #define netdev_tx_sent_queue LINUX_BACKPORT(netdev_tx_sent_queue)
81 static inline void netdev_tx_sent_queue(struct netdev_queue *dev_queue,
82                                        unsigned int bytes)
83 {
84 }
85
86 #define netdev_tx_completed_queue LINUX_BACKPORT(netdev_tx_completed_queue)
87 static inline void netdev_tx_completed_queue(struct netdev_queue *dev_queue,
88                                             unsigned pkts, unsigned bytes)
89 {
90 }
91
92 #define netdev_tx_reset_queue LINUX_BACKPORT(netdev_tx_reset_queue)
93 static inline void netdev_tx_reset_queue(struct netdev_queue *q)
94 {
95 #ifdef CONFIG_BQL
96         clear_bit(__QUEUE_STATE_STACK_XOFF, &q->state);
97         dql_reset(&q->dql);
98 #endif
99 }
100
101 #define NETIF_F_LOOPBACK       (1 << 31) /* Enable loopback */
102 #endif /* CONFIG_COMPAT_SLES_11_3 */
103
104 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)) */
105
106 #endif /* LINUX_3_3_COMPAT_H */