2 years agoAdapt to reworked netdev teardown and release
Adrian-Ken Rueegsegger [Thu, 16 Nov 2017 10:22:25 +0000 (11:22 +0100)]
Adapt to reworked netdev teardown and release

Upstream commit cf124d... changed the way netdev state is freed upon

2 years agoImplement ethernet device support
Adrian-Ken Rueegsegger [Tue, 28 Feb 2017 22:38:11 +0000 (23:38 +0100)]
Implement ethernet device support

The new module flag 'eth_dev' can be used to specify that the device
implements an ethernet device. This allows users to operate on layer 2
ethernet frames and gives them full control over the ethernet header.

The length of the ethernet packet including the 12-byte header is
appended to the data to enable readers to quickly determine the data
size. Note that the information is not prepended to simplify header
processing by the Linux kernel. The ARP code expects the device to have
a hard_header_length equal to ETH_HLEN.

2 years agoFix checkpatch warnings
Adrian-Ken Rueegsegger [Mon, 29 May 2017 15:36:38 +0000 (17:36 +0200)]
Fix checkpatch warnings

2 years agoRemove NETDEV_TX_LOCKED
Adrian-Ken Rueegsegger [Mon, 6 Mar 2017 15:19:53 +0000 (16:19 +0100)]

The TX_LOCKED return value was removed in upstream commit a6086a8...

4 years agoImplement support for Path MTU Discovery
Stefan Berghofer [Fri, 5 Jun 2015 13:54:32 +0000 (15:54 +0200)]
Implement support for Path MTU Discovery

The module's pmtu parameter allows the specification of input channels
from which discovered Path MTU values are read. If an outgoing packet
exceeds the associated PMTU value, an ICMP Fragmentation Needed (Type 3,
Code 4) message containing the current PMTU value is sent back to update
the path. In case of IPv6, an ICMPv6 Packet Too Big (Type 2) message is

In order for this to work, the outgoing packets must be marked by
Netfilter's nfmark functionality. The configured mark specifies the
index into the PMTU array.

4 years agoreader: Call schedule() between successful reads
Reto Buerki [Fri, 22 May 2015 13:07:23 +0000 (15:07 +0200)]
reader: Call schedule() between successful reads

Allow the kernel to schedule different threads more often. Without this
explicit schedule() call, other networking subsystems might be unable to
handle the workload injected by the reader work function (i.e. the UDP
receive queue drops packets when it is full).

4 years agoreader: Simplify IP handling in work function
Reto Buerki [Fri, 22 May 2015 12:34:57 +0000 (14:34 +0200)]
reader: Simplify IP handling in work function

4 years agoreader: Use switch statement in work function
Reto Buerki [Fri, 22 May 2015 12:04:11 +0000 (14:04 +0200)]
reader: Use switch statement in work function

4 years agoSwitch reader implementation to work queues
Reto Buerki [Wed, 20 May 2015 07:56:33 +0000 (09:56 +0200)]
Switch reader implementation to work queues

Instead of creating an explicit kernel thread, use kernel-global work
queue to schedule reader work. This is in preparation of switching the
driver from polling to interrupt mode.

4 years agoInitial import of the muennet Linux kernel module
Reto Buerki [Thu, 9 Apr 2015 08:44:28 +0000 (10:44 +0200)]
Initial import of the muennet Linux kernel module

The muennet Linux kernel module implements a virtual network interface
driver which sends and receives data via shared memory channels provided
by the Muen Separation Kernel [1]. See the file for more

[1] -