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: | 
