hdr_page = __netmem_to_page(hdr->netmem);
        buf_page = __netmem_to_page(buf->netmem);
-       dst = page_address(hdr_page) + hdr->offset + hdr_page->pp->p.offset;
-       src = page_address(buf_page) + buf->offset + buf_page->pp->p.offset;
+       dst = page_address(hdr_page) + hdr->offset +
+               pp_page_to_nmdesc(hdr_page)->pp->p.offset;
+       src = page_address(buf_page) + buf->offset +
+               pp_page_to_nmdesc(buf_page)->pp->p.offset;
 
        memcpy(dst, src, LARGEST_ALIGN(copy));
        buf->offset += copy;
 struct sk_buff *idpf_rx_build_skb(const struct libeth_fqe *buf, u32 size)
 {
        struct page *buf_page = __netmem_to_page(buf->netmem);
-       u32 hr = buf_page->pp->p.offset;
+       u32 hr = pp_page_to_nmdesc(buf_page)->pp->p.offset;
        struct sk_buff *skb;
        void *va;