Subject: PR/29126 CVS commit: [netbsd-3] src/sys/dev/pci
To: None <kim@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,>
From: Matthias Scheler <tron@netbsd.org>
List: netbsd-bugs
Date: 04/21/2006 12:05:03
The following reply was made to PR kern/29126; it has been noted by GNATS.

From: Matthias Scheler <tron@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: PR/29126 CVS commit: [netbsd-3] src/sys/dev/pci
Date: Fri, 21 Apr 2006 12:03:38 +0000 (UTC)

 Module Name:	src
 Committed By:	tron
 Date:		Fri Apr 21 12:03:38 UTC 2006
 
 Modified Files:
 	src/sys/dev/pci [netbsd-3]: if_sip.c
 
 Log Message:
 Pull up following revision(s) (requested by pavel in ticket #1280):
 	sys/dev/pci/if_sip.c: revision 1.106
 In rev. 1.98, the ioctl method of the (g)sip drivers was optimized for
 SIOCSIFFLAGS: it compares the new flags with the old flags and avoids
 reset if there are only certain changes. This was done to fix PR 29126.
 It does not take into account, though, that there is other state which
 can change and SIOCSIFFLAGS is called to inform about it.  Namely,
 if_capenable, ec_capenable and ec_nvlans. For all three, the _init
 method must program the hardware specially. Not doing it resulted in:
 - VLAN frames getting truncated
 - hw checksumming not working
 - outgoing VLAN frames not being tagged when they should
 - incoming VLAN frames being treated as untagged.
 Fix by keeping all the old state in the softc and initializing the
 hardware if any of it changes.
 Tested on gsip. Also tested by Nino Dehne and Martin J. Laubach
 on sip, thanks.
 Fixes PRs 32900 and 33216.
 Approved by martin@ .
 
 
 To generate a diff of this commit:
 cvs rdiff -r1.101.2.2 -r1.101.2.3 src/sys/dev/pci/if_sip.c
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.