aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/link.h
diff options
context:
space:
mode:
authorJon Paul Maloy <jon.maloy@ericsson.com>2015-07-16 16:54:24 -0400
committerDavid S. Miller <davem@davemloft.net>2015-07-20 23:41:15 -0400
commitaf9b028e270fda6fb812d70d17d902297df1ceb5 (patch)
tree1a204c6d10d597d5db18908dc2066e980a78120d /net/tipc/link.h
parent22d85c79428b8ca9a01623aa3e3a1fe29a30a119 (diff)
tipc: make media xmit call outside node spinlock context
Currently, message sending is performed through a deep call chain, where the node spinlock is grabbed and held during a significant part of the transmission time. This is clearly detrimental to overall throughput performance; it would be better if we could send the message after the spinlock has been released. In this commit, we do instead let the call revert on the stack after the buffer chain has been added to the transmission queue, whereafter clones of the buffers are transmitted to the device layer outside the spinlock scope. As a further step in our effort to separate the roles of the node and link entities we also move the function tipc_link_xmit() to node.c, and rename it to tipc_node_xmit(). Reviewed-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/link.h')
-rw-r--r--net/tipc/link.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/tipc/link.h b/net/tipc/link.h
index 9c71d9e42e93..7add2b90361d 100644
--- a/net/tipc/link.h
+++ b/net/tipc/link.h
@@ -223,12 +223,10 @@ void tipc_link_purge_queues(struct tipc_link *l_ptr);
223void tipc_link_purge_backlog(struct tipc_link *l); 223void tipc_link_purge_backlog(struct tipc_link *l);
224void tipc_link_reset_all(struct tipc_node *node); 224void tipc_link_reset_all(struct tipc_node *node);
225void tipc_link_reset(struct tipc_link *l_ptr); 225void tipc_link_reset(struct tipc_link *l_ptr);
226int tipc_link_xmit_skb(struct net *net, struct sk_buff *skb, u32 dest,
227 u32 selector);
228int tipc_link_xmit(struct net *net, struct sk_buff_head *list, u32 dest,
229 u32 selector);
230int __tipc_link_xmit(struct net *net, struct tipc_link *link, 226int __tipc_link_xmit(struct net *net, struct tipc_link *link,
231 struct sk_buff_head *list); 227 struct sk_buff_head *list);
228int tipc_link_xmit(struct tipc_link *link, struct sk_buff_head *list,
229 struct sk_buff_head *xmitq);
232void tipc_link_proto_xmit(struct tipc_link *l_ptr, u32 msg_typ, int prob, 230void tipc_link_proto_xmit(struct tipc_link *l_ptr, u32 msg_typ, int prob,
233 u32 gap, u32 tolerance, u32 priority); 231 u32 gap, u32 tolerance, u32 priority);
234void tipc_link_push_packets(struct tipc_link *l_ptr); 232void tipc_link_push_packets(struct tipc_link *l_ptr);