mirror of https://gitee.com/openkylin/linux.git
inet: frag: remove lru list
no longer used. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
434d305405
commit
3fd588eb90
|
@ -4,9 +4,6 @@
|
|||
#include <linux/percpu_counter.h>
|
||||
|
||||
struct netns_frags {
|
||||
struct list_head lru_list;
|
||||
spinlock_t lru_lock;
|
||||
|
||||
/* The percpu_counter "mem" need to be cacheline aligned.
|
||||
* mem.count must not share cacheline with other writers
|
||||
*/
|
||||
|
@ -21,7 +18,6 @@ struct netns_frags {
|
|||
struct inet_frag_queue {
|
||||
spinlock_t lock;
|
||||
struct timer_list timer; /* when will this queue expire? */
|
||||
struct list_head lru_list; /* lru list member */
|
||||
struct hlist_node list;
|
||||
atomic_t refcnt;
|
||||
struct sk_buff *fragments; /* list of received fragments */
|
||||
|
@ -91,8 +87,7 @@ void inet_frags_init_net(struct netns_frags *nf);
|
|||
void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f);
|
||||
|
||||
void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f);
|
||||
void inet_frag_destroy(struct inet_frag_queue *q,
|
||||
struct inet_frags *f, int *work);
|
||||
void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f);
|
||||
struct inet_frag_queue *inet_frag_find(struct netns_frags *nf,
|
||||
struct inet_frags *f, void *key, unsigned int hash)
|
||||
__releases(&f->lock);
|
||||
|
@ -102,7 +97,7 @@ void inet_frag_maybe_warn_overflow(struct inet_frag_queue *q,
|
|||
static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f)
|
||||
{
|
||||
if (atomic_dec_and_test(&q->refcnt))
|
||||
inet_frag_destroy(q, f, NULL);
|
||||
inet_frag_destroy(q, f);
|
||||
}
|
||||
|
||||
/* Memory Tracking Functions. */
|
||||
|
@ -145,29 +140,6 @@ static inline unsigned int sum_frag_mem_limit(struct netns_frags *nf)
|
|||
return res;
|
||||
}
|
||||
|
||||
static inline void inet_frag_lru_move(struct inet_frag_queue *q)
|
||||
{
|
||||
spin_lock(&q->net->lru_lock);
|
||||
if (!list_empty(&q->lru_list))
|
||||
list_move_tail(&q->lru_list, &q->net->lru_list);
|
||||
spin_unlock(&q->net->lru_lock);
|
||||
}
|
||||
|
||||
static inline void inet_frag_lru_del(struct inet_frag_queue *q)
|
||||
{
|
||||
spin_lock(&q->net->lru_lock);
|
||||
list_del_init(&q->lru_list);
|
||||
spin_unlock(&q->net->lru_lock);
|
||||
}
|
||||
|
||||
static inline void inet_frag_lru_add(struct netns_frags *nf,
|
||||
struct inet_frag_queue *q)
|
||||
{
|
||||
spin_lock(&nf->lru_lock);
|
||||
list_add_tail(&q->lru_list, &nf->lru_list);
|
||||
spin_unlock(&nf->lru_lock);
|
||||
}
|
||||
|
||||
/* RFC 3168 support :
|
||||
* We want to check ECN values of all fragments, do detect invalid combinations.
|
||||
* In ipq->ecn, we store the OR value of each ip4_frag_ecn() fragment value.
|
||||
|
|
|
@ -219,7 +219,6 @@ static int lowpan_frag_queue(struct lowpan_frag_queue *fq,
|
|||
return res;
|
||||
}
|
||||
|
||||
inet_frag_lru_move(&fq->q);
|
||||
return -1;
|
||||
err:
|
||||
kfree_skb(skb);
|
||||
|
|
|
@ -194,8 +194,6 @@ EXPORT_SYMBOL(inet_frags_init);
|
|||
void inet_frags_init_net(struct netns_frags *nf)
|
||||
{
|
||||
init_frag_mem_limit(nf);
|
||||
INIT_LIST_HEAD(&nf->lru_list);
|
||||
spin_lock_init(&nf->lru_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(inet_frags_init_net);
|
||||
|
||||
|
@ -237,7 +235,6 @@ static inline void fq_unlink(struct inet_frag_queue *fq, struct inet_frags *f)
|
|||
spin_unlock(&hb->chain_lock);
|
||||
|
||||
read_unlock(&f->lock);
|
||||
inet_frag_lru_del(fq);
|
||||
}
|
||||
|
||||
void inet_frag_kill(struct inet_frag_queue *fq, struct inet_frags *f)
|
||||
|
@ -261,8 +258,7 @@ static inline void frag_kfree_skb(struct netns_frags *nf, struct inet_frags *f,
|
|||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f,
|
||||
int *work)
|
||||
void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f)
|
||||
{
|
||||
struct sk_buff *fp;
|
||||
struct netns_frags *nf;
|
||||
|
@ -282,14 +278,11 @@ void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f,
|
|||
fp = xp;
|
||||
}
|
||||
sum = sum_truesize + f->qsize;
|
||||
if (work)
|
||||
*work -= sum;
|
||||
sub_frag_mem_limit(q, sum);
|
||||
|
||||
if (f->destructor)
|
||||
f->destructor(q);
|
||||
kfree(q);
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(inet_frag_destroy);
|
||||
|
||||
|
@ -333,7 +326,7 @@ static struct inet_frag_queue *inet_frag_intern(struct netns_frags *nf,
|
|||
|
||||
atomic_inc(&qp->refcnt);
|
||||
hlist_add_head(&qp->list, &hb->chain);
|
||||
inet_frag_lru_add(nf, qp);
|
||||
|
||||
spin_unlock(&hb->chain_lock);
|
||||
read_unlock(&f->lock);
|
||||
|
||||
|
@ -361,7 +354,6 @@ static struct inet_frag_queue *inet_frag_alloc(struct netns_frags *nf,
|
|||
setup_timer(&q->timer, f->frag_expire, (unsigned long)q);
|
||||
spin_lock_init(&q->lock);
|
||||
atomic_set(&q->refcnt, 1);
|
||||
INIT_LIST_HEAD(&q->lru_list);
|
||||
|
||||
return q;
|
||||
}
|
||||
|
|
|
@ -489,7 +489,6 @@ static int ip_frag_queue(struct ipq *qp, struct sk_buff *skb)
|
|||
}
|
||||
|
||||
skb_dst_drop(skb);
|
||||
inet_frag_lru_move(&qp->q);
|
||||
return -EINPROGRESS;
|
||||
|
||||
err:
|
||||
|
|
|
@ -349,7 +349,6 @@ static int nf_ct_frag6_queue(struct frag_queue *fq, struct sk_buff *skb,
|
|||
fq->q.last_in |= INET_FRAG_FIRST_IN;
|
||||
}
|
||||
|
||||
inet_frag_lru_move(&fq->q);
|
||||
return 0;
|
||||
|
||||
discard_fq:
|
||||
|
|
|
@ -351,7 +351,6 @@ static int ip6_frag_queue(struct frag_queue *fq, struct sk_buff *skb,
|
|||
}
|
||||
|
||||
skb_dst_drop(skb);
|
||||
inet_frag_lru_move(&fq->q);
|
||||
return -1;
|
||||
|
||||
discard_fq:
|
||||
|
|
Loading…
Reference in New Issue