netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* ip_finish_outpu2 question
@ 2008-05-14  3:42 Prashanth
  2008-05-14  4:34 ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Prashanth @ 2008-05-14  3:42 UTC (permalink / raw)
  To: netdev

hi, In the following function at line 189 , we are getting aligned
length (hh_alen) for the hardware header , but while doing a
skb_push() why are we using the hh->hh_len;for ethernet hh_alen would
be 16 , and hh->hh_len would be 14, since we are doing skb_push() with
14 (i.e hh->hh_len), the skb->data will not be aligned right? Can
someone please shed some light on this. thanks.

    163 static inline int ip_finish_output2(struct sk_buff *skb)
    164 {
    165     struct dst_entry *dst = skb->dst;
    166     struct hh_cache *hh = dst->hh;
    167     struct net_device *dev = dst->dev;
    168     int hh_len = LL_RESERVED_SPACE(dev);
    169
    170     /* Be paranoid, rather than too clever. */
    171     if (unlikely(skb_headroom(skb) < hh_len && dev->hard_header)) {
    172         struct sk_buff *skb2;
    173
    174         skb2 = skb_realloc_headroom(skb, LL_RESERVED_SPACE(dev));
    175         if (skb2 == NULL) {
    176             kfree_skb(skb);
    177             return -ENOMEM;
    178         }
    179         if (skb->sk)
    180             skb_set_owner_w(skb2, skb->sk);
    181         kfree_skb(skb);
    182         skb = skb2;
    183     }
    184
    185     if (hh) {
    186         int hh_alen;
    187
    188         read_lock_bh(&hh->hh_lock);
    189         hh_alen = HH_DATA_ALIGN(hh->hh_len);
    190         memcpy(skb->data - hh_alen, hh->hh_data, hh_alen);
    191         read_unlock_bh(&hh->hh_lock);
    192         skb_push(skb, hh->hh_len);
    193         return hh->hh_output(skb);
    194     } else if (dst->neighbour)
    195         return dst->neighbour->output(skb);
    196
    197     if (net_ratelimit())
    198         printk(KERN_DEBUG "ip_finish_output2: No header cache
and no neighbour!\n");
    199     kfree_skb(skb);
    200     return -EINVAL;
    201 }

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-05-14 10:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-14  3:42 ip_finish_outpu2 question Prashanth
2008-05-14  4:34 ` David Miller
2008-05-14  5:23   ` Prashanth
2008-05-14  5:46     ` David Miller
2008-05-14  8:47   ` kalash nainwal
2008-05-14 10:03     ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).