for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
                struct skb_frag_struct *frag =
                        &skb_shinfo(skb)->frags[i];
-               busaddr = dma_map_page(dev, frag->page, frag->page_offset,
-                                      frag->size, DMA_TO_DEVICE);
+               busaddr = skb_frag_dma_map(dev, frag, 0,
+                                          frag->size, DMA_TO_DEVICE);
                if (dma_mapping_error(dev, busaddr))
                        goto dma_err;
                wrb = queue_head_node(txq);
                skb->tail += curr_frag_len;
        } else {
                skb_shinfo(skb)->nr_frags = 1;
-               skb_shinfo(skb)->frags[0].page = page_info->page;
+               skb_frag_set_page(skb, 0, page_info->page);
                skb_shinfo(skb)->frags[0].page_offset =
                                        page_info->page_offset + hdr_len;
                skb_shinfo(skb)->frags[0].size = curr_frag_len - hdr_len;
                if (page_info->page_offset == 0) {
                        /* Fresh page */
                        j++;
-                       skb_shinfo(skb)->frags[j].page = page_info->page;
+                       skb_frag_set_page(skb, j, page_info->page);
                        skb_shinfo(skb)->frags[j].page_offset =
                                                        page_info->page_offset;
                        skb_shinfo(skb)->frags[j].size = 0;
                if (i == 0 || page_info->page_offset == 0) {
                        /* First frag or Fresh page */
                        j++;
-                       skb_shinfo(skb)->frags[j].page = page_info->page;
+                       skb_frag_set_page(skb, j, page_info->page);
                        skb_shinfo(skb)->frags[j].page_offset =
                                                        page_info->page_offset;
                        skb_shinfo(skb)->frags[j].size = 0;