On Mon, 5 Aug 2024 21:25:17 +0000 Mina Almasry wrote: > +struct net_iov * > +net_devmem_alloc_dmabuf(struct net_devmem_dmabuf_binding *binding) > +{ > + struct dmabuf_genpool_chunk_owner *owner; > + unsigned long dma_addr; > + struct net_iov *niov; > + ssize_t offset; > + ssize_t index; > + > + dma_addr = gen_pool_alloc_owner(binding->chunk_pool, PAGE_SIZE, > + (void **)&owner); > + if (!dma_addr) > + return NULL; > + > + offset = dma_addr - owner->base_dma_addr; > + index = offset / PAGE_SIZE; > + niov = &owner->niovs[index]; > + > + niov->dma_addr = 0; Is the dma_addr not constant for a given niov for the entire lifetime of the binding? Why flip it back and forth between its value and 0?