diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2011-05-24 19:20:09 +0200 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-06-24 22:18:15 +0200 |
commit | 017dac31dc8a25ad45421715d88c3869e299fd35 (patch) | |
tree | fb3a44ebd4ce8f9b51c2c11b38653d53590e1ffe /net/tipc | |
parent | tipc: Add sanity check to detect rejection of non-payload messages (diff) | |
download | linux-017dac31dc8a25ad45421715d88c3869e299fd35.tar.xz linux-017dac31dc8a25ad45421715d88c3869e299fd35.zip |
tipc: Optimize routing of returned payload messages
Reduces the work involved in transmitting a returned payload message
by doing only the work necessary to route such a message directly to
the specified destination port, rather than invoking the code used
to route an arbitrary message to an arbitrary destination.
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/port.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c index 756e64cbff96..70ecdfdf6e3a 100644 --- a/net/tipc/port.c +++ b/net/tipc/port.c @@ -360,6 +360,7 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err) int hdr_sz; u32 imp = msg_importance(msg); u32 data_sz = msg_data_sz(msg); + u32 src_node; if (data_sz > MAX_REJECT_SIZE) data_sz = MAX_REJECT_SIZE; @@ -416,7 +417,11 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err) /* send returned message & dispose of rejected message */ - tipc_net_route_msg(rbuf); + src_node = msg_prevnode(msg); + if (src_node == tipc_own_addr) + tipc_port_recv_msg(rbuf); + else + tipc_link_send(rbuf, src_node, msg_link_selector(rmsg)); exit: buf_discard(buf); return data_sz; |