162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_cistruct sk_buff 462306a36Sopenharmony_ci============== 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci:c:type:`sk_buff` is the main networking structure representing 762306a36Sopenharmony_cia packet. 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciBasic sk_buff geometry 1062306a36Sopenharmony_ci---------------------- 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci.. kernel-doc:: include/linux/skbuff.h 1362306a36Sopenharmony_ci :doc: Basic sk_buff geometry 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciShared skbs and skb clones 1662306a36Sopenharmony_ci-------------------------- 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci:c:member:`sk_buff.users` is a simple refcount allowing multiple entities 1962306a36Sopenharmony_cito keep a struct sk_buff alive. skbs with a ``sk_buff.users != 1`` are referred 2062306a36Sopenharmony_cito as shared skbs (see skb_shared()). 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciskb_clone() allows for fast duplication of skbs. None of the data buffers 2362306a36Sopenharmony_ciget copied, but caller gets a new metadata struct (struct sk_buff). 2462306a36Sopenharmony_ci&skb_shared_info.refcount indicates the number of skbs pointing at the same 2562306a36Sopenharmony_cipacket data (i.e. clones). 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cidataref and headerless skbs 2862306a36Sopenharmony_ci--------------------------- 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci.. kernel-doc:: include/linux/skbuff.h 3162306a36Sopenharmony_ci :doc: dataref and headerless skbs 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciChecksum information 3462306a36Sopenharmony_ci-------------------- 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci.. kernel-doc:: include/linux/skbuff.h 3762306a36Sopenharmony_ci :doc: skb checksums 38