| 1 | --- a/include/compat.h |
| 2 | +++ b/include/compat.h |
| 3 | @@ -182,6 +182,13 @@ static inline int timeval_compare(struct |
| 4 | #define DEV_ATH CTL_UNNUMBERED |
| 5 | #endif |
| 6 | |
| 7 | +/* __skb_append got a third parameter in 2.6.14 */ |
| 8 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14) |
| 9 | +#define __skb_queue_after(_list, _old, _new) __skb_append(_old, _new) |
| 10 | +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) |
| 11 | +#define __skb_queue_after(_list, _old, _new) __skb_append(_old, _new, _list) |
| 12 | +#endif |
| 13 | + |
| 14 | #endif /* __KERNEL__ */ |
| 15 | |
| 16 | #endif /* _ATH_COMPAT_H_ */ |
| 17 | --- a/net80211/ieee80211_linux.h |
| 18 | +++ b/net80211/ieee80211_linux.h |
| 19 | @@ -345,13 +345,6 @@ typedef spinlock_t acl_lock_t; |
| 20 | #define ACL_LOCK_CHECK(_as) |
| 21 | #endif |
| 22 | |
| 23 | -/* __skb_append got a third parameter in 2.6.14 */ |
| 24 | -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14) |
| 25 | -#define __skb_append(a,b,c) __skb_append(a, b) |
| 26 | -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25) |
| 27 | -#define __skb_append(a,b,c) __skb_queue_after(c, a, b) |
| 28 | -#endif |
| 29 | - |
| 30 | /* |
| 31 | * Per-node power-save queue definitions. Beware of control |
| 32 | * flow with IEEE80211_NODE_SAVEQ_LOCK/IEEE80211_NODE_SAVEQ_UNLOCK. |
| 33 | @@ -395,16 +388,16 @@ typedef spinlock_t acl_lock_t; |
| 34 | _skb = __skb_dequeue(&(_ni)->ni_savedq); \ |
| 35 | (_qlen) = skb_queue_len(&(_ni)->ni_savedq); \ |
| 36 | } while (0) |
| 37 | -#define _IEEE80211_NODE_SAVEQ_ENQUEUE(_ni, _skb, _qlen, _age) do {\ |
| 38 | - struct sk_buff *tail = skb_peek_tail(&(_ni)->ni_savedq);\ |
| 39 | - if (tail != NULL) { \ |
| 40 | - _age -= M_AGE_GET(tail); \ |
| 41 | - __skb_append(tail, _skb, &(_ni)->ni_savedq); \ |
| 42 | - } else { \ |
| 43 | - __skb_queue_head(&(_ni)->ni_savedq, _skb); \ |
| 44 | - } \ |
| 45 | - M_AGE_SET(_skb, _age); \ |
| 46 | - (_qlen) = skb_queue_len(&(_ni)->ni_savedq); \ |
| 47 | +#define _IEEE80211_NODE_SAVEQ_ENQUEUE(_ni, _skb, _qlen, _age) do { \ |
| 48 | + struct sk_buff *tail = skb_peek_tail(&(_ni)->ni_savedq); \ |
| 49 | + if (tail != NULL) { \ |
| 50 | + _age -= M_AGE_GET(tail); \ |
| 51 | + __skb_queue_after(&(_ni)->ni_savedq, tail, _skb); \ |
| 52 | + } else { \ |
| 53 | + __skb_queue_head(&(_ni)->ni_savedq, _skb); \ |
| 54 | + } \ |
| 55 | + M_AGE_SET(_skb, _age); \ |
| 56 | + (_qlen) = skb_queue_len(&(_ni)->ni_savedq); \ |
| 57 | } while (0) |
| 58 | |
| 59 | /* |
| 60 | --- a/net80211/ieee80211_power.c |
| 61 | +++ b/net80211/ieee80211_power.c |
| 62 | @@ -243,7 +243,7 @@ ieee80211_pwrsave(struct sk_buff *skb) |
| 63 | tail = skb_peek_tail(&ni->ni_savedq); |
| 64 | if (tail != NULL) { |
| 65 | age -= M_AGE_GET(tail); |
| 66 | - __skb_append(tail, skb, &ni->ni_savedq); |
| 67 | + __skb_queue_after(&ni->ni_savedq, tail, skb); |
| 68 | } else |
| 69 | __skb_queue_head(&ni->ni_savedq, skb); |
| 70 | M_AGE_SET(skb, age); |
| 71 | |