[NETPOLL]: allow multiple netpoll_clients to register against one interface
authorJeff Moyer <jmoyer@redhat.com>
Thu, 23 Jun 2005 05:05:59 +0000 (22:05 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Jun 2005 05:05:59 +0000 (22:05 -0700)
commitfbeec2e1552949002065435c9829dc244ad85407
treed97dc663bbef4bf59a1858b23a327f14043c33d1
parent115c1d6e61b70851d9a363328c3b8d4c2559a1d3
[NETPOLL]: allow multiple netpoll_clients to register against one interface

This patch provides support for registering multiple netpoll clients to the
same network device.  Only one of these clients may register an rx_hook,
however.  In practice, this restriction has not been problematic.  It is
worth mentioning, though, that the current design can be easily extended to
allow for the registration of multiple rx_hooks.

The basic idea of the patch is that the rx_np pointer in the netpoll_info
structure points to the struct netpoll that has rx_hook filled in.  Aside
from this one case, there is no need for a pointer from the struct
net_device to an individual struct netpoll.

A lock is introduced to protect the setting and clearing of the np_rx
pointer.  The pointer will only be cleared upon netpoll client module
removal, and the lock should be uncontested.

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netpoll.h
net/core/netpoll.c