]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Several fixes to these drivers. Note that these two drivers are actually
authorjhb <jhb@FreeBSD.org>
Thu, 19 Nov 2009 19:25:47 +0000 (19:25 +0000)
committerjhb <jhb@FreeBSD.org>
Thu, 19 Nov 2009 19:25:47 +0000 (19:25 +0000)
commitfe250fcdf4c9009883dd08122d4d08d2f070dcc8
tree8e7c8dbe27ba288246c747dd803c2e949f1da3cd
parent92fc9b53e8ad2c7ba20dc51ea8c0099d4196560f
Several fixes to these drivers.  Note that these two drivers are actually
just two different attachments (EISA and PCI) to a single driver.
- Add real locking.  Previously these drivers only acquired their lock
  in their interrupt handler or in the ioctl routine (but too broadly in
  the latter).  No locking was used for the stack calling down into the
  driver via if_init() or if_start(), for device shutdown or detach.  Also,
  the interrupt handler held the driver lock while calling if_input().  All
  this stuff should be fixed in the locking changes.
- Really fix these drivers to handle if_alloc().  The front-end attachments
  were using if_initname() before the ifnet was allocated.  Fix this by
  moving some of the duplicated logic from each driver into pdq_ifattach().
  While here, make pdq_ifattach() return an error so that the driver just
  fails to attach if if_alloc() fails rather than panic'ing.  Also, defer
  freeing the ifnet until the driver has stopped using it during detach.
- Add a new private timer to drive the watchdog timer.
- Pass the softc pointer to the interrupt handlers instead of the device_t
  so we can avoid the use of device_get_softc() and to better match what
  other drivers do.
sys/dev/pdq/if_fea.c
sys/dev/pdq/if_fpa.c
sys/dev/pdq/pdq_freebsd.h
sys/dev/pdq/pdq_ifsubr.c