Hi all!

A question, is it ok to just say pass an entire rx buffer of your
ethernet device up the chain and let the ip stack figure out the frame
size.

I have a device that can only ever receive 255 bytes of data, I receive
this data from a buffer in the PRS. On an interrupt I read this data out
of the PRS buffer into a local buffer, which I then :-

----
        eh = mtod(m, struct ether_header *);

        // Copy buf into mbuf
        bcopy(buf + 1, (char *)eh, FIFO_SIZE - 1);

        // Set the header length 
        m->m_pkthdr.len = m->m_len = FIFO_SIZE - 1;

        JNET_UNLOCK(sc);
        (*ifp->if_input)(ifp, m);
        JNET_LOCK(sc);
----

FIFO_SIZE = 256, minus 1 for a control character in the device (which
handily keeps under the 256 frame size).

The interface is working just fine, but I'm not sure if I'm completely
correct in the way I'm doing this.

I've tried casting the buffer to struct ip* to get ip->ip_len but I
always get a "dereferencing pointer to incomplete type" error (don't
exactly know why).

Any help would be greatly appreciated.

Thanks,
Alan.


_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to