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