static int io_populate_area_dma(struct io_zcrx_ifq *ifq,
struct io_zcrx_area *area,
- struct sg_table *sgt, unsigned long off)
+ struct sg_table *sgt)
{
struct scatterlist *sg;
unsigned i, niov_idx = 0;
for_each_sgtable_dma_sg(sgt, sg, i) {
dma_addr_t dma = sg_dma_address(sg);
unsigned long sg_len = sg_dma_len(sg);
- unsigned long sg_off = min(sg_len, off);
-
- off -= sg_off;
- sg_len -= sg_off;
- dma += sg_off;
while (sg_len && niov_idx < area->nia.num_niovs) {
struct net_iov *niov = &area->nia.niovs[niov_idx];
goto err;
}
- mem->dmabuf_offset = off;
mem->size = len;
return 0;
err:
static int io_zcrx_map_area(struct io_zcrx_ifq *ifq, struct io_zcrx_area *area)
{
- unsigned long offset;
struct sg_table *sgt;
int ret;
if (ret < 0)
return ret;
sgt = &area->mem.page_sg_table;
- offset = 0;
} else {
sgt = area->mem.sgt;
- offset = area->mem.dmabuf_offset;
}
- ret = io_populate_area_dma(ifq, area, sgt, offset);
+ ret = io_populate_area_dma(ifq, area, sgt);
if (ret == 0)
area->is_mapped = true;
return ret;