diff options
author | Martin Hundebøll <martin@hundeboll.net> | 2013-01-25 05:12:40 -0500 |
---|---|---|
committer | Antonio Quartulli <ordex@autistici.org> | 2013-03-13 17:53:49 -0400 |
commit | 953324776d6d23eb81f5b825870027b9c069db29 (patch) | |
tree | ca6a07caecd098623031cffcf8a2dd80a4d1a4e6 /net/batman-adv/network-coding.h | |
parent | d56b1705e28c196312607bc8bdde0e91879c20b6 (diff) |
batman-adv: network coding - buffer unicast packets before forward
Two be able to network code two packets, one packet must be buffered
until the next is available. This is done in a "coding buffer", which is
essentially a hash table with lists of packets. Each entry in the hash
table corresponds to a specific src-dst pair, which has a linked list of
packets that are buffered.
This patch adds skbs to the buffer just before forwarding them. The
buffer is traversed every 10 ms, where timed skbs are removed from the
buffer and transmitted. To allow experiments with the network coding
scheme, the timeout is tunable through a file in debugfs.
Signed-off-by: Martin Hundebøll <martin@hundeboll.net>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Diffstat (limited to 'net/batman-adv/network-coding.h')
-rw-r--r-- | net/batman-adv/network-coding.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/batman-adv/network-coding.h b/net/batman-adv/network-coding.h index 4c56cd98d9de..c32602a3939a 100644 --- a/net/batman-adv/network-coding.h +++ b/net/batman-adv/network-coding.h | |||
@@ -35,6 +35,9 @@ void batadv_nc_purge_orig(struct batadv_priv *bat_priv, | |||
35 | struct batadv_nc_node *)); | 35 | struct batadv_nc_node *)); |
36 | void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv); | 36 | void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv); |
37 | void batadv_nc_init_orig(struct batadv_orig_node *orig_node); | 37 | void batadv_nc_init_orig(struct batadv_orig_node *orig_node); |
38 | bool batadv_nc_skb_forward(struct sk_buff *skb, | ||
39 | struct batadv_neigh_node *neigh_node, | ||
40 | struct ethhdr *ethhdr); | ||
38 | int batadv_nc_nodes_seq_print_text(struct seq_file *seq, void *offset); | 41 | int batadv_nc_nodes_seq_print_text(struct seq_file *seq, void *offset); |
39 | int batadv_nc_init_debugfs(struct batadv_priv *bat_priv); | 42 | int batadv_nc_init_debugfs(struct batadv_priv *bat_priv); |
40 | 43 | ||
@@ -79,6 +82,13 @@ static inline void batadv_nc_init_orig(struct batadv_orig_node *orig_node) | |||
79 | return; | 82 | return; |
80 | } | 83 | } |
81 | 84 | ||
85 | static inline bool batadv_nc_skb_forward(struct sk_buff *skb, | ||
86 | struct batadv_neigh_node *neigh_node, | ||
87 | struct ethhdr *ethhdr) | ||
88 | { | ||
89 | return false; | ||
90 | } | ||
91 | |||
82 | static inline int batadv_nc_nodes_seq_print_text(struct seq_file *seq, | 92 | static inline int batadv_nc_nodes_seq_print_text(struct seq_file *seq, |
83 | void *offset) | 93 | void *offset) |
84 | { | 94 | { |