]> Zhao Yanbai Git Server - minix.git/commit
lance: perform full reinitialization for restarts 77/3477/2
authorDavid van Moolenbroek <david@minix3.org>
Sun, 26 Feb 2017 16:04:50 +0000 (16:04 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Sun, 30 Apr 2017 13:15:50 +0000 (13:15 +0000)
commit47db417b1ac31c7a759a805a3e4be97a546ffa75
tree1859ea62e5830df50ef5f8992a515e163f0ed0e6
parentf7df02e7476731c31f12548e38bcadbaf0233f6a
lance: perform full reinitialization for restarts

When performing a restart (CSR0 STOP, STRT), the behavior regarding
the NIC's current RX/TX descriptor ring counters varies between cards:
older LANCE cards do not reset the counters; newer PCnet cards do
reset them; VirtualBox's emulation is once again broken in that it
claims to emulate newer cards but implements the older behavior.

Changing the card's receive mode requires such a restart, and now that
the system can actually change receive modes dynamically as part of
normal network operation, this results in the lance driver breaking
all the time on at least VirtualBox.

Instead of trying to figure out exactly what is going on with the
counters during a restart, we now simply perform a full-blown
reinitialization every time the NIC is restarted.  That leaves no
ambiguity regarding the counters, and appears to be what drivers on
other OSes do as well.  As a bonus, this approach actually saves code.

Change-Id: I60fad2df6de4616d5de2cec39c09b60c15d854fb
minix/drivers/net/lance/lance.c