summaryrefslogtreecommitdiffstats
path: root/net/tipc/msg.h
diff options
context:
space:
mode:
authorJon Paul Maloy2015-10-22 14:51:38 +0200
committerDavid S. Miller2015-10-24 15:56:32 +0200
commitc1ab3f1dea3df566ad38caf98baf69c656679090 (patch)
treef62e1118dade62d290f0a5cfc418b355194da013 /net/tipc/msg.h
parenttipc: use explicit allocation of broadcast send link (diff)
downloadkernel-qcow2-linux-c1ab3f1dea3df566ad38caf98baf69c656679090.tar.gz
kernel-qcow2-linux-c1ab3f1dea3df566ad38caf98baf69c656679090.tar.xz
kernel-qcow2-linux-c1ab3f1dea3df566ad38caf98baf69c656679090.zip
tipc: make struct tipc_link generic to support broadcast
Realizing that unicast is just a special case of broadcast, we also see that we can go in the other direction, i.e., that modest changes to the current unicast link can make it generic enough to support broadcast. The following changes are introduced here: - A new counter ("ackers") in struct tipc_link, to indicate how many peers need to ack a packet before it can be released. - A corresponding counter in the skb user area, to keep track of how many peers a are left to ack before a buffer can be released. - A new counter ("acked"), to keep persistent track of how far a peer has acked at the moment, i.e., where in the transmission queue to start updating buffers when the next ack arrives. This is to avoid double acknowledgements from a peer, with inadvertent relase of packets as a result. - A more generic tipc_link_retrans() function, where retransmit starts from a given sequence number, instead of the first packet in the transmision queue. This is to minimize the number of retransmitted packets on the broadcast media. When the new functionality is taken into use in the next commits, we expect it to have minimal effect on unicast mode performance. Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Reviewed-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/msg.h')
-rw-r--r--net/tipc/msg.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/tipc/msg.h b/net/tipc/msg.h
index 9f0ef54be612..799782c47f6c 100644
--- a/net/tipc/msg.h
+++ b/net/tipc/msg.h
@@ -112,6 +112,7 @@ struct tipc_skb_cb {
bool wakeup_pending;
u16 chain_sz;
u16 chain_imp;
+ u16 ackers;
};
#define TIPC_SKB_CB(__skb) ((struct tipc_skb_cb *)&((__skb)->cb[0]))