batman-adv: bcast: queue per interface, if needed
authorLinus Lüssing <linus.luessing@c0d3.blue>
Sun, 16 May 2021 22:33:07 +0000 (00:33 +0200)
committerSimon Wunderlich <sw@simonwunderlich.de>
Mon, 17 May 2021 10:00:44 +0000 (12:00 +0200)
commit3f69339068f93e206e581e6ab9927502f8722ac7
tree0b62241a2865cf880eda4f7138bc51f336a12329
parentd295345abb3e91e5a16f3293eb12b111e352bd2b
batman-adv: bcast: queue per interface, if needed

Currently we schedule a broadcast packet like:

3x: [ [(re-)queue] --> for(hard-if): maybe-transmit ]

The intention of queueing a broadcast packet multiple times is to
increase robustness for wireless interfaces. However on interfaces
which we only broadcast on once the queueing induces an unnecessary
penalty. This patch restructures the queueing to be performed on a per
interface basis:

for(hard-if):
- transmit
- if wireless: [queue] --> transmit --> [requeue] --> transmit

Next to the performance benefits on non-wireless interfaces this
should also make it easier to apply alternative strategies for
transmissions on wireless interfaces in the future (for instance sending
via unicast transmissions on wireless interfaces, without queueing in
batman-adv, if appropriate).

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
net/batman-adv/main.h
net/batman-adv/routing.c
net/batman-adv/send.c
net/batman-adv/send.h
net/batman-adv/soft-interface.c