Skip site navigation (1)Skip section navigation (2)
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>