return __be64_to_cpu(n);
 }
 
-static struct sk_buff *
-skb_check(struct sk_buff *skb)
-{
-       if (skb_is_nonlinear(skb))
-       if ((skb = skb_share_check(skb, GFP_ATOMIC)))
-       if (skb_linearize(skb, GFP_ATOMIC) < 0) {
-               dev_kfree_skb(skb);
-               return NULL;
-       }
-       return skb;
-}
-
 void
 aoenet_xmit(struct sk_buff *sl)
 {
        struct aoe_hdr *h;
        u32 n;
 
-       skb = skb_check(skb);
-       if (!skb)
+       skb = skb_share_check(skb, GFP_ATOMIC);
+       if (skb == NULL)
                return 0;
-
+       if (skb_is_nonlinear(skb))
+       if (skb_linearize(skb, GFP_ATOMIC) < 0)
+               goto exit;
        if (!is_aoe_netif(ifp))
                goto exit;
-
-       //skb->len += ETH_HLEN; /* (1) */
        skb_push(skb, ETH_HLEN);        /* (1) */
 
        h = (struct aoe_hdr *) skb->mac.raw;