Set ONES (must be ones) bits in tmd1 of tx descriptors.
This fix avoids VMware 3.0/WinXP to crash.
This commit is contained in:
parent
b2dc60987f
commit
afdb23ddea
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_pcn.c,v 1.5 2001/11/13 07:48:44 lukem Exp $ */
|
||||
/* $NetBSD: if_pcn.c,v 1.6 2001/11/27 13:49:03 onoe Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2001 Wasabi Systems, Inc.
|
||||
|
@ -65,7 +65,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_pcn.c,v 1.5 2001/11/13 07:48:44 lukem Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: if_pcn.c,v 1.6 2001/11/27 13:49:03 onoe Exp $");
|
||||
|
||||
#include "bpfilter.h"
|
||||
|
||||
|
@ -1000,10 +1000,9 @@ pcn_start(struct ifnet *ifp)
|
|||
sc->sc_txdescs[nexttx].tmd2 =
|
||||
htole32(dmamap->dm_segs[seg].ds_addr);
|
||||
sc->sc_txdescs[nexttx].tmd1 =
|
||||
((nexttx == sc->sc_txnext) ? 0 :
|
||||
htole32(LE_T1_OWN)) |
|
||||
htole32((LE_BCNT(dmamap->dm_segs[
|
||||
seg].ds_len) &
|
||||
htole32(LE_T1_ONES |
|
||||
(nexttx == sc->sc_txnext ? 0 : LE_T1_OWN) |
|
||||
(LE_BCNT(dmamap->dm_segs[seg].ds_len) &
|
||||
LE_T1_BCNT_MASK));
|
||||
lasttx = nexttx;
|
||||
}
|
||||
|
@ -1021,10 +1020,9 @@ pcn_start(struct ifnet *ifp)
|
|||
htole32(dmamap->dm_segs[seg].ds_addr);
|
||||
sc->sc_txdescs[nexttx].tmd2 = 0;
|
||||
sc->sc_txdescs[nexttx].tmd1 =
|
||||
((nexttx == sc->sc_txnext) ? 0 :
|
||||
htole32(LE_T1_OWN)) |
|
||||
htole32((LE_BCNT(dmamap->dm_segs[
|
||||
seg].ds_len) &
|
||||
htole32(LE_T1_ONES |
|
||||
(nexttx == sc->sc_txnext ? 0 : LE_T1_OWN) |
|
||||
(LE_BCNT(dmamap->dm_segs[seg].ds_len) &
|
||||
LE_T1_BCNT_MASK));
|
||||
lasttx = nexttx;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue