/* Copy data in the first descriptor of this completion */
        curr_frag_len = min(rxcp->pkt_size, rx_frag_size);
 
-       /* Copy the header portion into skb_data */
-       hdr_len = min(BE_HDR_LEN, curr_frag_len);
-       memcpy(skb->data, start, hdr_len);
        skb->len = curr_frag_len;
        if (curr_frag_len <= BE_HDR_LEN) { /* tiny packet */
+               memcpy(skb->data, start, curr_frag_len);
                /* Complete packet has now been moved to data */
                put_page(page_info->page);
                skb->data_len = 0;
                skb->tail += curr_frag_len;
        } else {
+               hdr_len = ETH_HLEN;
+               memcpy(skb->data, start, hdr_len);
                skb_shinfo(skb)->nr_frags = 1;
                skb_frag_set_page(skb, 0, page_info->page);
                skb_shinfo(skb)->frags[0].page_offset =