summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authoronoe <onoe@NetBSD.org>2001-06-29 14:46:54 +0000
committeronoe <onoe@NetBSD.org>2001-06-29 14:46:54 +0000
commit8601a37f8c174a5b3bbce751fa8253b51c3d3ba5 (patch)
tree5f64f5fdf9ae1fdd6c331991c73d277e6f24ccc4 /sys/dev
parent5cf8e98cb5fbca77dc3c919d564170239c2f6a6d (diff)
Protect to call fw_start() recursively.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ieee1394/if_fw.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/ieee1394/if_fw.c b/sys/dev/ieee1394/if_fw.c
index 4a835c9783d..f4e35a31354 100644
--- a/sys/dev/ieee1394/if_fw.c
+++ b/sys/dev/ieee1394/if_fw.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_fw.c,v 1.8 2001/05/11 06:00:17 jmc Exp $ */
+/* $NetBSD: if_fw.c,v 1.9 2001/06/29 14:46:54 onoe Exp $ */
/* XXX ALTQ XXX */
@@ -253,8 +253,10 @@ fw_start(struct ifnet *ifp)
(sc->sc_sc1394.sc1394_dev.dv_parent, m0, fw_txint);
if (error)
break;
- ifp->if_flags |= IFF_OACTIVE;
}
+ IFQ_POLL(&ifp->if_snd, m0);
+ if (m0 != NULL)
+ ifp->if_flags |= IFF_OACTIVE;
}
void
@@ -264,8 +266,10 @@ fw_txint(struct device *self, struct mbuf *m0)
struct ifnet *ifp = &sc->sc_ic.ic_if;
m_freem(m0);
- ifp->if_flags &= ~IFF_OACTIVE;
- fw_start(ifp);
+ if (ifp->if_flags & IFF_OACTIVE) {
+ ifp->if_flags &= ~IFF_OACTIVE;
+ fw_start(ifp);
+ }
}
int