for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
 
                print_hex_dump(KERN_DEBUG, "TX: ", DUMP_PREFIX_OFFSET, 16, 1,
-                              phys_to_virt(page_to_phys(skb_shinfo(skb)->frags[i].page)) +
-                              skb_shinfo(skb)->frags[i].page_offset,
-                              length, true);
+                              skb_frag_address(&skb_shinfo(skb)->frags[i]),
+                              skb_shinfo(skb)->frags[i].size, true);
        }
 }
 
 
                greth_write_bd(&bdp->stat, status);
 
-               dma_addr = dma_map_page(greth->dev,
-                                       frag->page,
-                                       frag->page_offset,
-                                       frag->size,
-                                       DMA_TO_DEVICE);
+               dma_addr = skb_frag_dma_map(greth->dev, frag, 0, frag->size,
+                                           DMA_TO_DEVICE);
 
                if (unlikely(dma_mapping_error(greth->dev, dma_addr)))
                        goto frag_map_error;