[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20140825.153146.2165451041039058085.davem@davemloft.net>
Date: Mon, 25 Aug 2014 15:31:46 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: cwang@...pensource.com
Cc: netdev@...r.kernel.org, therbert@...gle.com, jhs@...atatu.com,
hannes@...essinduktion.org, edumazet@...gle.com,
jeffrey.t.kirsher@...el.com, rusty@...tcorp.com.au
Subject: Re: [PATCH 0/3] Basic deferred TX queue flushing infrastructure.
From: Cong Wang <cwang@...pensource.com>
Date: Mon, 25 Aug 2014 15:21:00 -0700
> When I tried to unify the list management of SKB's, I was surprised to see
> there are still some places relying on skb->next and skb->prev to be
> the head of the skb struct, since nowadays we have list API's, they still
> play some magic on these pointers (sctp and tipc IIRC). This is why I
> gave up, maybe it's time to revise this again.
I think SCTP should be OK, and yes I do remember that protocol being one of
the last subsystems making such SKB list pointer assumptions.
It was using list_*() operations on sk_buff objects or something like that.
> Talking about skb->next, fortunately we do gso segmentation after
> going out of qdisc queues, otherwise it's scary to play with these
> pointers at same time. I think all queues of SKB's are either using
> just ->next or both ->prev and ->next.
It occurs to me that perhaps the thing to do is to pass sk_buff ** to
dev_hard_start_xmit().
If it really is important to free the original GSO skb after the
segmented parts, we can run that as part of the destructor of the
final segment.
--
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