muen/linux/muennet.git
3 years agoUse ISA_IRQ_VECTOR macro instead of IRQ0_VECTOR irq
Reto Buerki [Thu, 30 Jun 2016 12:45:29 +0000 (14:45 +0200)]
Use ISA_IRQ_VECTOR macro instead of IRQ0_VECTOR

4 years agoreader: Minor cleanups in work function
Reto Buerki [Fri, 22 May 2015 13:57:34 +0000 (15:57 +0200)]
reader: Minor cleanups in work function

4 years agodebugfs: Export writer event and reader IRQ numbers
Reto Buerki [Thu, 21 May 2015 14:01:07 +0000 (16:01 +0200)]
debugfs: Export writer event and reader IRQ numbers

4 years agoDrop obsolete poll_interval code
Reto Buerki [Thu, 21 May 2015 13:56:39 +0000 (15:56 +0200)]
Drop obsolete poll_interval code

4 years agoreader: Free IRQ in cleanup_reader
Reto Buerki [Thu, 21 May 2015 13:37:35 +0000 (15:37 +0200)]
reader: Free IRQ in cleanup_reader

4 years agowriter: Trigger hypercall on new data
Reto Buerki [Thu, 21 May 2015 13:08:19 +0000 (15:08 +0200)]
writer: Trigger hypercall on new data

Use the kvm_hypercall0 function to trigger a hypercall with associated
output channel event number if new data is available.

4 years agoreader: Request IRQ
Reto Buerki [Thu, 21 May 2015 13:02:03 +0000 (15:02 +0200)]
reader: Request IRQ

Call the request_irq function in initialize_reader to associate the
muennet_intr_rx function with the input channel IRQ number.

4 years agoreader: Add interrupt handler function
Reto Buerki [Thu, 21 May 2015 12:59:51 +0000 (14:59 +0200)]
reader: Add interrupt handler function

The muennet_intr_rx function immediately returns after scheduling the
reader work bottom halve.

4 years agoDo not explicitly schedule reader bottom halve
Reto Buerki [Thu, 21 May 2015 13:06:21 +0000 (15:06 +0200)]
Do not explicitly schedule reader bottom halve

The reader work bottom halve will be scheduled if the assigned input
channel IRQ occurs.

4 years agowriter: Check for assigned channel event on init
Reto Buerki [Thu, 21 May 2015 12:49:36 +0000 (14:49 +0200)]
writer: Check for assigned channel event on init

The event number will be used to inform our peer that new data is
available.

4 years agoreader: Check for assigned channel vector on init
Reto Buerki [Thu, 21 May 2015 11:31:26 +0000 (13:31 +0200)]
reader: Check for assigned channel vector on init

The vector will be used to request an IRQ via request_irq().

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
used.

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 README.md file for more
information.

[1] - http://muen.sk