Since fwip_unicast_input_recycle() is called from interrupt context, one

can't sleep there.
This commit is contained in:
kiyohara 2005-07-23 16:55:13 +00:00
parent 20b1effdae
commit 262bf10a6d
2 changed files with 7 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: fw_port.h,v 1.2 2005/07/20 15:11:57 drochner Exp $ */
/* $NetBSD: fw_port.h,v 1.3 2005/07/23 16:55:13 kiyohara Exp $ */
/*
* Copyright (c) 2004 KIYOHARA Takashi
* All rights reserved.
@ -1122,7 +1122,8 @@ m_getcl(int how, short type, int flags)
struct mbuf *m;
m = m_gethdr(how, type);
m_clget(m, how);
if (m != NULL)
m_clget(m, how);
return (m);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_fwip.c,v 1.1 2005/07/11 15:29:05 kiyohara Exp $ */
/* $NetBSD: if_fwip.c,v 1.2 2005/07/23 16:55:13 kiyohara Exp $ */
/*-
* Copyright (c) 2004
* Doug Rabson
@ -955,7 +955,9 @@ fwip_unicast_input_recycle(struct fwip_softc *fwip, struct fw_xfer *xfer)
* We have finished with a unicast xfer. Allocate a new
* cluster and stick it on the back of the input queue.
*/
m = m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR);
m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
if (m == NULL)
printf("fwip_unicast_input_recycle: m_getcl failed\n");
xfer->mbuf = m;
xfer->recv.payload = mtod(m, uint32_t *);
xfer->recv.pay_len = MCLBYTES;