c
for (skb = segs; skb; skb = skb->next) {
    skb->protocol = htons(ETH_P_NSH);
    if (skb_headroom(skb) < nsh_len) {
        if (pskb_expand_head(skb, nsh_len - skb_headroom(skb), 0, GFP_ATOMIC) < 0) {
            dev_kfree_skb_chain(skb);
            segs = ERR_PTR(-ENOMEM);
            break;
        }
    }
    __skb_push(skb, nsh_len); 
}
