• E
    net: avoid two atomic operations in fast clones · 6ffe75eb
    Eric Dumazet 提交于
    Commit ce1a4ea3 ("net: avoid one atomic operation in skb_clone()")
    took the wrong way to save one atomic operation.
    
    It is actually possible to avoid two atomic operations, if we
    do not change skb->fclone values, and only rely on clone_ref
    content to signal if the clone is available or not.
    
    skb_clone() can simply use the fast clone if clone_ref is 1.
    
    kfree_skbmem() can avoid the atomic_dec_and_test() if clone_ref is 1.
    
    Note that because we usually free the clone before the original skb,
    this particular attempt is only done for the original skb to have better
    branch prediction.
    
    SKB_FCLONE_FREE is removed.
    Signed-off-by: NEric Dumazet <edumazet@google.com>
    Cc: Chris Mason <clm@fb.com>
    Cc: Sabrina Dubroca <sd@queasysnail.net>
    Cc: Vijay Subramanian <subramanian.vijay@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    6ffe75eb
skbuff.h 95.5 KB