[PATCH] enic: Use dma_set_mask_and_coherent()

Christophe JAILLET posted 1 patch 4 years, 6 months ago
drivers/net/ethernet/cisco/enic/enic_main.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
[PATCH] enic: Use dma_set_mask_and_coherent()
Posted by Christophe JAILLET 4 years, 6 months ago
Use dma_set_mask_and_coherent() instead of unrolling it with some
dma_set_mask()+dma_set_coherent_mask().

This simplifies code and removes some dead code (dma_set_coherent_mask()
can not fail after a successful dma_set_mask())

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/net/ethernet/cisco/enic/enic_main.c | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 2faba079b4fb..1c81b161de52 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -2718,26 +2718,14 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 * fail to 32-bit.
 	 */
 
-	err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(47));
+	err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(47));
 	if (err) {
-		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
+		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
 		if (err) {
 			dev_err(dev, "No usable DMA configuration, aborting\n");
 			goto err_out_release_regions;
 		}
-		err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
-		if (err) {
-			dev_err(dev, "Unable to obtain %u-bit DMA "
-				"for consistent allocations, aborting\n", 32);
-			goto err_out_release_regions;
-		}
 	} else {
-		err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(47));
-		if (err) {
-			dev_err(dev, "Unable to obtain %u-bit DMA "
-				"for consistent allocations, aborting\n", 47);
-			goto err_out_release_regions;
-		}
 		using_dac = 1;
 	}
 
-- 
2.32.0

Re: [PATCH] enic: Use dma_set_mask_and_coherent()
Posted by patchwork-bot+netdevbpf@kernel.org 4 years, 5 months ago
Hello:

This patch was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:

On Sat,  1 Jan 2022 15:02:45 +0100 you wrote:
> Use dma_set_mask_and_coherent() instead of unrolling it with some
> dma_set_mask()+dma_set_coherent_mask().
> 
> This simplifies code and removes some dead code (dma_set_coherent_mask()
> can not fail after a successful dma_set_mask())
> 
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> 
> [...]

Here is the summary with links:
  - enic: Use dma_set_mask_and_coherent()
    https://git.kernel.org/netdev/net-next/c/c5180ad0c278

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html


Re: [PATCH] enic: Use dma_set_mask_and_coherent()
Posted by Christoph Hellwig 4 years, 5 months ago
On Sat, Jan 01, 2022 at 03:02:45PM +0100, Christophe JAILLET wrote:
> -	err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(47));
> +	err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(47));
>  	if (err) {
> +		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
>  		if (err) {
>  			dev_err(dev, "No usable DMA configuration, aborting\n");
>  			goto err_out_release_regions;
>  		}
>  	} else {
>  		using_dac = 1;

There is no need for the callback.  All the routines to set a DMA mask
will only fail if the passed in mask is too small, but never if it is
larger than what is supported.  Also the using_dac variable is not
needed, NETIF_F_HIGHDMA can and should be set unconditionally.
Re: [PATCH] enic: Use dma_set_mask_and_coherent()
Posted by Christophe JAILLET 4 years, 5 months ago
Le 03/01/2022 à 09:47, Christoph Hellwig a écrit :
> On Sat, Jan 01, 2022 at 03:02:45PM +0100, Christophe JAILLET wrote:
>> -	err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(47));
>> +	err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(47));
>>   	if (err) {
>> +		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
>>   		if (err) {
>>   			dev_err(dev, "No usable DMA configuration, aborting\n");
>>   			goto err_out_release_regions;
>>   		}
>>   	} else {
>>   		using_dac = 1;
> 
> There is no need for the callback.  All the routines to set a DMA mask
> will only fail if the passed in mask is too small, but never if it is
> larger than what is supported.  Also the using_dac variable is not
> needed, NETIF_F_HIGHDMA can and should be set unconditionally.
> 

Ok, thanks.
I was only aware of the 64 bits case.
The patch has already reached -next.

I'll send another patch on to of it to go one step further.

CJ