click and todevice packet lengths

John Bicket jbicket at mit.edu
Mon May 19 17:55:38 EDT 2003


Hi Eddie and everyone,

I've encountered this situation where I get
"ToDevice: too small: len %d tailroom %d\n" (queue_packet()) in dmesg.
This results from the following situation:


proxy <---------------> gw <----------------> client
        ipip tunnel           grid encap


so the gw and proxy have an ipip tunnel (using ipencap and stripipheader).

The problem arises when a client sends a small packet (ie a tcp ack) and the 
proxy ends up with a packet that looks like this:

|eth|iph |iph |data......|

then it strips the outmost iph and sticks another ethernet header on it so it looks
like this:

    |eth|iph |data.......|

but now the packet becomes too small and it doesn't have enough tailroom for ToDevice
to do a skb_put and pad the end.

Any thoughts about fixing this? For a workaround I was just going to write a small
element that would check the length of an ethernet packet and call put if it were too small
(so the expensive_put would get called).


-john









More information about the click mailing list