|
@@ -2695,6 +2695,8 @@ static inline bool skb_needs_check(struct sk_buff *skb, bool tx_path)
|
|
|
*
|
|
|
* It may return NULL if the skb requires no segmentation. This is
|
|
|
* only possible when GSO is used for verifying header integrity.
|
|
|
+ *
|
|
|
+ * Segmentation preserves SKB_SGO_CB_OFFSET bytes of previous skb cb.
|
|
|
*/
|
|
|
struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
|
|
|
netdev_features_t features, bool tx_path)
|
|
@@ -2709,6 +2711,9 @@ struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
|
|
|
return ERR_PTR(err);
|
|
|
}
|
|
|
|
|
|
+ BUILD_BUG_ON(SKB_SGO_CB_OFFSET +
|
|
|
+ sizeof(*SKB_GSO_CB(skb)) > sizeof(skb->cb));
|
|
|
+
|
|
|
SKB_GSO_CB(skb)->mac_offset = skb_headroom(skb);
|
|
|
SKB_GSO_CB(skb)->encap_level = 0;
|
|
|
|