From 75239f276ec894c87b8fbc268bdfb0f9fd290445 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Tue, 7 Feb 2017 08:07:39 +0100 Subject: backports: get rid of patch directory structure This directory structure was never really managed well, simply get rid of it. With the patch system that only applies patches when the modified file exists, and with a lot of spatches applying everywhere anyway, it's no longer really useful either. Signed-off-by: Johannes Berg --- patches/0007-lowpan-inet_frag_lru_move.patch | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 patches/0007-lowpan-inet_frag_lru_move.patch (limited to 'patches/0007-lowpan-inet_frag_lru_move.patch') diff --git a/patches/0007-lowpan-inet_frag_lru_move.patch b/patches/0007-lowpan-inet_frag_lru_move.patch new file mode 100644 index 00000000..d0b2c67c --- /dev/null +++ b/patches/0007-lowpan-inet_frag_lru_move.patch @@ -0,0 +1,59 @@ +Domain specific backport for inet_frag_lru_move() +This requires two parts, the data structure changes +and then domain specific inet_frag_lru_move() define. + +--- a/net/ieee802154/reassembly.c ++++ b/net/ieee802154/reassembly.c +@@ -89,6 +89,9 @@ static void lowpan_frag_init(struct inet + fq->d_size = arg->d_size; + fq->saddr = *arg->src; + fq->daddr = *arg->dst; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) ++ spin_lock_init(&fq->lru_lock); ++#endif + } + + static void lowpan_frag_expire(unsigned long data) +--- a/net/ieee802154/reassembly.h ++++ b/net/ieee802154/reassembly.h +@@ -2,6 +2,7 @@ + #define __IEEE802154_6LOWPAN_REASSEMBLY_H__ + + #include ++#include + + struct lowpan_create_arg { + u16 tag; +@@ -19,8 +20,32 @@ struct lowpan_frag_queue { + u16 d_size; + struct ieee802154_addr saddr; + struct ieee802154_addr daddr; ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) ++ spinlock_t lru_lock; ++#endif + }; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) ++/* ++ * XXX: this is a *domain* specific inet_frag_lru_move backport, ++ * note the added lowpan_ prefix, this requires a respective patch ++ * which extends struct lowpan_frag_queue with an lru_lock and ++ * initializes it. We add this helper here to reduce the backport. ++ * There is no way to generalize the other changes in the patch. ++ */ ++#define inet_frag_lru_move LINUX_BACKPORT(lowpan_inet_frag_lru_move) ++static inline void inet_frag_lru_move(struct inet_frag_queue *q) ++{ ++ struct lowpan_frag_queue *fq; ++ ++ fq = container_of(q, struct lowpan_frag_queue, q); ++ ++ spin_lock(&fq->lru_lock); ++ list_move_tail(&q->lru_list, &q->net->lru_list); ++ spin_unlock(&fq->lru_lock); ++} ++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) */ ++ + static inline u32 ieee802154_addr_hash(const struct ieee802154_addr *a) + { + switch (a->mode) { -- cgit v1.2.3