Message ID | 1709118325-120336-1-git-send-email-wangyunjian@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tun: AF_XDP Tx zero-copy support | expand |
On Wed, 2024-02-28 at 19:05 +0800, Yunjian Wang wrote: > Now dma mappings are used by the physical NICs. However the vNIC > maybe do not need them. So remove non-zero 'dma_page' check in > xp_assign_dev. > > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> > --- > net/xdp/xsk_buff_pool.c | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c > index ce60ecd48a4d..a5af75b1f43c 100644 > --- a/net/xdp/xsk_buff_pool.c > +++ b/net/xdp/xsk_buff_pool.c > @@ -219,16 +219,9 @@ int xp_assign_dev(struct xsk_buff_pool *pool, > if (err) > goto err_unreg_pool; > > - if (!pool->dma_pages) { > - WARN(1, "Driver did not DMA map zero-copy buffers"); > - err = -EINVAL; > - goto err_unreg_xsk; > - } This would unconditionally remove an otherwise valid check for most NIC. What about let the driver declare it wont need DMA map with a (pool?) flag. Cheers, Paolo
> -----Original Message----- > From: Paolo Abeni [mailto:pabeni@redhat.com] > Sent: Thursday, February 29, 2024 6:43 PM > To: wangyunjian <wangyunjian@huawei.com>; mst@redhat.com; > willemdebruijn.kernel@gmail.com; jasowang@redhat.com; kuba@kernel.org; > bjorn@kernel.org; magnus.karlsson@intel.com; maciej.fijalkowski@intel.com; > jonathan.lemon@gmail.com; davem@davemloft.net > Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; > linux-kernel@vger.kernel.org; kvm@vger.kernel.org; > virtualization@lists.linux.dev; xudingke <xudingke@huawei.com>; liwei (DT) > <liwei395@huawei.com> > Subject: Re: [PATCH net-next v2 1/3] xsk: Remove non-zero 'dma_page' check in > xp_assign_dev > > On Wed, 2024-02-28 at 19:05 +0800, Yunjian Wang wrote: > > Now dma mappings are used by the physical NICs. However the vNIC maybe > > do not need them. So remove non-zero 'dma_page' check in > > xp_assign_dev. > > > > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> > > --- > > net/xdp/xsk_buff_pool.c | 7 ------- > > 1 file changed, 7 deletions(-) > > > > diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index > > ce60ecd48a4d..a5af75b1f43c 100644 > > --- a/net/xdp/xsk_buff_pool.c > > +++ b/net/xdp/xsk_buff_pool.c > > @@ -219,16 +219,9 @@ int xp_assign_dev(struct xsk_buff_pool *pool, > > if (err) > > goto err_unreg_pool; > > > > - if (!pool->dma_pages) { > > - WARN(1, "Driver did not DMA map zero-copy buffers"); > > - err = -EINVAL; > > - goto err_unreg_xsk; > > - } > > This would unconditionally remove an otherwise valid check for most NIC. What > about let the driver declare it wont need DMA map with a > (pool?) flag. This check is redundant. The NIC's driver determines whether a DMA map is required. If the NIC'driver requires the DMA map, it uses the xsk_pool_dma_map function, which initializes the DMA map and performs a check. Thanks > > Cheers, > > Paolo
On Thu, 29 Feb 2024 at 13:52, wangyunjian <wangyunjian@huawei.com> wrote: > > > -----Original Message----- > > From: Paolo Abeni [mailto:pabeni@redhat.com] > > Sent: Thursday, February 29, 2024 6:43 PM > > To: wangyunjian <wangyunjian@huawei.com>; mst@redhat.com; > > willemdebruijn.kernel@gmail.com; jasowang@redhat.com; kuba@kernel.org; > > bjorn@kernel.org; magnus.karlsson@intel.com; maciej.fijalkowski@intel.com; > > jonathan.lemon@gmail.com; davem@davemloft.net > > Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; > > linux-kernel@vger.kernel.org; kvm@vger.kernel.org; > > virtualization@lists.linux.dev; xudingke <xudingke@huawei.com>; liwei (DT) > > <liwei395@huawei.com> > > Subject: Re: [PATCH net-next v2 1/3] xsk: Remove non-zero 'dma_page' check in > > xp_assign_dev > > > > On Wed, 2024-02-28 at 19:05 +0800, Yunjian Wang wrote: > > > Now dma mappings are used by the physical NICs. However the vNIC maybe > > > do not need them. So remove non-zero 'dma_page' check in > > > xp_assign_dev. > > > > > > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> > > > --- > > > net/xdp/xsk_buff_pool.c | 7 ------- > > > 1 file changed, 7 deletions(-) > > > > > > diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index > > > ce60ecd48a4d..a5af75b1f43c 100644 > > > --- a/net/xdp/xsk_buff_pool.c > > > +++ b/net/xdp/xsk_buff_pool.c > > > @@ -219,16 +219,9 @@ int xp_assign_dev(struct xsk_buff_pool *pool, > > > if (err) > > > goto err_unreg_pool; > > > > > > - if (!pool->dma_pages) { > > > - WARN(1, "Driver did not DMA map zero-copy buffers"); > > > - err = -EINVAL; > > > - goto err_unreg_xsk; > > > - } > > > > This would unconditionally remove an otherwise valid check for most NIC. What > > about let the driver declare it wont need DMA map with a > > (pool?) flag. > > This check is redundant. The NIC's driver determines whether a DMA map is required. > If the NIC'driver requires the DMA map, it uses the xsk_pool_dma_map function, which > initializes the DMA map and performs a check. Just to provide some context: I put this check there many years ago to guard against a zero-copy driver writer forgetting to call xsk_pool_dma_map() during the implementation phase. A working driver will always have pool->dma_pages != NULL. If you both think that this check is too much of a precaution, then I have no problem getting rid of it. Just thought that a text warning would be nicer than a crash later. Thanks: Magnus > Thanks > > > > > Cheers, > > > > Paolo >
diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index ce60ecd48a4d..a5af75b1f43c 100644 --- a/net/xdp/xsk_buff_pool.c +++ b/net/xdp/xsk_buff_pool.c @@ -219,16 +219,9 @@ int xp_assign_dev(struct xsk_buff_pool *pool, if (err) goto err_unreg_pool; - if (!pool->dma_pages) { - WARN(1, "Driver did not DMA map zero-copy buffers"); - err = -EINVAL; - goto err_unreg_xsk; - } pool->umem->zc = true; return 0; -err_unreg_xsk: - xp_disable_drv_zc(pool); err_unreg_pool: if (!force_zc) err = 0; /* fallback to copy mode */
Now dma mappings are used by the physical NICs. However the vNIC maybe do not need them. So remove non-zero 'dma_page' check in xp_assign_dev. Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> --- net/xdp/xsk_buff_pool.c | 7 ------- 1 file changed, 7 deletions(-)