Added support for RHEL6.5
[compat-rdma/compat.git] / include / linux / compat-3.4.h
1 #ifndef LINUX_3_4_COMPAT_H
2 #define LINUX_3_4_COMPAT_H
3
4 #include <linux/version.h>
5
6 #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
7
8 #include <linux/etherdevice.h>
9 #include <linux/skbuff.h>
10
11 #ifndef VM_NODUMP
12 #define VM_NODUMP       0x04000000      /* Do not include in the core dump */
13 #endif
14
15 #ifndef EPROBE_DEFER
16 #define EPROBE_DEFER    517     /* Driver requests probe retry */
17 #endif
18
19 #define simple_open LINUX_BACKPORT(simple_open)
20 extern int simple_open(struct inode *inode, struct file *file);
21
22 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28))
23 #define skb_add_rx_frag(skb, i, page, off, size, truesize) \
24         v2_6_28_skb_add_rx_frag(skb, i, page, off, size)
25 #else
26 #define skb_add_rx_frag(skb, i, page, off, size, truesize) \
27         skb_add_rx_frag(skb, i, page, off, size)
28 #endif
29
30 #ifdef CONFIG_X86_X32_ABI
31 #define COMPAT_USE_64BIT_TIME \
32         (!!(task_pt_regs(current)->orig_ax & __X32_SYSCALL_BIT))
33 #else
34 #define COMPAT_USE_64BIT_TIME 0
35 #endif
36
37 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12))
38 #define eth_hw_addr_random LINUX_BACKPORT(eth_hw_addr_random)
39 static inline void eth_hw_addr_random(struct net_device *dev)
40 {
41 #error eth_hw_addr_random() needs to be implemented for < 2.6.12
42 }
43 #else  /* kernels >= 2.6.12 */
44
45 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31))
46 #define eth_hw_addr_random LINUX_BACKPORT(eth_hw_addr_random)
47 static inline void eth_hw_addr_random(struct net_device *dev)
48 {
49         get_random_bytes(dev->dev_addr, ETH_ALEN);
50         dev->dev_addr[0] &= 0xfe;       /* clear multicast bit */
51         dev->dev_addr[0] |= 0x02;       /* set local assignment bit (IEEE802) */
52 }
53 #else /* kernels >= 2.6.31 */
54
55 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
56 /* So this is 2.6.31..2.6.35 */
57
58 /* Just have the flags present, they won't really mean anything though */
59 #define NET_ADDR_PERM          0       /* address is permanent (default) */
60 #define NET_ADDR_RANDOM                1       /* address is generated randomly */
61 #define NET_ADDR_STOLEN                2       /* address is stolen from other device */
62
63 #ifndef CONFIG_COMPAT_ETH_HW_ADDR_RANDOM
64 #ifndef CONFIG_COMPAT_DEV_HW_ADDR_RANDOM
65 #define eth_hw_addr_random LINUX_BACKPORT(eth_hw_addr_random)
66 static inline void eth_hw_addr_random(struct net_device *dev)
67 {
68         random_ether_addr(dev->dev_addr);
69 }
70 #else
71 #define eth_hw_addr_random LINUX_BACKPORT(eth_hw_addr_random)
72 static inline void eth_hw_addr_random(struct net_device *dev)
73 {
74         dev_hw_addr_random(dev, dev->dev_addr);
75 }
76 #endif
77 #endif
78
79 #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
80 #ifndef CONFIG_COMPAT_ETH_HW_ADDR_RANDOM
81 #define eth_hw_addr_random LINUX_BACKPORT(eth_hw_addr_random)
82 static inline void eth_hw_addr_random(struct net_device *dev)
83 {
84         dev_hw_addr_random(dev, dev->dev_addr);
85 }
86 #endif
87 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)) */
88
89 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) */
90 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)) */
91
92 /* source include/linux/pci.h */
93 /**
94  * module_pci_driver() - Helper macro for registering a PCI driver
95  * @__pci_driver: pci_driver struct
96  *
97  * Helper macro for PCI drivers which do not do anything special in module
98  * init/exit. This eliminates a lot of boilerplate. Each module may only
99  * use this macro once, and calling it replaces module_init() and module_exit()
100  */
101 #define module_pci_driver(__pci_driver) \
102         module_driver(__pci_driver, pci_register_driver, \
103                        pci_unregister_driver)
104
105 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) */
106
107 #endif /* LINUX_5_4_COMPAT_H */