#ifndef _NET_GSO_H
#define _NET_GSO_H
#include <linux/skbuff.h>
struct skb_gso_cb { … };
#define SKB_GSO_CB_OFFSET …
#define SKB_GSO_CB(skb) …
static inline int skb_tnl_header_len(const struct sk_buff *inner_skb)
{ … }
static inline int gso_pskb_expand_head(struct sk_buff *skb, int extra)
{ … }
static inline void gso_reset_checksum(struct sk_buff *skb, __wsum res)
{ … }
static inline __sum16 gso_make_checksum(struct sk_buff *skb, __wsum res)
{ … }
struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
netdev_features_t features, bool tx_path);
static inline struct sk_buff *skb_gso_segment(struct sk_buff *skb,
netdev_features_t features)
{ … }
struct sk_buff *skb_eth_gso_segment(struct sk_buff *skb,
netdev_features_t features, __be16 type);
struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
netdev_features_t features);
bool skb_gso_validate_network_len(const struct sk_buff *skb, unsigned int mtu);
bool skb_gso_validate_mac_len(const struct sk_buff *skb, unsigned int len);
static inline void skb_gso_error_unwind(struct sk_buff *skb, __be16 protocol,
int pulled_hlen, u16 mac_offset,
int mac_len)
{ … }
#endif