[5/5] batman-adv: Enable LockLess TX for softif
Commit Message
From: Sven Eckelmann <sven@narfation.org>
The batadv interfaces are virtual interfaces which just tunnel the traffic
over other ethernet compatible interfaces. It doesn't need serialization
during the tx phase and is using RCU for most of its internal
datastructures. Since it doesn't have actual queues which could be locked
independently, the throughput gets significantly reduced by the extra lock
in the core net code.
8 parallel TCP connections forwarded by an IPQ4019 based hardware over
5GHz could reach:
* without LLTX: 349 Mibit/s
* with LLTX: 563 Mibit/s
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
---
net/batman-adv/soft-interface.c | 1 +
1 file changed, 1 insertion(+)
Comments
What does the frame look like nowadays? Does it have an IP header?
[please avoid replying to a unrelated message when starting a new topic]
On Mittwoch, 19. September 2018 09:47:09 CEST Dave Taht wrote:
> What does the frame look like nowadays? Does it have an IP header?
Depends on what you are talking about. batman-adv is still raw ethernet. The
encapsulated traffic ("tunnelled traffic) is
1. ethernet header
2. batman-adv header
3. encapsulated ethernet header
4. the rest (IP, ...)
I have attached some small examples which you can open with wireshark. I think
the v15 support was added in 2014 - so you should be able to dissect these
packets with the wireshark version from a recent Linux distribution.
And the (stagnating) batmand uses IPv4 for the announcements. And it only
modifies IPv4 routing tables. For IPv4+IPv6 support, you have to check out
bmx.
Kind regards,
Sven
Hi all,
I'd like to package an application for RHEL7 which uses BATMAN, but it seems that the module is not distributed by Redhat with their kernel.
Am I going to be stuck with releasing a new package with an updated batman-adv kernel module for every minor update of the OS, or is there a simpler way?...
Any advice/suggestions would be appreciated.
--
A. James Lewis (james@fsck.co.uk)
"Engineering does not require science. Science helps a lot but people
built perfectly good brick walls long before they knew why cement works."
@@ -1050,6 +1050,7 @@ static void batadv_softif_init_early(struct net_device *dev)
dev->needs_free_netdev = true;
dev->priv_destructor = batadv_softif_free;
dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_NETNS_LOCAL;
+ dev->features |= NETIF_F_LLTX;
dev->priv_flags |= IFF_NO_QUEUE;
/* can't call min_mtu, because the needed variables