OSDN Git Service

net: bcmgenet: enable NETIF_F_HIGHDMA flag
authorDoug Berger <opendmb@gmail.com>
Wed, 18 Dec 2019 00:51:08 +0000 (16:51 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Dec 2019 02:11:10 +0000 (18:11 -0800)
This commit configures the DMA masks for the GENET driver and
sets the NETIF_F_HIGHDMA flag to report support of the feature.

Signed-off-by: Doug Berger <opendmb@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/genet/bcmgenet.c

index 32f1245..d9defb8 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Broadcom GENET (Gigabit Ethernet) controller driver
  *
- * Copyright (c) 2014-2017 Broadcom
+ * Copyright (c) 2014-2019 Broadcom
  */
 
 #define pr_fmt(fmt)                            "bcmgenet: " fmt
@@ -3537,7 +3537,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
 
        /* Set hardware features */
        dev->hw_features |= NETIF_F_SG | NETIF_F_IP_CSUM |
-               NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM;
+               NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA | NETIF_F_RXCSUM;
 
        /* Request the WOL interrupt and advertise suspend if available */
        priv->wol_irq_disabled = true;
@@ -3574,6 +3574,14 @@ static int bcmgenet_probe(struct platform_device *pdev)
 
        bcmgenet_set_hw_params(priv);
 
+       err = -EIO;
+       if (priv->hw_params->flags & GENET_HAS_40BITS)
+               err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(40));
+       if (err)
+               err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
+       if (err)
+               goto err;
+
        /* Mii wait queue */
        init_waitqueue_head(&priv->wq);
        /* Always use RX_BUF_LENGTH (2KB) buffer for all chips */