Date: Mon, 20 Jul 1998 13:21:52 -0400 (EDT) From: "Larry S. Lile" <lile@stdio.com> To: hackers@FreeBSD.ORG Subject: IF_DEQUEUE problems Message-ID: <Pine.SUN.3.91.980720130034.11204B-100000@heathers.stdio.com>
next in thread | raw e-mail | index | archive | help
What are the conditions neccesary to make IF_DEQUEUE work properly?
In my driver when you want to transmit a packet you have to create
a transmit SRB and interrupt the adapter, it will respond with an
interrupt and a transmit data ARB which you fill out and respond
with another interrupt which generates a status interrupt.
tok_start: tok_intr:
xmit srb ----------------------> ack'd by adapter
tok_tx_intr: <------------------ xmit data arb from adapter
fill out arb -------------------> adapter gives xmit return code
If I call IF_DEQUEUE during tok_start the packet dequeues correctly
and I can pass it to bpf and everyting appears to work correctly,
except that I don't actually set up the transmit srb.
If I move the IF_DEQUEUE and bpf tap to tok_tx_intr then my mbuf
pointer always gets set to null.
I have checked to make sure that ifp is getting pointed to the correct
interface, so is there something magic about ifp->if_start and IF_DEQUEUE,
or have I missed something? I have also made sure that I am not attempting
to dequeue that packet twice, and I have tried to splimp/splx around
IF_DEQUEUE in tok_tx_intr.
Any help?
Larry Lile
lile@stdio.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SUN.3.91.980720130034.11204B-100000>
