- int type, dest, s, error;
+ register int unit;
+ register struct vvreg *addr;
+ register struct vv_softc *vs;
+ register int s;
+ int type, dest, error;
+
+ m = m0;
+ unit = ifp->if_unit;
+ addr = (struct vvreg *)vvinfo[unit]->ui_addr;
+ vs = &vv_softc[unit];
+ /*
+ * Check to see if the input side has wedged.
+ *
+ * We are lower than device ipl when we enter this routine,
+ * so if the interface is ready with an input packet then
+ * an input interrupt must have slipped through the cracks.
+ *
+ * Avoid the race with an input interrupt by watching to see
+ * if any packets come in.
+ */
+ s = vs->vs_if.if_ipackets;
+ if (addr->vvicsr & VV_RDY && s == vs->vs_if.if_ipackets) {
+ if (vs->vs_if.if_flags & IFF_DEBUG)
+ printf("vv%d: lost a receive interrupt, icsr = %b\n",
+ unit, 0xffff&(addr->vvicsr), VV_IBITS);
+ s = splimp();
+ vvrint(unit);
+ splx(s);
+ }