The invention proposes a network device driver architecture with
functionality distributed between kernel space and user space. The
overall network device driver comprises a kernel-space device driver (10)
and user-space device driver functionality (20). The kernel-space device
driver (10) is adapted for enabling access to the user -space device
driver functionality (20) via a kernel-space-user-space interface (15).
The user-space device driver functionality (20) is adapted for enabling
direct access between user space and the NIC (30) via a user-space-NIC
interface (25), and also adapted for interconnecting the
kernel-space-user-space interface (15) and the user-space-NIC interface
(25) to provide integrated kernel -space access and user-space access to
the NIC (30). The user-space device driver functionality (20) provides
direct, zero-copy user-space access to the NIC, whereas information to be
transferred between kernel space and the NIC will be "tunneled" through
user space by combined use of the kernel-space device driver (10), the
user-space device driver functionality (20) and the two associated
interfaces (15,25).