diff options
author | Ying Xue <ying.xue@windriver.com> | 2013-10-18 01:23:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-10-18 13:20:43 -0400 |
commit | f2875c3cc4769d07bab3bc6e51c386840a7de280 (patch) | |
tree | 22ad4a05e77bad4316b5d95bfe397f83f4b3615f | |
parent | 4babbaa8a1ecf1cb76de5e1635417c7472190ef5 (diff) |
tipc: avoid unnecessary lookup for tipc bearer instance
tipc_block_bearer() currently takes a bearer name (const char*)
as argument. This requires the function to make a lookup to find
the pointer to the corresponding bearer struct. In the current
code base this is not necessary, since the only two callers
(tipc_continue(),recv_notification()) already have validated
copies of this pointer, and hence can pass it directly in the
function call.
We change tipc_block_bearer() to directly take struct tipc_bearer*
as argument instead.
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Reviewed-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/tipc/bearer.c | 14 | ||||
-rw-r--r-- | net/tipc/bearer.h | 2 | ||||
-rw-r--r-- | net/tipc/eth_media.c | 6 | ||||
-rw-r--r-- | net/tipc/ib_media.c | 6 |
4 files changed, 10 insertions, 18 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 09faa5520079..3f9707a16d06 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
@@ -420,23 +420,15 @@ exit: | |||
420 | } | 420 | } |
421 | 421 | ||
422 | /** | 422 | /** |
423 | * tipc_block_bearer - Block the bearer with the given name, and reset all its links | 423 | * tipc_block_bearer - Block the bearer, and reset all its links |
424 | */ | 424 | */ |
425 | int tipc_block_bearer(const char *name) | 425 | int tipc_block_bearer(struct tipc_bearer *b_ptr) |
426 | { | 426 | { |
427 | struct tipc_bearer *b_ptr = NULL; | ||
428 | struct tipc_link *l_ptr; | 427 | struct tipc_link *l_ptr; |
429 | struct tipc_link *temp_l_ptr; | 428 | struct tipc_link *temp_l_ptr; |
430 | 429 | ||
431 | read_lock_bh(&tipc_net_lock); | 430 | read_lock_bh(&tipc_net_lock); |
432 | b_ptr = tipc_bearer_find(name); | 431 | pr_info("Blocking bearer <%s>\n", b_ptr->name); |
433 | if (!b_ptr) { | ||
434 | pr_warn("Attempt to block unknown bearer <%s>\n", name); | ||
435 | read_unlock_bh(&tipc_net_lock); | ||
436 | return -EINVAL; | ||
437 | } | ||
438 | |||
439 | pr_info("Blocking bearer <%s>\n", name); | ||
440 | spin_lock_bh(&b_ptr->lock); | 432 | spin_lock_bh(&b_ptr->lock); |
441 | b_ptr->blocked = 1; | 433 | b_ptr->blocked = 1; |
442 | list_for_each_entry_safe(l_ptr, temp_l_ptr, &b_ptr->links, link_list) { | 434 | list_for_each_entry_safe(l_ptr, temp_l_ptr, &b_ptr->links, link_list) { |
diff --git a/net/tipc/bearer.h b/net/tipc/bearer.h index f800e63980cf..e5e04be6fffa 100644 --- a/net/tipc/bearer.h +++ b/net/tipc/bearer.h | |||
@@ -163,7 +163,7 @@ int tipc_register_media(struct tipc_media *m_ptr); | |||
163 | 163 | ||
164 | void tipc_recv_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr); | 164 | void tipc_recv_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr); |
165 | 165 | ||
166 | int tipc_block_bearer(const char *name); | 166 | int tipc_block_bearer(struct tipc_bearer *b_ptr); |
167 | void tipc_continue(struct tipc_bearer *tb_ptr); | 167 | void tipc_continue(struct tipc_bearer *tb_ptr); |
168 | 168 | ||
169 | int tipc_enable_bearer(const char *bearer_name, u32 disc_domain, u32 priority); | 169 | int tipc_enable_bearer(const char *bearer_name, u32 disc_domain, u32 priority); |
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c index e048d491cc0b..c36c938306a1 100644 --- a/net/tipc/eth_media.c +++ b/net/tipc/eth_media.c | |||
@@ -265,17 +265,17 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt, | |||
265 | if (netif_carrier_ok(dev)) | 265 | if (netif_carrier_ok(dev)) |
266 | tipc_continue(eb_ptr->bearer); | 266 | tipc_continue(eb_ptr->bearer); |
267 | else | 267 | else |
268 | tipc_block_bearer(eb_ptr->bearer->name); | 268 | tipc_block_bearer(eb_ptr->bearer); |
269 | break; | 269 | break; |
270 | case NETDEV_UP: | 270 | case NETDEV_UP: |
271 | tipc_continue(eb_ptr->bearer); | 271 | tipc_continue(eb_ptr->bearer); |
272 | break; | 272 | break; |
273 | case NETDEV_DOWN: | 273 | case NETDEV_DOWN: |
274 | tipc_block_bearer(eb_ptr->bearer->name); | 274 | tipc_block_bearer(eb_ptr->bearer); |
275 | break; | 275 | break; |
276 | case NETDEV_CHANGEMTU: | 276 | case NETDEV_CHANGEMTU: |
277 | case NETDEV_CHANGEADDR: | 277 | case NETDEV_CHANGEADDR: |
278 | tipc_block_bearer(eb_ptr->bearer->name); | 278 | tipc_block_bearer(eb_ptr->bearer); |
279 | tipc_continue(eb_ptr->bearer); | 279 | tipc_continue(eb_ptr->bearer); |
280 | break; | 280 | break; |
281 | case NETDEV_UNREGISTER: | 281 | case NETDEV_UNREGISTER: |
diff --git a/net/tipc/ib_media.c b/net/tipc/ib_media.c index 5545145ccffa..20b1aa464321 100644 --- a/net/tipc/ib_media.c +++ b/net/tipc/ib_media.c | |||
@@ -258,17 +258,17 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt, | |||
258 | if (netif_carrier_ok(dev)) | 258 | if (netif_carrier_ok(dev)) |
259 | tipc_continue(ib_ptr->bearer); | 259 | tipc_continue(ib_ptr->bearer); |
260 | else | 260 | else |
261 | tipc_block_bearer(ib_ptr->bearer->name); | 261 | tipc_block_bearer(ib_ptr->bearer); |
262 | break; | 262 | break; |
263 | case NETDEV_UP: | 263 | case NETDEV_UP: |
264 | tipc_continue(ib_ptr->bearer); | 264 | tipc_continue(ib_ptr->bearer); |
265 | break; | 265 | break; |
266 | case NETDEV_DOWN: | 266 | case NETDEV_DOWN: |
267 | tipc_block_bearer(ib_ptr->bearer->name); | 267 | tipc_block_bearer(ib_ptr->bearer); |
268 | break; | 268 | break; |
269 | case NETDEV_CHANGEMTU: | 269 | case NETDEV_CHANGEMTU: |
270 | case NETDEV_CHANGEADDR: | 270 | case NETDEV_CHANGEADDR: |
271 | tipc_block_bearer(ib_ptr->bearer->name); | 271 | tipc_block_bearer(ib_ptr->bearer); |
272 | tipc_continue(ib_ptr->bearer); | 272 | tipc_continue(ib_ptr->bearer); |
273 | break; | 273 | break; |
274 | case NETDEV_UNREGISTER: | 274 | case NETDEV_UNREGISTER: |