aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/fxp
diff options
context:
space:
mode:
authorWes Peters <wes@FreeBSD.org>2005-06-10 23:54:52 +0000
committerWes Peters <wes@FreeBSD.org>2005-06-10 23:54:52 +0000
commit1026fbd360db933593886c5c4fbb5b58ffa84a96 (patch)
tree10345abfd6e6ff22953c36bea78809c7d3f6892b /sys/dev/fxp
parente7acea8202e4b12992d297f70e519b8fd4f16491 (diff)
Notes
Diffstat (limited to 'sys/dev/fxp')
-rw-r--r--sys/dev/fxp/if_fxp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c
index 5f8d68600028..4fd50f93ac47 100644
--- a/sys/dev/fxp/if_fxp.c
+++ b/sys/dev/fxp/if_fxp.c
@@ -1576,6 +1576,7 @@ fxp_intr_body(struct fxp_softc *sc, struct ifnet *ifp, uint8_t statack,
struct fxp_rx *rxp;
struct fxp_rfa *rfa;
int rnr = (statack & FXP_SCB_STATACK_RNR) ? 1 : 0;
+ int fxp_rc = 0;
FXP_LOCK_ASSERT(sc, MA_OWNED);
if (rnr)
@@ -1666,7 +1667,8 @@ fxp_intr_body(struct fxp_softc *sc, struct ifnet *ifp, uint8_t statack,
* If this fails, the old buffer is recycled
* instead.
*/
- if (fxp_add_rfabuf(sc, rxp) == 0) {
+ fxp_rc = fxp_add_rfabuf(sc, rxp);
+ if (fxp_rc == 0) {
int total_len;
/*
@@ -1718,6 +1720,9 @@ fxp_intr_body(struct fxp_softc *sc, struct ifnet *ifp, uint8_t statack,
FXP_UNLOCK(sc);
(*ifp->if_input)(ifp, m);
FXP_LOCK(sc);
+ } else if (fxp_rc == ENOBUFS) {
+ rnr = 0;
+ break;
}
}
if (rnr) {