diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2007-10-15 05:31:52 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-15 15:26:39 -0400 |
commit | 7eb95156d9dce2f59794264db336ce007d71638b (patch) | |
tree | c283a095f1a9d530edb1a7058454ba30b4f7d028 /net/ipv4/inet_fragment.c | |
parent | 5ab11c98d3a950faf6922b6166e5f8fc874590e7 (diff) |
[INET]: Collect frag queues management objects together
There are some objects that are common in all the places
which are used to keep track of frag queues, they are:
* hash table
* LRU list
* rw lock
* rnd number for hash function
* the number of queues
* the amount of memory occupied by queues
* secret timer
Move all this stuff into one structure (struct inet_frags)
to make it possible use them uniformly in the future. Like
with the previous patch this mostly consists of hunks like
- write_lock(&ipfrag_lock);
+ write_lock(&ip4_frags.lock);
To address the issue with exporting the number of queues and
the amount of memory occupied by queues outside the .c file
they are declared in, I introduce a couple of helpers.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/inet_fragment.c')
-rw-r--r-- | net/ipv4/inet_fragment.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c new file mode 100644 index 000000000000..69623ff4e4c6 --- /dev/null +++ b/net/ipv4/inet_fragment.c | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * inet fragments management | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation; either version | ||
7 | * 2 of the License, or (at your option) any later version. | ||
8 | * | ||
9 | * Authors: Pavel Emelyanov <xemul@openvz.org> | ||
10 | * Started as consolidation of ipv4/ip_fragment.c, | ||
11 | * ipv6/reassembly. and ipv6 nf conntrack reassembly | ||
12 | */ | ||
13 | |||
14 | #include <linux/list.h> | ||
15 | #include <linux/spinlock.h> | ||
16 | #include <linux/module.h> | ||
17 | #include <linux/timer.h> | ||
18 | #include <linux/mm.h> | ||
19 | |||
20 | #include <net/inet_frag.h> | ||
21 | |||
22 | void inet_frags_init(struct inet_frags *f) | ||
23 | { | ||
24 | int i; | ||
25 | |||
26 | for (i = 0; i < INETFRAGS_HASHSZ; i++) | ||
27 | INIT_HLIST_HEAD(&f->hash[i]); | ||
28 | |||
29 | INIT_LIST_HEAD(&f->lru_list); | ||
30 | rwlock_init(&f->lock); | ||
31 | |||
32 | f->rnd = (u32) ((num_physpages ^ (num_physpages>>7)) ^ | ||
33 | (jiffies ^ (jiffies >> 6))); | ||
34 | |||
35 | f->nqueues = 0; | ||
36 | atomic_set(&f->mem, 0); | ||
37 | |||
38 | } | ||
39 | EXPORT_SYMBOL(inet_frags_init); | ||
40 | |||
41 | void inet_frags_fini(struct inet_frags *f) | ||
42 | { | ||
43 | } | ||
44 | EXPORT_SYMBOL(inet_frags_fini); | ||