diff options
| author | onoe <onoe@NetBSD.org> | 2001-06-29 14:46:54 +0000 |
|---|---|---|
| committer | onoe <onoe@NetBSD.org> | 2001-06-29 14:46:54 +0000 |
| commit | 8601a37f8c174a5b3bbce751fa8253b51c3d3ba5 (patch) | |
| tree | 5f64f5fdf9ae1fdd6c331991c73d277e6f24ccc4 /sys/dev | |
| parent | 5cf8e98cb5fbca77dc3c919d564170239c2f6a6d (diff) | |
Protect to call fw_start() recursively.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ieee1394/if_fw.c | 12 |
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 |
