android_kernel_sony_sdm845/net/batman-adv
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Andreas Pape 1fb9c2f41e batman-adv: handle race condition for claims between gateways
[ Upstream commit a3a5129e122709306cfa6409781716c2933df99b ]

Consider the following situation which has been found in a test setup:
Gateway B has claimed client C and gateway A has the same backbone
network as B. C sends a broad- or multicast to B and directly after
this packet decides to send another packet to A due to a better TQ
value. B will forward the broad-/multicast into the backbone as it is
the responsible gw and after that A will claim C as it has been
chosen by C as the best gateway. If it now happens that A claims C
before it has received the broad-/multicast forwarded by B (due to
backbone topology or due to some delay in B when forwarding the
packet) we get a critical situation: in the current code A will
immediately unclaim C when receiving the multicast due to the
roaming client scenario although the position of C has not changed
in the mesh. If this happens the multi-/broadcast forwarded by B
will be sent back into the mesh by A and we have looping packets
until one of the gateways claims C again.
In order to prevent this, unclaiming of a client due to the roaming
client scenario is only done after a certain time is expired after
the last claim of the client. 100 ms are used here, which should be
slow enough for big backbones and slow gateways but fast enough not
to break the roaming client use case.

Acked-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Andreas Pape <apape@phoenixcontact.com>
[sven@narfation.org: fix conflicts with current version]
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-22 09:17:41 +01:00
..
bat_algo.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
bat_algo.h batman-adv: netlink: add routing_algo query 2016-08-09 07:54:36 +02:00
bat_iv_ogm.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
bat_iv_ogm.h batman-adv: Fix bat_(iv|v) function declaration header 2016-06-30 10:29:43 +02:00
bat_v.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
bat_v.h batman-adv: Fix bat_(iv|v) function declaration header 2016-06-30 10:29:43 +02:00
bat_v_elp.c batman-adv: fix elp packet data reservation 2016-08-26 15:22:31 +02:00
bat_v_elp.h batman-adv: Keep includes ordered by filename 2016-06-30 10:29:43 +02:00
bat_v_ogm.c batman-adv: Place kref_get for orig_node near use 2016-08-09 07:54:46 +02:00
bat_v_ogm.h batman-adv: Include main.h in bat_v_ogm.h 2016-06-30 10:29:43 +02:00
bitarray.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
bitarray.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
bridge_loop_avoidance.c batman-adv: handle race condition for claims between gateways 2018-03-22 09:17:41 +01:00
bridge_loop_avoidance.h batman-adv: add backbone table netlink support 2016-08-09 07:54:43 +02:00
debugfs.c batman-adv: Suppress debugfs entries for netns's 2016-08-09 07:54:35 +02:00
debugfs.h treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
distributed-arp-table.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
distributed-arp-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
fragmentation.c batman-adv: return netdev status in the TX path 2016-07-04 12:37:18 +02:00
fragmentation.h batman-adv: return netdev status in the TX path 2016-07-04 12:37:18 +02:00
gateway_client.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
gateway_client.h batman-adv: netlink: add gateway table queries 2016-08-09 07:54:40 +02:00
gateway_common.c batman-adv: make GW election code protocol specific 2016-08-09 07:54:29 +02:00
gateway_common.h batman-adv: add throughput override attribute to hard_ifaces 2016-02-29 16:05:32 +08:00
hard-interface.c batman-adv: Revert "fix splat on disabling an interface" 2016-11-04 12:27:34 +01:00
hard-interface.h batman-adv: Create batman soft interfaces within correct netns. 2016-05-10 18:26:44 +08:00
hash.c batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
hash.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
icmp_socket.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
icmp_socket.h batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
Kconfig batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
log.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
log.h batman-adv: Add BATADV_DBG_TP_METER to BATADV_DBG_ALL 2016-10-17 16:11:56 +02:00
main.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
main.h batman-adv: Start new development cycle 2016-08-09 07:54:24 +02:00
Makefile batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
multicast.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
multicast.h batman-adv: Add debugfs table for mcast flags 2016-06-30 10:29:43 +02:00
netlink.c batman: make netlink attributes const 2016-09-01 14:09:00 -07:00
netlink.h batman-adv: netlink: add translation table query 2016-08-09 07:54:37 +02:00
network-coding.c batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00
network-coding.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
originator.c batman-adv: Modify neigh_list only with rcu-list functions 2016-10-17 16:10:53 +02:00
originator.h batman-adv: netlink: add originator and neighbor table queries 2016-08-09 07:54:38 +02:00
packet.h batman-adv: netlink: add translation table query 2016-08-09 07:54:37 +02:00
routing.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-09-23 06:46:57 -04:00
routing.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
send.c batman-adv: Remove orig_node reference handling from send_skb_unicast 2016-08-09 07:54:33 +02:00
send.h batman-adv: Introduce forward packet creation helper 2016-08-09 07:54:32 +02:00
soft-interface.c batman-adv: Place kref_get for softif_vlan near use 2016-08-09 07:54:50 +02:00
soft-interface.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
sysfs.c batman-adv: disable sysfs knobs when GW-mode is not implemented 2016-08-09 07:54:30 +02:00
sysfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
tp_meter.c batman-adv: Detect missing primaryif during tp_send as error 2016-11-04 12:27:39 +01:00
tp_meter.h batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
translation-table.c batman-adv: Check for alloc errors when preparing TT local data 2016-12-02 10:46:59 +01:00
translation-table.h batman-adv: netlink: add translation table query 2016-08-09 07:54:37 +02:00
tvlv.c batman-adv: Place kref_get for tvlv_handler near use 2016-08-09 07:54:53 +02:00
tvlv.h batman-adv: split tvlv into a separate file 2016-06-30 10:29:43 +02:00
types.h batman-adv: Allow to disable debugfs support 2016-08-09 07:54:54 +02:00