Add initial 2.6.22 support
[~emulex/for-vlad/old/compat.git] / include / linux / compat-2.6.29.h
1 #ifndef LINUX_26_29_COMPAT_H
2 #define LINUX_26_29_COMPAT_H
3
4 #include <linux/autoconf.h>
5 #include <linux/version.h>
6
7 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
8
9 #include <linux/netdevice.h>
10 #include <linux/skbuff.h>
11 #include <linux/usb.h>
12
13 /**
14  *      skb_queue_is_first - check if skb is the first entry in the queue
15  *      @list: queue head
16  *      @skb: buffer
17  *
18  *      Returns true if @skb is the first buffer on the list.
19  */
20 static inline bool skb_queue_is_first(const struct sk_buff_head *list,
21                                       const struct sk_buff *skb)
22 {
23         return (skb->prev == (struct sk_buff *) list);
24 }
25
26 /**
27  *      skb_queue_prev - return the prev packet in the queue
28  *      @list: queue head
29  *      @skb: current buffer
30  *
31  *      Return the prev packet in @list before @skb.  It is only valid to
32  *      call this if skb_queue_is_first() evaluates to false.
33  */
34 static inline struct sk_buff *skb_queue_prev(const struct sk_buff_head *list,
35                                              const struct sk_buff *skb)
36 {
37         /* This BUG_ON may seem severe, but if we just return then we
38          * are going to dereference garbage.
39          */
40         BUG_ON(skb_queue_is_first(list, skb));
41         return skb->prev;
42 }
43
44
45 static inline struct net_device_stats *dev_get_stats(struct net_device *dev)
46 {
47         return dev->get_stats(dev);
48 }
49
50 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
51 extern void usb_unpoison_anchored_urbs(struct usb_anchor *anchor);
52 #endif
53
54 #define DIV_ROUND_CLOSEST(x, divisor)(                  \
55 {                                                       \
56         typeof(divisor) __divisor = divisor;            \
57         (((x) + ((__divisor) / 2)) / (__divisor));      \
58 }                                                       \
59 )
60
61 extern int eth_mac_addr(struct net_device *dev, void *p);
62
63 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)) */
64
65 #endif /*  LINUX_26_29_COMPAT_H */