Re: [PATCH rdma-next v3] RDMA: Explicitly pass in the dma_device to ib_register_device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -static void setup_dma_device(struct ib_device *device)
> +static void setup_dma_device(struct ib_device *device,
> +			     struct device *dma_device)
>  {
> +	WARN_ON(!IS_ENABLED(CONFIG_DMA_VIRT_OPS) && !dma_device);
> +	if (IS_ENABLED(CONFIG_DMA_VIRT_OPS) && !dma_device) {
>  		/*
> +		 * If the caller does not provide a DMA capable device then the
> +		 * IB device will be used. In this case the caller should fully
> +		 * setup the ibdev for DMA. This usually means using
> +		 * dma_virt_ops.
>  		 */
> +		device->dev.dma_ops = &dma_virt_ops;


> +	rdi->ibdev.dev.dma_ops = &dma_virt_ops;
> +	rdi->ibdev.dev.dma_parms = rdi->ibdev.dev.parent->dma_parms;
> +	rdi->ibdev.dev.coherent_dma_mask =
> +		rdi->ibdev.dev.parent->coherent_dma_mask;


>  	dev->dev.dma_ops = &dma_virt_ops;


> @@ -384,8 +384,9 @@ static struct siw_device *siw_device_create(struct net_device *netdev)
>  	base_dev->dev.parent = parent;
>  	base_dev->dev.dma_ops = &dma_virt_ops;
>  	base_dev->dev.dma_parms = &sdev->dma_parms;
> -	sdev->dma_parms = (struct device_dma_parameters)
> -		{ .max_segment_size = SZ_2G };
> +	dma_set_max_seg_size(&base_dev->dev, UINT_MAX);
> +	dma_coerce_mask_and_coherent(&base_dev->dev,
> +				     dma_get_required_mask(&base_dev->dev));

This still keeps the duplicate dma_virt_ops assignments in the driver.

The dma_coerce_mask_and_coherent in siw also doesn't make any sense to
me.



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux