[Click] ToDevice and pkts "too small"

Torquato Bertani torquato at gmail.com
Mon Sep 10 12:54:57 EDT 2007


I tested the patch for some days, seems to work perfectly.
Thanks
Thor

On 8/29/07, Eddie Kohler <kohler at cs.ucla.edu> wrote:
> Torquato,
>
> This is a good point, and a reasonable patch sketch.  I checked in a version;
> let me know if it works for you!
>
> Eddie
>
>
> Torquato Bertani wrote:
> > Hi all,
> > I found a strange thing in ToDevice element. If I use a configuration
> > like this one:
> >
> > FromHost->Classifier(12/806, -)->Queue->ToDevice(eth0); //Send ARP
> > pkts to ethernet
> >
> > Click reports the error: ToDevice: too small: len 42 tailroom 4
> >
> > I know that tailroom is too small to pad the pkt till 60 bytes. In
> > this case why ToDevice doesn't call the function Packet::put()? This
> > function will cal Packet::expensive_put() and then everything should
> > work. I see that ToDevice call tha function skb_put() to pad the pkt
> > till 60 bytes if tailroom is enough, is right or can be improved
> > calling Packet::put() ?
> >
> > I modified the code to use Packet::put() if tailroom isn't enough and
> > it works but I'd like to know if it's correct or not.
> >
> > Thanks
> >
> > Thor
> >
> > todevice.cc:399
> > if (!_no_pad && skb1->len < 60) {
> >         if (skb_tailroom(skb1) < 60 - skb1->len) {
> >             WritablePacket *q = p->put(60 - skb1->len);
> >             p = q;       //Is this correct?
> > //          printk("ToDevice: too small: len %d tailroom %d\n",
> > //                 skb1->len, skb_tailroom(skb1));
> > //          kfree_skb(skb1);
> > //          return -1;
> >         } else {
> >                 skb_put(skb1, 60 - skb1->len);
> >         }
> >     }
> > _______________________________________________
> > click mailing list
> > click at amsterdam.lcs.mit.edu
> > https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>


More information about the click mailing list