aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2011-02-25 10:01:58 -0500
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-03-13 16:35:17 -0400
commitd1bcb11544109114d72965afea7805cc3e16a83a (patch)
treeb530d264ec04c6ac8d61d2b9f44cf2ef07a66d86 /net/tipc
parent9df3b7eb6ec1c7734482f782bf8335a2737c02f0 (diff)
tipc: Split up unified structure of network-related variables
Converts the fields of the global "tipc_net" structure into individual variables. Since the struct was never referenced as a complete unit, its existence was pointless. This will facilitate upcoming changes to TIPC's node table and simpify upcoming relocation of the variables so they are only visible to the files that actually use them. This change is essentially cosmetic in nature, and doesn't affect the operation of TIPC. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/name_distr.c4
-rw-r--r--net/tipc/net.c22
-rw-r--r--net/tipc/net.h17
-rw-r--r--net/tipc/node.c30
-rw-r--r--net/tipc/node.h2
5 files changed, 33 insertions, 42 deletions
diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c
index d58dae78b551..f2086f684b34 100644
--- a/net/tipc/name_distr.c
+++ b/net/tipc/name_distr.c
@@ -111,8 +111,8 @@ static void named_cluster_distribute(struct sk_buff *buf)
111 struct tipc_node *n_ptr; 111 struct tipc_node *n_ptr;
112 u32 n_num; 112 u32 n_num;
113 113
114 for (n_num = 1; n_num <= tipc_net.highest_node; n_num++) { 114 for (n_num = 1; n_num <= tipc_highest_node; n_num++) {
115 n_ptr = tipc_net.nodes[n_num]; 115 n_ptr = tipc_nodes[n_num];
116 if (n_ptr && tipc_node_has_active_links(n_ptr)) { 116 if (n_ptr && tipc_node_has_active_links(n_ptr)) {
117 buf_copy = skb_copy(buf, GFP_ATOMIC); 117 buf_copy = skb_copy(buf, GFP_ATOMIC);
118 if (!buf_copy) 118 if (!buf_copy)
diff --git a/net/tipc/net.c b/net/tipc/net.c
index dd78d869829f..f6303d79f7f5 100644
--- a/net/tipc/net.c
+++ b/net/tipc/net.c
@@ -108,26 +108,28 @@
108*/ 108*/
109 109
110DEFINE_RWLOCK(tipc_net_lock); 110DEFINE_RWLOCK(tipc_net_lock);
111struct network tipc_net; 111struct tipc_node **tipc_nodes;
112u32 tipc_highest_node;
113atomic_t tipc_num_links;
112 114
113static int net_start(void) 115static int net_start(void)
114{ 116{
115 tipc_net.nodes = kcalloc(tipc_max_nodes + 1, 117 tipc_nodes = kcalloc(tipc_max_nodes + 1,
116 sizeof(*tipc_net.nodes), GFP_ATOMIC); 118 sizeof(*tipc_nodes), GFP_ATOMIC);
117 tipc_net.highest_node = 0; 119 tipc_highest_node = 0;
118 atomic_set(&tipc_net.links, 0); 120 atomic_set(&tipc_num_links, 0);
119 121
120 return tipc_net.nodes ? 0 : -ENOMEM; 122 return tipc_nodes ? 0 : -ENOMEM;
121} 123}
122 124
123static void net_stop(void) 125static void net_stop(void)
124{ 126{
125 u32 n_num; 127 u32 n_num;
126 128
127 for (n_num = 1; n_num <= tipc_net.highest_node; n_num++) 129 for (n_num = 1; n_num <= tipc_highest_node; n_num++)
128 tipc_node_delete(tipc_net.nodes[n_num]); 130 tipc_node_delete(tipc_nodes[n_num]);
129 kfree(tipc_net.nodes); 131 kfree(tipc_nodes);
130 tipc_net.nodes = NULL; 132 tipc_nodes = NULL;
131} 133}
132 134
133static void net_route_named_msg(struct sk_buff *buf) 135static void net_route_named_msg(struct sk_buff *buf)
diff --git a/net/tipc/net.h b/net/tipc/net.h
index aa431ef8b7bf..b52b9748b5e2 100644
--- a/net/tipc/net.h
+++ b/net/tipc/net.h
@@ -39,21 +39,10 @@
39 39
40struct tipc_node; 40struct tipc_node;
41 41
42/** 42extern struct tipc_node **tipc_nodes;
43 * struct network - TIPC network structure 43extern u32 tipc_highest_node;
44 * @nodes: array of pointers to all nodes within cluster 44extern atomic_t tipc_num_links;
45 * @highest_node: id of highest numbered node within cluster
46 * @links: number of (unicast) links to cluster
47 */
48
49struct network {
50 struct tipc_node **nodes;
51 u32 highest_node;
52 atomic_t links;
53};
54
55 45
56extern struct network tipc_net;
57extern rwlock_t tipc_net_lock; 46extern rwlock_t tipc_net_lock;
58 47
59void tipc_net_route_msg(struct sk_buff *buf); 48void tipc_net_route_msg(struct sk_buff *buf);
diff --git a/net/tipc/node.c b/net/tipc/node.c
index a24fad32345e..64976f2e3c66 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -81,9 +81,9 @@ struct tipc_node *tipc_node_create(u32 addr)
81 INIT_LIST_HEAD(&n_ptr->nsub); 81 INIT_LIST_HEAD(&n_ptr->nsub);
82 82
83 n_num = tipc_node(addr); 83 n_num = tipc_node(addr);
84 tipc_net.nodes[n_num] = n_ptr; 84 tipc_nodes[n_num] = n_ptr;
85 if (n_num > tipc_net.highest_node) 85 if (n_num > tipc_highest_node)
86 tipc_net.highest_node = n_num; 86 tipc_highest_node = n_num;
87 87
88 spin_unlock_bh(&node_create_lock); 88 spin_unlock_bh(&node_create_lock);
89 return n_ptr; 89 return n_ptr;
@@ -97,11 +97,11 @@ void tipc_node_delete(struct tipc_node *n_ptr)
97 return; 97 return;
98 98
99 n_num = tipc_node(n_ptr->addr); 99 n_num = tipc_node(n_ptr->addr);
100 tipc_net.nodes[n_num] = NULL; 100 tipc_nodes[n_num] = NULL;
101 kfree(n_ptr); 101 kfree(n_ptr);
102 102
103 while (!tipc_net.nodes[tipc_net.highest_node]) 103 while (!tipc_nodes[tipc_highest_node])
104 if (--tipc_net.highest_node == 0) 104 if (--tipc_highest_node == 0)
105 break; 105 break;
106} 106}
107 107
@@ -233,7 +233,7 @@ struct tipc_node *tipc_node_attach_link(struct link *l_ptr)
233 233
234 if (!n_ptr->links[bearer_id]) { 234 if (!n_ptr->links[bearer_id]) {
235 n_ptr->links[bearer_id] = l_ptr; 235 n_ptr->links[bearer_id] = l_ptr;
236 atomic_inc(&tipc_net.links); 236 atomic_inc(&tipc_num_links);
237 n_ptr->link_cnt++; 237 n_ptr->link_cnt++;
238 return n_ptr; 238 return n_ptr;
239 } 239 }
@@ -247,7 +247,7 @@ struct tipc_node *tipc_node_attach_link(struct link *l_ptr)
247void tipc_node_detach_link(struct tipc_node *n_ptr, struct link *l_ptr) 247void tipc_node_detach_link(struct tipc_node *n_ptr, struct link *l_ptr)
248{ 248{
249 n_ptr->links[l_ptr->b_ptr->identity] = NULL; 249 n_ptr->links[l_ptr->b_ptr->identity] = NULL;
250 atomic_dec(&tipc_net.links); 250 atomic_dec(&tipc_num_links);
251 n_ptr->link_cnt--; 251 n_ptr->link_cnt--;
252} 252}
253 253
@@ -390,7 +390,7 @@ struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space)
390 " (network address)"); 390 " (network address)");
391 391
392 read_lock_bh(&tipc_net_lock); 392 read_lock_bh(&tipc_net_lock);
393 if (!tipc_net.nodes) { 393 if (!tipc_nodes) {
394 read_unlock_bh(&tipc_net_lock); 394 read_unlock_bh(&tipc_net_lock);
395 return tipc_cfg_reply_none(); 395 return tipc_cfg_reply_none();
396 } 396 }
@@ -398,7 +398,7 @@ struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space)
398 /* For now, get space for all other nodes */ 398 /* For now, get space for all other nodes */
399 399
400 payload_size = TLV_SPACE(sizeof(node_info)) * 400 payload_size = TLV_SPACE(sizeof(node_info)) *
401 (tipc_net.highest_node - 1); 401 (tipc_highest_node - 1);
402 if (payload_size > 32768u) { 402 if (payload_size > 32768u) {
403 read_unlock_bh(&tipc_net_lock); 403 read_unlock_bh(&tipc_net_lock);
404 return tipc_cfg_reply_error_string(TIPC_CFG_NOT_SUPPORTED 404 return tipc_cfg_reply_error_string(TIPC_CFG_NOT_SUPPORTED
@@ -412,8 +412,8 @@ struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space)
412 412
413 /* Add TLVs for all nodes in scope */ 413 /* Add TLVs for all nodes in scope */
414 414
415 for (n_num = 1; n_num <= tipc_net.highest_node; n_num++) { 415 for (n_num = 1; n_num <= tipc_highest_node; n_num++) {
416 n_ptr = tipc_net.nodes[n_num]; 416 n_ptr = tipc_nodes[n_num];
417 if (!n_ptr || !tipc_in_scope(domain, n_ptr->addr)) 417 if (!n_ptr || !tipc_in_scope(domain, n_ptr->addr))
418 continue; 418 continue;
419 node_info.addr = htonl(n_ptr->addr); 419 node_info.addr = htonl(n_ptr->addr);
@@ -451,7 +451,7 @@ struct sk_buff *tipc_node_get_links(const void *req_tlv_area, int req_tlv_space)
451 /* Get space for all unicast links + multicast link */ 451 /* Get space for all unicast links + multicast link */
452 452
453 payload_size = TLV_SPACE(sizeof(link_info)) * 453 payload_size = TLV_SPACE(sizeof(link_info)) *
454 (atomic_read(&tipc_net.links) + 1); 454 (atomic_read(&tipc_num_links) + 1);
455 if (payload_size > 32768u) { 455 if (payload_size > 32768u) {
456 read_unlock_bh(&tipc_net_lock); 456 read_unlock_bh(&tipc_net_lock);
457 return tipc_cfg_reply_error_string(TIPC_CFG_NOT_SUPPORTED 457 return tipc_cfg_reply_error_string(TIPC_CFG_NOT_SUPPORTED
@@ -472,10 +472,10 @@ struct sk_buff *tipc_node_get_links(const void *req_tlv_area, int req_tlv_space)
472 472
473 /* Add TLVs for any other links in scope */ 473 /* Add TLVs for any other links in scope */
474 474
475 for (n_num = 1; n_num <= tipc_net.highest_node; n_num++) { 475 for (n_num = 1; n_num <= tipc_highest_node; n_num++) {
476 u32 i; 476 u32 i;
477 477
478 n_ptr = tipc_net.nodes[n_num]; 478 n_ptr = tipc_nodes[n_num];
479 if (!n_ptr || !tipc_in_scope(domain, n_ptr->addr)) 479 if (!n_ptr || !tipc_in_scope(domain, n_ptr->addr))
480 continue; 480 continue;
481 tipc_node_lock(n_ptr); 481 tipc_node_lock(n_ptr);
diff --git a/net/tipc/node.h b/net/tipc/node.h
index 206a8efa410e..c510a2afcc67 100644
--- a/net/tipc/node.h
+++ b/net/tipc/node.h
@@ -107,7 +107,7 @@ struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space)
107static inline struct tipc_node *tipc_node_find(u32 addr) 107static inline struct tipc_node *tipc_node_find(u32 addr)
108{ 108{
109 if (likely(in_own_cluster(addr))) 109 if (likely(in_own_cluster(addr)))
110 return tipc_net.nodes[tipc_node(addr)]; 110 return tipc_nodes[tipc_node(addr)];
111 return NULL; 111 return NULL;
112} 112}
113 113