This patchset adds the network wide multi interface optimization as proposed in our wiki [1] for BATMAN IV. The main purpose is to do interface alternating and bonding by considering multi interface capabilities globally and not just for the (next) link, otherwise non-optimal links may be chosen.
This patchset needs to change a lot of core data structures and routing, please review it carefully. A local development branch exists on the public git repo [2].
Changes from RFCv2 in September are: * add debugfs file to view metric values for various interfaces (new patch) * many style and kerneldoc fixes (thanks Antonio) * use two interface parameters for bat_neigh_cmp (Antonio) * simplify and fix last candidate usage in bonding (Antonio) * rebase on latest master
I've tested the patchset in my VMs to confirm that bonding and alternating works as expected.
As always, any comments are appreciated!
Thanks, Simon
[1] http://www.open-mesh.org/projects/batman-adv/wiki/network-wide-multi-link-op... [2] http://git.open-mesh.org/batman-adv.git/shortlog/refs/heads/simon/network-wi...
Simon Wunderlich (7): batman-adv: remove bonding and interface alternating batman-adv: split tq information in neigh_node struct batman-adv: split out router from orig_node batman-adv: add WiFi penalty batman-adv: consider outgoing interface in OGM sending batman-adv: add bonding again batman-adv: add debugfs support to view multiif tables
bat_iv_ogm.c | 764 ++++++++++++++++++++++++++++++++--------------- debugfs.c | 16 + distributed-arp-table.c | 3 +- gateway_client.c | 79 ++++- hard-interface.c | 2 +- hard-interface.h | 19 ++ icmp_socket.c | 2 +- network-coding.c | 9 +- originator.c | 362 +++++++++++++++++++--- originator.h | 11 +- routing.c | 414 ++++++++----------------- routing.h | 12 +- send.c | 19 +- soft-interface.c | 2 +- translation-table.c | 5 +- types.h | 126 +++++--- 16 files changed, 1184 insertions(+), 661 deletions(-)