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