and non-const types, and the kernel uses both const and non-const
PMF qualifiers and device suspensors, so change the pmf_qual_t and
device_suspensor_t typedefs from "pointers to const" to non-pointer,
non-const types.
not finished the device_t/softc split for the SBus attachment
because I don't have an SBus gem(4) to test with.
Convert from legacy shutdownhooks to a PMF shutdown hook. Add PMF
suspend/resume handlers.
Factor a detachment hook out of gem_attach(). During device
attachment, track which resources are reserved in sc_attach_state,
and release only those resources during detachment.
Tested on gem0 and gem1 at pci1 on a Sun Fire V120.
documentation, experimentation and a previous patch from John Heasley.
Add improvements to the driver based on the GEM documentation and
from FreeBSD if_gem.c (rev 1.45).
Fix receiver lockups. When writing the RX Kick register, we need back up
on descriptor since we advanced one in the for loop. That will be the
last descriptor we haven't processed which is what we should write.
switch back to MII mode. Keep a sliding window for TX segments and when it
gets > 2/3 full, request a TX interrupt (window gets reset when the h/w TX
queue is empty). Add dv_xname to a few printfs. With the above changes,
the gem driver will now work on Macintoshes, even in GigE mode. On a 733
PowerMac G4 it gets ~355Mb/s TX and ~280Mb/s RX to/from an Alpha XP1000.
XXX mii autoselect is still flakey.