23 Apr, 2013
1 commit
-
Conflicts:
drivers/net/ethernet/emulex/benet/be_main.c
drivers/net/ethernet/intel/igb/igb_main.c
drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
include/net/scm.h
net/batman-adv/routing.c
net/ipv4/tcp_input.cThe e{uid,gid} --> {uid,gid} credentials fix conflicted with the
cleanup in net-next to now pass cred structs around.The be2net driver had a bug fix in 'net' that overlapped with the VLAN
interface changes by Patrick McHardy in net-next.An IGB conflict existed because in 'net' the build_skb() support was
reverted, and in 'net-next' there was a comment style fix within that
code.Several batman-adv conflicts were resolved by making sure that all
calls to batadv_is_my_mac() are changed to have a new bat_priv first
argument.Eric Dumazet's TS ECR fix in TCP in 'net' conflicted with the F-RTO
rewrite in 'net-next', mostly overlapping changes.Thanks to Stephen Rothwell and Antonio Quartulli for help with several
of these merge resolutions.Signed-off-by: David S. Miller
18 Apr, 2013
1 commit
-
On a multi-mesh node (a node running more than one batman-adv
virtual interface) batadv_is_my_mac() has to check MAC
addresses of hard interfaces belonging to the current mesh
only.Signed-off-by: Antonio Quartulli
Signed-off-by: Marek Lindner
27 Mar, 2013
2 commits
-
Signed-off-by: Simon Wunderlich
Signed-off-by: Antonio Quartulli -
The sysfs configuration interface of batman-adv to add/remove soft-interfaces
is not deadlock free and doesn't follow the currently common way to create new
virtual interfaces.An additional interface though rtnl_link is introduced which provides easy device
creation/deletion with tools like "ip":$ ip link add dev bat0 type batadv
$ ip link del dev bat0Signed-off-by: Sven Eckelmann
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli
14 Mar, 2013
3 commits
-
Before adding forward-skbs to the coding buffer, the buffer is searched
for a potential coding opportunity. If one is found, the two packets are
network coded and transmitted right away. If not, the forward-skb is
added to the buffer.Network coded packets are transmitted with information about the two
receivers and the two coded packets. The first receiver is given by the
MAC header, while the second is given in the payload/bat-header. The
second receiver uses promiscuous mode to receive the packet and check
the second destination.Signed-off-by: Martin Hundebøll
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli -
To use network coding efficiently, a relay must know when neighbor nodes
are likely to have enough information to be able to decode a network
coded packet. This is detected by using OGMs from batman-adv to discover
when one neighbor is in range of another neighbor. The relay check the
TLL to detect when an OGM is forwarded from one neighbor by another
neighbor, and thereby knows that the two neighbors are in range and thus
overhear packets sent by each other.This information is saved in the orig_node struct to be used when
searching for coding opportunities. Two lists are added to the
orig_node struct: One for neighbors that can hear the orig_node
(outgoing nc_nodes) and one for neighbors that the orig_node can hear
(incoming nc_nodes).Information about nc_nodes is kept for 10 seconds and is available
through debugfs in batman_adv/nc_nodes to use when debugging network
coding.Signed-off-by: Martin Hundebøll
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli -
Network coding exploits the 802.11 shared medium to allow multiple
packets to be sent in a single transmission. In brief, a relay can XOR
two packets, and send the coded packet to two destinations. The
receivers can decode one of the original packets by XOR'ing the coded
packet with the other original packet. This will lead to increased
throughput in topologies where two packets cross one relay.In a simple topology with three nodes, it takes four transmissions
without network coding to get one packet from Node A to Node B and one
from Node B to Node A:1. Node A ---- p1 ---> Node R Node B
2. Node A Node R Node BWith network coding, the relay only needs one transmission, which saves
us one slot of valuable airtime:1. Node A ---- p1 ---> Node R Node B
2. Node A Node R Node BThe same principle holds for a topology including five nodes. Here the
packets from Node A and Node B are overheard by Node C and Node D,
respectively. This allows Node R to send a network coded packet to save
one transmission:Node A Node B
| \ / |
| p1 p2 |
| \ / |
p1 > Node R < p2
| |
| / \ |
| p1 x p2 p1 x p2 |
v / \ v
/ \
Node C < > Node DMore information is available on the open-mesh.org wiki[1].
This patch adds the initial code to support network coding in
batman-adv. It sets up a worker thread to do house keeping and adds a
sysfs file to enable/disable network coding. The feature is disabled by
default, as it requires a wifi-driver with working promiscuous mode, and
also because it adds a small delay at each hop.[1] http://www.open-mesh.org/projects/batman-adv/wiki/Catwoman
Signed-off-by: Martin Hundebøll
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli
19 Jan, 2013
3 commits
-
Signed-off-by: Simon Wunderlich
Signed-off-by: Antonio Quartulli -
Signed-off-by: Antonio Quartulli
Signed-off-by: Marek Lindner -
A delayed_work struct does not need to be initialized each
every time before being enqueued. Therefore the
INIT_DELAYED_WORK() macro should be used during the
initialization process only.Signed-off-by: Antonio Quartulli
Signed-off-by: Marek Lindner
12 Jan, 2013
2 commits
-
The current timeout is set to one hour. However a client connected to the mesh
network will always generate traffic. In the worst case it will send ARP
requests every 4 or 5 minutes. On the other hand having a long timeout means
storing dead entries for one hour and it leads to very big trans-tables
containing useless clients.This patch reduces the timeout to 10 minutes
Signed-off-by: Antonio Quartulli
Signed-off-by: Marek Lindner -
this_cpu_add is an atomic operation.
and be more faster than per_cpu_ptr operation.Signed-off-by: Shan Wei
Reviewed-by: Christoph Lameter
Signed-off-by: Sven Eckelmann
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli
21 Nov, 2012
2 commits
-
Signed-off-by: Sven Eckelmann
Signed-off-by: Antonio Quartulli -
Signed-off-by: Sven Eckelmann
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli
15 Nov, 2012
1 commit
-
For some reasons (bridge forward delay, network device setup order, etc)
the initial bridge loop avoidance announcement packets may be lost. This
may lead to problems in finding other backbone gws, and therfore create
loops in the startup time.Fix this by extending the waiting periods to 3 (define can be changed)
before allowing broadcast traffic.Signed-off-by: Simon Wunderlich
Signed-off-by: Antonio Quartulli
08 Nov, 2012
4 commits
-
In case of an ARP message going in or out the soft_iface, it is intercepted and
a special action is performed. In particular the DHT helper functions previously
implemented are used to store all the ARP entries belonging to the network in
order to provide a fast and unicast lookup instead of the classic broadcast
flooding mechanism.
Each node stores the entries it is responsible for (following the DHT rules) in
its soft_iface ARP table. This makes it possible to reuse the kernel data
structures and functions for ARP management.Signed-off-by: Antonio Quartulli
-
Since batman-adv cannot inter-operate with the host ARP table, this patch
introduces a batman-adv private storage for ARP entries exchanged within DAT.
This storage will represent the node local cache in the DAT protocol.Signed-off-by: Antonio Quartulli
-
Add all the relevant functions in order to manage a Distributed Hash Table over
the B.A.T.M.A.N.-adv network. It will later be used to store several ARP entries
and implement DAT (Distributed ARP Table)Signed-off-by: Antonio Quartulli
-
A new log level has been added to concentrate messages regarding DAT: ARP
snooping, requests, response and DHT related messages.
The new log level is named BATADV_DBG_DATSigned-off-by: Antonio Quartulli
29 Oct, 2012
3 commits
-
Signed-off-by: Antonio Quartulli
-
New operations should not be started when they need an increased module
reference counter and try_module_get failed.This patch addresses Coverity #712284: Unchecked return value
Signed-off-by: Sven Eckelmann
Signed-off-by: Antonio Quartulli -
Signed-off-by: Marek Lindner
Signed-off-by: Antonio Quartulli
23 Aug, 2012
4 commits
-
Signed-off-by: Sven Eckelmann
Signed-off-by: Antonio Quartulli -
With the current TT mechanism a new client joining the network is not
immediately able to communicate with other hosts because its MAC address has not
been announced yet. This situation holds until the first OGM containing its
joining event will be spread over the mesh network.This behaviour can be acceptable in networks where the originator interval is a
small value (e.g. 1sec) but if that value is set to an higher time (e.g. 5secs)
the client could suffer from several malfunctions like DHCP client timeouts,
etc.This patch adds an early detection mechanism that makes nodes in the network
able to recognise "not yet announced clients" by means of the broadcast packets
they emitted on connection (e.g. ARP or DHCP request). The added client will
then be confirmed upon receiving the OGM claiming it or purged if such OGM
is not received within a fixed amount of time.Signed-off-by: Antonio Quartulli
-
Signed-off-by: Sven Eckelmann
Signed-off-by: Antonio Quartulli -
the word millisecond is misspelled in several comments. This patch fixes it.
Signed-off-by: Antonio Quartulli
11 Jul, 2012
1 commit
-
Fix incorrect start markers, wrapped summary lines, missing section
breaks, incorrect separators, and some name mismatches.Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller
02 Jul, 2012
3 commits
-
Signed-off-by: Marek Lindner
Acked-by: Martin Hundebøll
Signed-off-by: Antonio Quartulli -
Reported-by: Martin Hundebøll
Signed-off-by: Sven Eckelmann -
Reported-by: Martin Hundebøll
Signed-off-by: Sven Eckelmann
28 Jun, 2012
2 commits
-
Reported-by: Martin Hundebøll
Signed-off-by: Sven Eckelmann -
Signed-off-by: Sven Eckelmann
25 Jun, 2012
1 commit
-
All non-static symbols of batman-adv were prefixed with batadv_ to avoid
collisions with other symbols of the kernel. Other symbols of batman-adv
should use the same prefix to keep the naming scheme consistent.Signed-off-by: Sven Eckelmann
21 Jun, 2012
3 commits
-
batman-adv doesn't follow the style for multiline comments that David S. Miller
prefers. All comments should be reformatted to follow this consistent style to
make the code slightly more readable.Signed-off-by: Sven Eckelmann
-
batman-adv can be compiled as part of the kernel instead of an module. In that
case the linker will see all non-static symbols of batman-adv and all other
non-static symbols of the kernel. This could lead to symbol collisions. A
prefix for the batman-adv symbols that defines their private namespace avoids
such a problem.Reported-by: David Miller
Signed-off-by: Sven Eckelmann -
batman-adv can be compiled as part of the kernel instead of an module. In that
case the linker will see all non-static symbols of batman-adv and all other
non-static symbols of the kernel. This could lead to symbol collisions. A
prefix for the batman-adv symbols that defines their private namespace avoids
such a problem.Reported-by: David Miller
Signed-off-by: Sven Eckelmann
19 Jun, 2012
2 commits
-
Added additional counters in a bat_stats structure, which are exported
through the ethtool api. The counters are specific to batman-adv and
includes:
forwarded packets and bytes
management packets and bytes (aggregated OGMs at this point)
translation table packetsNew counters are added by extending "enum bat_counters" in types.h and
adding corresponding descriptive string(s) to bat_counters_strings in
soft-iface.c.Counters are increased by calling batadv_add_counter() and incremented
by one by calling batadv_inc_counter().Signed-off-by: Martin Hundebøll
Signed-off-by: Sven Eckelmann -
Signed-off-by: Sven Eckelmann
14 May, 2012
1 commit
-
Signed-off-by: Sven Eckelmann
Signed-off-by: Antonio Quartulli
11 May, 2012
1 commit
-
The packet handler array replaces the growing switch statement, thus
dealing with incoming packets in a more efficient way. It also adds
to possibility to register packet handlers on the fly.Signed-off-by: Marek Lindner
Acked-by: Simon Wunderlich
Signed-off-by: Antonio Quartulli