inet: frag: don't account number of fragment queues
authorFlorian Westphal <fw@strlen.de>
Thu, 24 Jul 2014 14:50:33 +0000 (16:50 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jul 2014 05:34:36 +0000 (22:34 -0700)
The 'nqueues' counter is protected by the lru list lock,
once thats removed this needs to be converted to atomic
counter.  Given this isn't used for anything except for
reporting it to userspace via /proc, just remove it.

We still report the memory currently used by fragment
reassembly queues.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/inet_frag.h
include/net/ip.h
include/net/ipv6.h
net/ipv4/inet_fragment.c
net/ipv4/ip_fragment.c
net/ipv4/proc.c
net/ipv6/proc.c

index e975032ea11b924a9034d907d209adc2d9f1159a..68de33765705d817599e04505dd303bce7e60027 100644 (file)
@@ -4,7 +4,6 @@
 #include <linux/percpu_counter.h>
 
 struct netns_frags {
-       int                     nqueues;
        struct list_head        lru_list;
        spinlock_t              lru_lock;
 
@@ -158,7 +157,6 @@ static inline void inet_frag_lru_del(struct inet_frag_queue *q)
 {
        spin_lock(&q->net->lru_lock);
        list_del_init(&q->lru_list);
-       q->net->nqueues--;
        spin_unlock(&q->net->lru_lock);
 }
 
@@ -167,7 +165,6 @@ static inline void inet_frag_lru_add(struct netns_frags *nf,
 {
        spin_lock(&nf->lru_lock);
        list_add_tail(&q->lru_list, &nf->lru_list);
-       q->net->nqueues++;
        spin_unlock(&nf->lru_lock);
 }
 
index 2e8f055989c3c982df11c0160ae409e98814bcab..ca14799545fdc00521f52fd957396ce6e2e628af 100644 (file)
@@ -495,7 +495,6 @@ static inline struct sk_buff *ip_check_defrag(struct sk_buff *skb, u32 user)
 }
 #endif
 int ip_frag_mem(struct net *net);
-int ip_frag_nqueues(struct net *net);
 
 /*
  *     Functions provided by ip_forward.c
index 25c2170e1298d08b29e2f00fcdf53798b9c41368..a2db816e8461cff706f23c725cf69372ab8bfcaa 100644 (file)
@@ -299,11 +299,6 @@ static inline bool ipv6_accept_ra(struct inet6_dev *idev)
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
-static inline int ip6_frag_nqueues(struct net *net)
-{
-       return net->ipv6.frags.nqueues;
-}
-
 static inline int ip6_frag_mem(struct net *net)
 {
        return sum_frag_mem_limit(&net->ipv6.frags);
index 43315ecb9400ba38f2ec2bac6fe4f404fff6386d..231ca0b4081134845ce72dc08eb92b30f2683eec 100644 (file)
@@ -193,7 +193,6 @@ EXPORT_SYMBOL(inet_frags_init);
 
 void inet_frags_init_net(struct netns_frags *nf)
 {
-       nf->nqueues = 0;
        init_frag_mem_limit(nf);
        INIT_LIST_HEAD(&nf->lru_list);
        spin_lock_init(&nf->lru_lock);
index 54bd170c5eb4a72158844d1731e806d9b52870cd..1f42c2e3966b2b8ca8c4533dc6accccc05534486 100644 (file)
@@ -86,11 +86,6 @@ static inline u8 ip4_frag_ecn(u8 tos)
 
 static struct inet_frags ip4_frags;
 
-int ip_frag_nqueues(struct net *net)
-{
-       return net->ipv4.frags.nqueues;
-}
-
 int ip_frag_mem(struct net *net)
 {
        return sum_frag_mem_limit(&net->ipv4.frags);
index ae0af9386f7ccf4cabafbcc8aff6c37309e820ea..8e3eb39f84e72c9e0f487bcfc8950b544b882a11 100644 (file)
@@ -52,6 +52,7 @@
 static int sockstat_seq_show(struct seq_file *seq, void *v)
 {
        struct net *net = seq->private;
+       unsigned int frag_mem;
        int orphans, sockets;
 
        local_bh_disable();
@@ -71,8 +72,8 @@ static int sockstat_seq_show(struct seq_file *seq, void *v)
                   sock_prot_inuse_get(net, &udplite_prot));
        seq_printf(seq, "RAW: inuse %d\n",
                   sock_prot_inuse_get(net, &raw_prot));
-       seq_printf(seq,  "FRAG: inuse %d memory %d\n",
-                       ip_frag_nqueues(net), ip_frag_mem(net));
+       frag_mem = ip_frag_mem(net);
+       seq_printf(seq,  "FRAG: inuse %u memory %u\n", !!frag_mem, frag_mem);
        return 0;
 }
 
index 3317440ea34174032a7b0bee73d8f5b36cfb08ee..2d6f860e5c1e77cb087b2220ba2db9592a770159 100644 (file)
@@ -33,6 +33,7 @@
 static int sockstat6_seq_show(struct seq_file *seq, void *v)
 {
        struct net *net = seq->private;
+       unsigned int frag_mem = ip6_frag_mem(net);
 
        seq_printf(seq, "TCP6: inuse %d\n",
                       sock_prot_inuse_get(net, &tcpv6_prot));
@@ -42,8 +43,7 @@ static int sockstat6_seq_show(struct seq_file *seq, void *v)
                        sock_prot_inuse_get(net, &udplitev6_prot));
        seq_printf(seq, "RAW6: inuse %d\n",
                       sock_prot_inuse_get(net, &rawv6_prot));
-       seq_printf(seq, "FRAG6: inuse %d memory %d\n",
-                      ip6_frag_nqueues(net), ip6_frag_mem(net));
+       seq_printf(seq, "FRAG6: inuse %u memory %u\n", !!frag_mem, frag_mem);
        return 0;
 }