diff options
author | iedowse <iedowse@FreeBSD.org> | 2002-11-07 16:04:07 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2002-11-07 16:04:07 +0000 |
commit | 92eb830a35122db8e11af254e93833c48efdd107 (patch) | |
tree | 28a2b5699d9effc331188af35ac235d9d5108d07 /sys/dev/fxp/if_fxpvar.h | |
parent | ee7affb74a311710c9e312ff814bd4c56acf3469 (diff) | |
download | FreeBSD-src-92eb830a35122db8e11af254e93833c48efdd107.zip FreeBSD-src-92eb830a35122db8e11af254e93833c48efdd107.tar.gz |
Properly fix the occassional random crash issue that revision 1.142
just limited to the DEVICE_POLLING case. This removes the FXP_RFA_RNRMARK
hack, and replaces it with a softc flag that is used to record when
the handling of a no-resource condition was deferred due to running
out of DEVICE_POLLING cycles. This was tested on -stable, but the
code is essentially the same as in -current. It should only affect
the case where DEVICE_POLLING is defined.
The details of the mechanism behind the crashes are still uncertain
but the most likely cause seems to be some kind of hardware confusion
when the no-resource recovery code is accidentally invoked while
the receiver is still active. This could have happened if the
hardware left the 0x4000 bit of the RFA status word set. The comments
in the commit log for revision 1.142 stating that the driver could
clash with the hardware writing to this status word were not correct.
Tested by: Guy Helmer <ghelmer@palisadesys.com>
Diffstat (limited to 'sys/dev/fxp/if_fxpvar.h')
-rw-r--r-- | sys/dev/fxp/if_fxpvar.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/dev/fxp/if_fxpvar.h b/sys/dev/fxp/if_fxpvar.h index d18ca39..1042f1f 100644 --- a/sys/dev/fxp/if_fxpvar.h +++ b/sys/dev/fxp/if_fxpvar.h @@ -157,6 +157,7 @@ struct fxp_softc { #define FXP_FLAG_ALL_MCAST 0x0040 /* accept all multicast frames */ #define FXP_FLAG_CU_RESUME_BUG 0x0080 /* requires workaround for CU_RESUME */ #define FXP_FLAG_UCODE 0x0100 /* ucode is loaded */ +#define FXP_FLAG_DEFERRED_RNR 0x0200 /* DEVICE_POLLING deferred RNR */ /* Macros to ease CSR access. */ #define CSR_READ_1(sc, reg) \ |