[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20101013.191702.71129064.davem@davemloft.net>
Date: Wed, 13 Oct 2010 19:17:02 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: alexander.h.duyck@...el.com
Cc: jeffrey.t.kirsher@...el.com, jesse.brandeburg@...el.com,
bruce.w.allan@...el.com, netdev@...r.kernel.org
Subject: Re: ixgbe: normalize frag_list usage
From: Alexander Duyck <alexander.h.duyck@...el.com>
Date: Thu, 07 Oct 2010 12:59:14 -0700
> I can track it in the RSC_CB if that works for you. Right now though
> I guess I am not seeing the difference between tracking this in
> skb->frag_next vs IXGBE_RSC_CB(skb)->frag_head. I think it might help
> if you were to provide some functions that demonstrate exactly what
> you had in mind for frag list handling. Specifically if you were to
> add a function for merging a frag into the frag list, and for how you
> want to approach cleaning up the skb->prev/frag_tail_tracker pointer
> when you are cleaning up an active frag_list.
Basically the one helper function will look like this.
static inline void skb_frag_list_add(struct sk_buff *head,
struct sk_buff *new)
{
if (!skb_shinfo(skb)->frag_list) {
skb_shinfo(skb)->frag_list = new;
skb->frag_list_tail = new;
} else {
skb->frag_list_tail->frag_list_next = new;
skb->frag_list_tail = new;
}
}
If you have to track the head from the tail packets, please do
so in a private control block.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists