summaryrefslogtreecommitdiffstats
path: root/sys/dev/fxp/if_fxpvar.h
diff options
context:
space:
mode:
authoriedowse <iedowse@FreeBSD.org>2002-11-07 16:04:07 +0000
committeriedowse <iedowse@FreeBSD.org>2002-11-07 16:04:07 +0000
commit92eb830a35122db8e11af254e93833c48efdd107 (patch)
tree28a2b5699d9effc331188af35ac235d9d5108d07 /sys/dev/fxp/if_fxpvar.h
parentee7affb74a311710c9e312ff814bd4c56acf3469 (diff)
downloadFreeBSD-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.h1
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) \
OpenPOWER on IntegriCloud