Depending on the arguments to alloc_netdev_mqs(),
[~tnikolova/compat/.git] / include / linux / compat-2.6.38.h
1 #ifndef LINUX_26_38_COMPAT_H
2 #define LINUX_26_38_COMPAT_H
3
4 #include <linux/version.h>
5
6 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38))
7
8 #include <linux/kernel.h>
9 #include <linux/skbuff.h>
10 #include <linux/etherdevice.h>
11
12 /* rename member in struct mmc_host in include/linux/mmc/host.h */
13 #define max_segs        max_hw_segs
14
15
16 /* Exponentially weighted moving average (EWMA) */
17
18 /* For more documentation see lib/average.c */
19
20 struct ewma {
21         unsigned long internal;
22         unsigned long factor;
23         unsigned long weight;
24 };
25
26 extern void ewma_init(struct ewma *avg, unsigned long factor,
27                       unsigned long weight);
28
29 extern struct ewma *ewma_add(struct ewma *avg, unsigned long val);
30
31 /**
32  * ewma_read() - Get average value
33  * @avg: Average structure
34  *
35  * Returns the average value held in @avg.
36  */
37 static inline unsigned long ewma_read(const struct ewma *avg)
38 {
39         return DIV_ROUND_CLOSEST(avg->internal, avg->factor);
40 }
41
42 #define pr_warn pr_warning
43 #define create_freezable_workqueue create_freezeable_workqueue
44
45 static inline int skb_checksum_start_offset(const struct sk_buff *skb)
46 {
47         return skb->csum_start - skb_headroom(skb);
48 }
49
50 /* from include/linux/printk.h */ 
51 #define pr_emerg_once(fmt, ...)                                 \
52         printk_once(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)
53 #define pr_alert_once(fmt, ...)                                 \
54         printk_once(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
55 #define pr_crit_once(fmt, ...)                                  \
56         printk_once(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__)
57 #define pr_err_once(fmt, ...)                                   \
58         printk_once(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
59 #define pr_warn_once(fmt, ...)                                  \
60         printk_once(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
61 #define pr_notice_once(fmt, ...)                                \
62         printk_once(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
63 #define pr_info_once(fmt, ...)                                  \
64         printk_once(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
65 #define pr_cont_once(fmt, ...)                                  \
66         printk_once(KERN_CONT pr_fmt(fmt), ##__VA_ARGS__)
67 #if defined(DEBUG)
68 #define pr_debug_once(fmt, ...)                                 \
69         printk_once(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
70 #else
71 #define pr_debug_once(fmt, ...)                                 \
72         no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
73 #endif
74
75 /* include/linux/netdevice.h */
76 #define alloc_netdev_mqs(sizeof_priv, name, setup, txqs, rxqs) \
77         alloc_netdev_mq(sizeof_priv, name, setup, \
78                         max_t(unsigned int, txqs, rxqs))
79
80 #define ETH_P_LINK_CTL  0x886c          /* HPNA, wlan link local tunnel */
81
82 /**
83  * is_unicast_ether_addr - Determine if the Ethernet address is unicast
84  * @addr: Pointer to a six-byte array containing the Ethernet address
85  *
86  * Return true if the address is a unicast address.
87  */
88 static inline int is_unicast_ether_addr(const u8 *addr)
89 {
90         return !is_multicast_ether_addr(addr);
91 }
92
93 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)) */
94
95 #endif /* LINUX_26_38_COMPAT_H */