This patchset enables the usage of the batman-adv multicast optimizations
for scenarios involving bridges on top of e.g. bat0, too.
The first one alters the forwarding behaviour for IGMP and MLD reports
which is a prerequisite before enabling multicast optimizations in
bridged setups. It also increases the MCAST TVLV version number to 2.
More on the issue of insufficient report handling with the v1
MCAST TVLV can be found here:
http://www.open-mesh.org/projects/batman-adv/wiki/Multicast-optimizations-l…
The second patch finally enables the multicast optimizations for
bridged setups.
Along come two more patches adding according debugging facilities
to make it possible for the user to check why the multicast
optimizations might not work ideally to give hints about
what they might change about their topology.
This patchset can be found in the current linus/multicast-bridge
branch.
Cheers, Linus
-----
Changes in v13:
* Substituted a non-breaking space with a boring one
* Dropped compat code for kernels < 3.2
* Removed mcast tvlv container and handler support for v1 completely
* Rebase to current master branch
(automatic 3-way merge without issues)
Changes in v12:
* Rebase to current master branch
(automatic 3-way merge, then batadv_hardif_free_ref() -> batadv_hardif_put())
* Adding Linux upstream fix to compat-sources/net/core/skbuff.c
-> "net: fix bridge multicast packet checksum validation"
(9b368814b33, present since v4.5, queued for stable)
Changes in v11:
* Rewording of commit messages (PATCH 1/4+2/4)
* Rebasing to master (solving conflict with kernel doc "return" changes)
* Updating kerneldoc to proper "Return:" syntax
* Using eth_zero_addr() over memset (fixes a new checkpatch warning)
* Changing uint8_t to u8 and uint32_t to u32 (fixes new checkpatch warnings)
* Turning some batadv_dbg() into batadv_info(), making querier presence more
visible (i.e. in dmesg too) (PATCH 3/4)
Changes in v10:
- PATCH 1/4:
* Former "[PATCH 4/4] batman-adv: Forward IGMP/MLD reports to selected querier (only)"
substituted by the interim branch "batman-adv: Always flood IGMP/MLD reports"
with the following changes:
* Increased compatibility to mcast-v1-tvlv nodes by
registering a v1 tvlv container and handler, too
(note: PATCH 2/4 needs to still unregister the handler
if the node is bridged bc. it can't "trust" v1 nodes)
* Removed skb_set_network_header() call
(extra patch pending for review for maint)
* Compared to patchset v9 this substitution makes things
compilable again for kernels < 2.6.35
- PATCH 2/4:
* Moved enum introduction of BATADV_DBG_MCAST to PATCH 3/4,
not needed in PATCH 2/4 yet
* Adjusted compat code to new compat layout
* Adjustments to batadv_mcast_mla_tvlv_update() to fit now
preceding PATCH 1/4
* bat_priv->mcast.bridged flag already introduced here
(instead of in PATCH 3/4) because we need it for the new
mcast-v1-tvlv handling
---
Interim Changlog of
"batman-adv: Always flood IGMP/MLD reports"
v1:
* Removed query snooping and state
* Squashed all three patches into one
* Renamed "batadv_mcast_tvlv_ogm_handler_v1()" to *_v2()
* Added explicit icmpv6.h include
* Rebased on top of master
-----
Interim Interim Changelog of
"batman-adv: Unicasting multicast reports to querier-node only"
v6:
* compat: copied copyright headers from original upstream c files
* compat: unified ordering in compat c files:
-> copyright header, then includes, then kernel specific functions
v5:
* Removed RFC tag: Needed exports got merged to net-next and are going to
be available with Linux 4.2
* Redid compat solution - now fully backwards compatible down to 2.6.33
v4:
* excluded bridge part from this patchset, they should
hopefully be added to net-next soon
* Added a compat solution (PATCH 3/3)
* Removed Kconfig-depends as by David's suggestion the needed parsing
functions for MLD are going to be forced built-ins even if IPv6 is
going to be built as a module
* Removed unused variable 'int ret' in batadv_mcast_is_report_ipv6()
* Adjusted to new folder structure
v3:
* Adding Kconfig-depends and #if's
(so basically adding similar dependancy constraints as the bridge code
has, except that there are no depends if batman-adv gets compiled without
multicast optimizations)
-> the case of IPv6=M and batman-adv=y is still impossible if multicast
optimizations are enabled; but I don't see the practical demand for that
either - people who use IPv6 as a module will probably also want to
use batman-adv as a module
v2:
* various bugfixes (now runtime tested, too - should(tm) work)
* added netdev+bridge mailinglists
-----
---
Changes in v9:
- PATCH 1/4:
* fix: added compat code for pr_warn_once()
* compat fix for bridge export stubs: fixes compile error
with kernels < 3.16 without bridge (snooping) support
- PATCH 2/4:
* perform updates of variables within bat_priv->mcast.querier_ipv{4,6}
individually (there's a new, third member in 4/4 which shouldn't be
overriden)
* PATCH 4/4: NEW
Changes in v8 (thanks to Simon's suggestions):
- PATCH 2/3:
* print shadowing status log of an appearing and shadowing querier, too
(the bridge-querier-existence call has an additional 10s delay
to ensure reports had their time to arrive -
the bridge-querier-port call doesn't have that)
- PATCH 3/3:
* changing debugfs output from "+" and "-" to "U/4/6" and "."
* fixing "no querier present" logic (introduced in [PATCHv7 3/3])
Changes in v7 (thanks to Simon's suggestions):
- PATCH 2/3:
* renaming old/new_querier to old/new_state
* slightly extended kerneldoc of batadv_mcast_querier_log()
* removing words "good" and "bad" from debug output
* simplified batadv_mcast_flags_log()
* assignment instead of memset in batadv_mcast_mla_tvlv_update()
and batadv_softif_init_late()
* simple struct member assignments instead of one complex struct
assigment
* removing unnecessary memcmp's
* substituting return statement for an if-block in
batadv_mcast_querier_log() and batadv_mcast_bridge_log()
* print "Unsnoopables(U)-flag" instead of just "U-flag"
- PATCH 3/3:
* use bat_priv values instead of querying bridge ABI in
batadv_mcast_flags_print_header()
Changes in v6:
* New PATCH 2/3 inserted, moving logging to separate patch
* More verbose logging added to PATCH 2/3:
Bridge and querier state changes are logged too
* upper case to lower case for kernel doc of batadv_mcast_flags_open
(PATCH 2/3)
* Adding note to kernel doc of batadv_mcast_get_bridge about
increased refcount (PATCH 1/3)
* Printing some lines about current bridge and querier state to
debugfs too (PATCH 3/3)
Changes in v5 (PATCH 2/2 only):
* s/dat_cache/mcast_flags/ in kerneldoc (copy&paste error)
Changes in v4 (PATCH 2/2 only):
* initial {ad,e}dition of this patch
Changes in v3 (PATCH 1/2 only):
* Removed "RFC" tag in title again: The stubs and new export are upstream
in net-next and therefore going to be included in 3.17
* Added some debug output:
* Two warning messages:
-> Old kernel version or no bridge IGMP/MLD snooping compiled
* New batman-adv log-level "mcast":
-> Logging mcast flag changes
(a third debugging facility, a new table for debugfs for a global
mcast flag overview will be added in a separate patch later
as discussed with Simon)
Changes in v2 (PATCH 1/2 only):
* fetching local (= on this same kernel) multicast listeners from
the bridge instead of the bat0 interface if a bridge is present
- just like ip addresses and routes should be used from br0, the
same goes for multicast listeners
* beautification of batadv_mcast_mla_br_addr_cpy(), now using already
present functions from the kernel instead of own, hackish approach
* changed names of some goto-labels (not using "skip" anymore)
* using new, third bridge multicast export (because this export is
not upstream yet, I've added the "RFC" in the title):
br_multicast_has_querier_anywhere()
* adding compat stubs for two bridge multicast exports, to make
batman-adv compile- and usable even if a 3.16 kernel was compiled
without bridge code - the stubs are supposed to be upstream in the
bridge code in 3.17 (therefore just 'compat')
* updated kerneldocs for batadv_mcast_mla_bridge_get() and
batadv_mcast_mla_softif_get()
* The two sentences in the commit message starting with "Queriers: ..."
were slightly modified to include the third bridge multicast export
The only function declaration using the "struct work_struct" was removed
and thus this forward declaration should also be removed.
Fixes: 0d8468553c3c ("batman-adv: remove ogm_emit and ogm_schedule API calls")
Signed-off-by: Sven Eckelmann <sven.eckelmann(a)open-mesh.com>
---
Problem was found by https://lists.open-mesh.org/pipermail/linux-merge/2016-May/003146.html
net/batman-adv/send.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/net/batman-adv/send.h b/net/batman-adv/send.h
index f6fda19..7cecb75 100644
--- a/net/batman-adv/send.h
+++ b/net/batman-adv/send.h
@@ -26,7 +26,6 @@
#include "packet.h"
struct sk_buff;
-struct work_struct;
void batadv_forw_packet_free(struct batadv_forw_packet *forw_packet);
int batadv_send_skb_to_orig(struct sk_buff *skb,
--
2.8.1
Hello David,
this is a pull request intended for net-next.
In this batch you don't have any patch that depends on our fixes,
therefore you can safely merge it even if the net tree has not been
merged yet.
In this patchset you basically have some cleanup work, code refactoring,
style fixes and two updates for the MAINTAINERS file.
Please pull or let me know of any problem!
Thanks a lot,
Antonio
The following changes since commit e03179fe78d5b39dbf3e8b0b50f7c406514b15c7:
net: ethernet: fec_mpc52xx: move to new ethtool api {get|set}_link_ksettings (2016-05-03 13:03:53 -0400)
are available in the git repository at:
git://git.open-mesh.org/linux-merge.git tags/batman-adv-for-davem
for you to fetch changes up to 64ae74455371a40bc9f9c8325eb4c37f2978c95f:
batman-adv: Split batadv_iv_ogm_orig_del_if function (2016-05-04 02:22:03 +0800)
----------------------------------------------------------------
In this pull request you have:
- two changes to the MAINTAINERS file where one marks our mailing list
as moderated and the other adds a missing documentation file
- kernel-doc fixes
- code refactoring and various cleanups
----------------------------------------------------------------
Antonio Quartulli (2):
batman-adv: use static string for table headers
batman-adv: fix wrong names in kerneldoc
Geliang Tang (2):
batman-adv: use list_for_each_entry_safe
batman-adv: use to_delayed_work
Simon Wunderlich (4):
batman-adv: Start new development cycle
batman-adv: fix debuginfo macro style issue
batman-adv: move and restructure batadv_v_ogm_forward
batman-adv: Merge batadv_v_ogm_orig_update into batadv_v_ogm_route_update
Sven Eckelmann (7):
MAINTAINERS: Mark BATMAN ADVANCED mailing list as moderated
MAINTAINERS: Add BATMAN ADVANCED documentation files
batman-adv: Fix checkpatch warning about 'unsigned' type
batman-adv: Fix kerneldoc for batadv_compare_claim
batman-adv: Add kernel-doc for batadv_interface_rx
batman-adv: Fix function names on new line starting with '*'
batman-adv: Split batadv_iv_ogm_orig_del_if function
MAINTAINERS | 5 +-
net/batman-adv/bat_iv_ogm.c | 123 +++++++++++++-------
net/batman-adv/bat_v.c | 9 +-
net/batman-adv/bat_v_ogm.c | 205 ++++++++++++++++-----------------
net/batman-adv/bridge_loop_avoidance.c | 19 ++-
net/batman-adv/debugfs.c | 19 +--
net/batman-adv/distributed-arp-table.c | 8 +-
net/batman-adv/fragmentation.c | 12 +-
net/batman-adv/icmp_socket.c | 24 ++--
net/batman-adv/main.c | 8 +-
net/batman-adv/main.h | 5 +-
net/batman-adv/multicast.c | 11 +-
net/batman-adv/network-coding.c | 20 ++--
net/batman-adv/originator.c | 4 +-
net/batman-adv/packet.h | 2 +-
net/batman-adv/send.c | 4 +-
net/batman-adv/soft-interface.c | 20 +++-
net/batman-adv/translation-table.c | 11 +-
18 files changed, 277 insertions(+), 232 deletions(-)
Hi,
I was asked by the batman-adv maintainers to port the tp_meter to netlink. And
I shouldn't do it with the patches from Andrew/Matthias applied but with only
a small part of patch 4.
I know, this isn't the nicest move but it allowed me to restructure the first
commit a little bit. I've extracted the part which introduced the netlink
family + a restructured batman_adv.h. I've also added the part which
introduces the generic mesh information as extra patch (+kerneldoc). This
added some attributes which I need in tp_meter. But I can also remove the
patch and only merge the necessary parts.
@Andrew, I hope you don't take it the wrong way. I really like your work and
even borrowed parts of the code for the tp_meter interface. So you are now
allowed to criticize the hell out of the changes and request some free beer
from Antonio, Marek and Simon :). But I hope that you like the adjustments to
the initial parts (at least a little bit). You would have to rebase your
changes (which I still want to get integrated) on top when these things here
are merged. I would also be willing to do the rebase myself and send you the
result (so you can add the kerneldoc and maybe make further adjustments).
The only "big" conflicts I see are related to the order of attributes. But
this was a long day for me and I may have forgotten something.
@the_rest: Do you find the bugs introduced by moving it to netlink?
The one which I know about is the inability to receive signals while the
kernel is doing the wait_event (So the BATADV_CMD_TP_METER_CANCEL doesn't work
at all). I am waiting for recommendations. The one which
comes to my mind is not to wait for the thing to finish but to just return
immediately. The client would then have to some kind of event listener enabled
which waits until the thing finished. This approach would also require some
kind of session info exchange. Does anyone else have a good idea?
Kind regards,
Sven
Hello David,
this is another pull request intended for net.
I know that I sent another batch a few days ago, but after having gone
through my queue I thought that merging these last 4 patches would still
be worth it (there won't be any other pull request for linux-4.6 :)).
The description of the changes follows below.
Please pull or let me know of any issue!
Thanks a lot,
Antonio
The following changes since commit 1dfcd832b1a9ed45edac15b31d079b805fa0ae2a:
Merge branch 'bpf-fixes' (2016-04-28 17:29:46 -0400)
are available in the git repository at:
git://git.open-mesh.org/linux-merge.git tags/batman-adv-fix-for-davem
for you to fetch changes up to abe59c65225ccd63a5964e2f2a73dd2995b948e7:
batman-adv: Fix reference counting of hardif_neigh_node object for neigh_node (2016-04-29 19:46:11 +0800)
----------------------------------------------------------------
In this small batch of patches you have:
- a fix for our Distributed ARP Table that makes sure that the input
provided to the hash function during a query is the same as the one
provided during an insert (so to prevent false negatives), by Antonio
Quartulli
- a fix for our new protocol implementation B.A.T.M.A.N. V that ensures
that a hard interface is properly re-activated when it is brought down
and then up again, by Antonio Quartulli
- two fixes respectively to the reference counting of the tt_local_entry
and neigh_node objects, by Sven Eckelmann. Such bug is rather severe
as it would prevent the netdev objects references by batman-adv from
being released after shutdown.
----------------------------------------------------------------
Antonio Quartulli (2):
batman-adv: fix DAT candidate selection (must use vid)
batman-adv: B.A.T.M.A.N V - make sure iface is reactivated upon NETDEV_UP event
Sven Eckelmann (2):
batman-adv: Fix reference counting of vlan object for tt_local_entry
batman-adv: Fix reference counting of hardif_neigh_node object for neigh_node
net/batman-adv/bat_v.c | 12 ++++++++++
net/batman-adv/distributed-arp-table.c | 17 ++++++++------
net/batman-adv/hard-interface.c | 3 +++
net/batman-adv/originator.c | 16 ++++---------
net/batman-adv/translation-table.c | 42 ++++------------------------------
net/batman-adv/types.h | 7 ++++++
6 files changed, 41 insertions(+), 56 deletions(-)