From: Alexander Duyck <alexander.h.duyck@redhat.com>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net
Subject: [net-next PATCH v2 09/10] fib_trie: Move parent from key_vector to tnode
Date: Fri, 06 Mar 2015 09:54:46 -0800 [thread overview]
Message-ID: <20150306175446.2452.77278.stgit@ahduyck-vm-fedora20> (raw)
In-Reply-To: <20150306174814.2452.18308.stgit@ahduyck-vm-fedora20>
This change pulls the parent pointer from the key_vector and places it in
the tnode structure.
Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
---
net/ipv4/fib_trie.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index acbed2d..b5fed2f 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -93,8 +93,6 @@ typedef unsigned int t_key;
#define IS_LEAF(n) (!(n)->bits)
struct key_vector {
- struct key_vector __rcu *parent;
-
t_key key;
unsigned char pos; /* 2log(KEYLENGTH) bits needed */
unsigned char bits; /* 2log(KEYLENGTH) bits needed */
@@ -111,6 +109,7 @@ struct tnode {
struct rcu_head rcu;
t_key empty_children; /* KEYLENGTH bits needed */
t_key full_children; /* KEYLENGTH bits needed */
+ struct key_vector __rcu *parent;
struct key_vector kv[1];
#define tn_bits kv[0].bits
};
@@ -165,21 +164,21 @@ static inline struct tnode *tn_info(struct key_vector *kv)
}
/* caller must hold RTNL */
-#define node_parent(n) rtnl_dereference((n)->parent)
+#define node_parent(tn) rtnl_dereference(tn_info(tn)->parent)
#define get_child(tn, i) rtnl_dereference((tn)->tnode[i])
/* caller must hold RCU read lock or RTNL */
-#define node_parent_rcu(n) rcu_dereference_rtnl((n)->parent)
+#define node_parent_rcu(tn) rcu_dereference_rtnl(tn_info(tn)->parent)
#define get_child_rcu(tn, i) rcu_dereference_rtnl((tn)->tnode[i])
/* wrapper for rcu_assign_pointer */
static inline void node_set_parent(struct key_vector *n, struct key_vector *tp)
{
if (n)
- rcu_assign_pointer(n->parent, tp);
+ rcu_assign_pointer(tn_info(n)->parent, tp);
}
-#define NODE_INIT_PARENT(n, p) RCU_INIT_POINTER((n)->parent, p)
+#define NODE_INIT_PARENT(n, p) RCU_INIT_POINTER(tn_info(n)->parent, p)
/* This provides us with the number of children in this node, in the case of a
* leaf this will return 0 meaning none of the children are accessible.
next prev parent reply other threads:[~2015-03-06 17:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-06 17:53 [net-next PATCH v2 00/10] The rest of the FIB patches (add key_vector to fib_table) Alexander Duyck
2015-03-06 17:53 ` [net-next PATCH v2 01/10] fib_trie: Minor cleanups to fib_table_flush_external Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 02/10] fib_trie: Return pointer to tnode pointer in resize/inflate/halve Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 03/10] fib_trie: Rename tnode to key_vector Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 04/10] fib_trie: replace tnode_get_child functions with get_child macros Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 05/10] fib_trie: Rename tnode_child_length to child_length Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 06/10] fib_trie: Add tnode struct as a container for fields not needed in key_vector Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 07/10] fib_trie: Move rcu from key_vector to tnode, add accessors Alexander Duyck
2015-03-06 17:54 ` [net-next PATCH v2 08/10] fib_trie: Pull empty_children and full_children into tnode Alexander Duyck
2015-03-06 17:54 ` Alexander Duyck [this message]
2015-03-06 17:54 ` [net-next PATCH v2 10/10] fib_trie: Add key vector to root, return parent key_vector in resize Alexander Duyck
2015-03-06 20:52 ` [net-next PATCH v2 00/10] The rest of the FIB patches (add key_vector to fib_table) David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150306175446.2452.77278.stgit@ahduyck-vm-fedora20 \
--to=alexander.h.duyck@redhat.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox