[ovs-dev] [rfc 2/6] ovs-datapath: Open vSwitch Datapath
Stephen Hemminger
shemminger at vyatta.com
Wed Aug 25 04:53:54 UTC 2010
On Wed, 25 Aug 2010 13:08:03 +0900
Simon Horman <horms at verge.net.au> wrote:
> +static struct sk_buff *make_writable(struct sk_buff *skb, unsigned min_headroom, gfp_t gfp)
> +{
> + if (skb_cloned(skb)) {
> + struct sk_buff *nskb;
> + unsigned headroom = max(min_headroom, skb_headroom(skb));
> +
> + nskb = skb_copy_expand(skb, headroom, skb_tailroom(skb), gfp);
> + if (nskb) {
> + set_skb_csum_bits(skb, nskb);
> + kfree_skb(skb);
> + return nskb;
> + }
> + } else {
> + unsigned int hdr_len = (skb_transport_offset(skb)
> + + sizeof(struct tcphdr));
> + if (pskb_may_pull(skb, min(hdr_len, skb->len)))
> + return skb;
> + }
> + kfree_skb(skb);
> + return NULL;
> +}
1. Isn't the same as skb_cow_data()
2. If not why not make it generic
3. Do you need the gfp argument? Most of the skb rework routines just
use GPF_ATOMIC
--
More information about the dev
mailing list