linux/net/batman-adv
Simon Wunderlich 7c24bbbeab batman-adv: forward late OGMs from best next hop
When a packet is received from another node first and later from the
best next hop, this packet is dropped. However the first OGM was sent
with the BATADV_NOT_BEST_NEXT_HOP flag and thus dropped by neighbors.
The late OGM from the best neighbor is then dropped because it is a
duplicate.

If this situation happens constantly, a node might end up not forwarding
the "valid" OGMs anymore, and nodes behind will starve from not getting
valid OGMs.

Fix this by refining the duplicate checking behaviour: The actions
should depend on whether it was a duplicate for a neighbor only or for
the originator. OGMs which are not duplicates for a specific neighbor
will now be considered in batadv_iv_ogm_forward(), but only actually
forwarded for the best next hop. Therefore, late OGMs from the best
next hop are forwarded now and not dropped as duplicates anymore.

Signed-off-by: Simon Wunderlich <simon@open-mesh.com>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
2013-06-10 08:42:17 +02:00
..
Kconfig batman-adv: network coding - add the initial infrastructure code 2013-03-13 22:53:48 +01:00
Makefile batman-adv: update Makefile copyright years 2013-03-27 10:29:54 +01:00
bat_algo.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
bat_iv_ogm.c batman-adv: forward late OGMs from best next hop 2013-06-10 08:42:17 +02:00
bitarray.c batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
bitarray.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
bridge_loop_avoidance.c net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
bridge_loop_avoidance.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
debugfs.c batman-adv: network coding - detect coding nodes and remove these after timeout 2013-03-13 22:53:49 +01:00
debugfs.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
distributed-arp-table.c batman-adv: make DAT drop ARP requests targeting local clients 2013-05-09 12:39:45 +02:00
distributed-arp-table.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
gateway_client.c batman-adv: use seq_puts instead of seq_printf when the format is constant 2013-03-27 10:29:55 +01:00
gateway_client.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
gateway_common.c batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
gateway_common.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
hard-interface.c batman-adv: free an hard-interface before adding it 2013-03-27 10:29:53 +01:00
hard-interface.h batman-adv: Don't always delete softif when last slave was removed 2013-03-27 10:27:32 +01:00
hash.c batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
hash.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
icmp_socket.c batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
icmp_socket.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
main.c batman-adv: Avoid double freeing of bat_counters 2013-05-21 21:34:36 +02:00
main.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-22 20:32:51 -04:00
network-coding.c batman-adv: check return value of pskb_trim_rcsum() 2013-05-09 12:39:44 +02:00
network-coding.h batman-adv: network coding - save overheard and tx packets for decoding 2013-03-13 22:53:50 +01:00
originator.c batman-adv: Fix rcu_barrier() miss due to double call_rcu() in TT code 2013-05-17 09:54:28 +02:00
originator.h batman-adv: Fix rcu_barrier() miss due to double call_rcu() in TT code 2013-05-17 09:54:28 +02:00
packet.h batman-adv: Fix endianness errors for network coding 2013-03-27 10:27:31 +01:00
ring_buffer.c batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
ring_buffer.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
routing.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-30 03:55:20 -04:00
routing.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
send.c batman-adv: network coding - save overheard and tx packets for decoding 2013-03-13 22:53:50 +01:00
send.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
soft-interface.c batman-adv: Avoid double freeing of bat_counters 2013-05-21 21:34:36 +02:00
soft-interface.h batman-adv: Allow to use rntl_link for device creation/deletion 2013-03-27 10:27:34 +01:00
sysfs.c batman-adv: wait for rtnl in batadv_store_mesh_iface instead of failing if it is taken 2013-06-10 08:42:16 +02:00
sysfs.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
translation-table.c batman-adv: Fix rcu_barrier() miss due to double call_rcu() in TT code 2013-05-17 09:54:28 +02:00
translation-table.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
types.h batman-adv: network coding - receive coded packets and decode them 2013-03-13 22:53:51 +01:00
unicast.c batman-adv: don't use !! in bool conversion 2013-03-13 22:53:48 +01:00
unicast.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00
vis.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-22 20:32:51 -04:00
vis.h batman-adv: update copyright years 2013-01-19 21:18:12 +08:00