summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/fxp/if_fxp.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c
index 006ec52..079ecc1 100644
--- a/sys/dev/fxp/if_fxp.c
+++ b/sys/dev/fxp/if_fxp.c
@@ -1916,6 +1916,8 @@ fxp_intr_body(struct fxp_softc *sc, struct ifnet *ifp, uint8_t statack,
if ((status & FXP_RFA_STATUS_C) == 0)
break;
+ if ((status & FXP_RFA_STATUS_RNR) != 0)
+ rnr++;
/*
* Advance head forward.
*/
@@ -1942,9 +1944,12 @@ fxp_intr_body(struct fxp_softc *sc, struct ifnet *ifp, uint8_t statack,
total_len -= 2;
}
if (total_len < sizeof(struct ether_header) ||
- total_len > MCLBYTES - RFA_ALIGNMENT_FUDGE -
- sc->rfa_size || status & FXP_RFA_STATUS_CRC) {
+ total_len > (MCLBYTES - RFA_ALIGNMENT_FUDGE -
+ sc->rfa_size) ||
+ status & (FXP_RFA_STATUS_CRC |
+ FXP_RFA_STATUS_ALIGN)) {
m_freem(m);
+ fxp_add_rfabuf(sc, rxp);
continue;
}
OpenPOWER on IntegriCloud