All, I've converted hme to the common MII framework (and hence to Brussels). This fixes at least one bug (it didn't work at forced 10 Mbps!), and cleans up a *a lot* of code. hme shrinks by about 2200 lines.
The webrev is here: http://cr.opensolaris.org/~gdamore/hme-mii I'd like to hear from folks who can review, or help test it. Other minor changes in the code: the never-give-up mode is disabled now, since that could potentially result in a deadlock. By disabling that mode (and allowing the MAC to drop packets), we simply the code. As a result, I also felt good about deleting the tx watchdog timer, which was tied together with the link check timer. (I don't think anyone has seen this kind of TX hang in a very long time -- note that it would have taken 90 seconds to detect the hang, which is far too long for a production device anyway. If someone decides we need it, I'll add a tx watchdog timer with ddi_periodic, but at the moment I don't think they are needed. Also, we don't use mif polling. The common MII layer polls about once a second, and that is plenty fast enough for detecting a loss of link. This also simplifies some code. The pace_count tunable was not used, so I've removed it. I cleaned up some unused messages as well. I've tested all link modes using a Dell PowerConnect 24 switch with a PCI QFE card (Lucent LU6612 phys). It all seems to work well now. I'm hoping I can get this into the next build. Thanks! -- Garrett
