GRRRR! Apparently, the promiscuous mode chip bug which I thought was

isolated to revision 33 PNIC chips is also present in revision 32 chips.
Cards with rev. 32 chips include the LinkSys LNE100TX and the Matrox
FastNIC 10/100. This accounts for all the cards that I have to test
with.

(I was never able to personally trip the bug on this chip rev, but today
one of the guys in the lab did it with the software they're working on
for their cellular IP project, which uses BPF and promiscuous mode
extensively.)

This commit enables the promiscuous mode software workaround code for
both revison 32 and revision 33 chips. It's possible all of the PNIC
chips suffer from this bug, but these are the only two revs where I
know for a fact it exists.
This commit is contained in:
Bill Paul 1999-01-05 00:59:08 +00:00
parent 4ddb8ecc9e
commit 6985d23298
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=42296
2 changed files with 5 additions and 4 deletions

View file

@ -29,7 +29,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: if_pn.c,v 1.35 1998/12/31 16:51:01 wpaul Exp $
* $Id: if_pn.c,v 1.36 1999/01/05 00:47:25 wpaul Exp $
*/
/*
@ -97,7 +97,7 @@
#ifndef lint
static const char rcsid[] =
"$Id: if_pn.c,v 1.35 1998/12/31 16:51:01 wpaul Exp $";
"$Id: if_pn.c,v 1.36 1999/01/05 00:47:25 wpaul Exp $";
#endif
/*
@ -913,7 +913,7 @@ pn_attach(config_id, unit)
#ifdef PN_PROMISC_BUG_WAR
revision = pci_conf_read(config_id, PN_PCI_REVISION) & 0x000000FF;
if (revision == PN_169B_REV) {
if (revision == PN_169B_REV || revision == PN_169_REV) {
sc->pn_promisc_war = 1;
sc->pn_promisc_buf = malloc(PN_RXLEN * 5, M_DEVBUF, M_NOWAIT);
if (sc->pn_promisc_buf == NULL) {

View file

@ -29,7 +29,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: if_pnreg.h,v 1.15 1998/12/31 16:51:01 wpaul Exp $
* $Id: if_pnreg.h,v 1.16 1999/01/05 00:47:25 wpaul Exp $
*/
/*
@ -442,6 +442,7 @@ struct pn_softc {
u_int8_t pn_autoneg;
caddr_t pn_ldata_ptr;
#ifdef PN_PROMISC_BUG_WAR
#define PN_169_REV 32
#define PN_169B_REV 33
u_int8_t pn_promisc_war;
struct pn_chain_onefrag *pn_promisc_bug_save;