Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-2.6-block.git] / drivers / net / ethernet / amd / xgbe / xgbe-main.c
index 5a1891faba8a1f9df9090c3c1064af74cb5c2136..e56c3d45b30e3d409dafa4065ccbc7b7c893abc0 100644 (file)
@@ -247,16 +247,16 @@ static int xgbe_probe(struct platform_device *pdev)
        mutex_init(&pdata->xpcs_mutex);
 
        /* Set and validate the number of descriptors for a ring */
-       BUILD_BUG_ON_NOT_POWER_OF_2(TX_DESC_CNT);
-       pdata->tx_desc_count = TX_DESC_CNT;
+       BUILD_BUG_ON_NOT_POWER_OF_2(XGBE_TX_DESC_CNT);
+       pdata->tx_desc_count = XGBE_TX_DESC_CNT;
        if (pdata->tx_desc_count & (pdata->tx_desc_count - 1)) {
                dev_err(dev, "tx descriptor count (%d) is not valid\n",
                        pdata->tx_desc_count);
                ret = -EINVAL;
                goto err_io;
        }
-       BUILD_BUG_ON_NOT_POWER_OF_2(RX_DESC_CNT);
-       pdata->rx_desc_count = RX_DESC_CNT;
+       BUILD_BUG_ON_NOT_POWER_OF_2(XGBE_RX_DESC_CNT);
+       pdata->rx_desc_count = XGBE_RX_DESC_CNT;
        if (pdata->rx_desc_count & (pdata->rx_desc_count - 1)) {
                dev_err(dev, "rx descriptor count (%d) is not valid\n",
                        pdata->rx_desc_count);
@@ -297,6 +297,16 @@ static int xgbe_probe(struct platform_device *pdev)
        *(dev->dma_mask) = DMA_BIT_MASK(40);
        dev->coherent_dma_mask = DMA_BIT_MASK(40);
 
+       if (of_property_read_bool(dev->of_node, "dma-coherent")) {
+               pdata->axdomain = XGBE_DMA_OS_AXDOMAIN;
+               pdata->arcache = XGBE_DMA_OS_ARCACHE;
+               pdata->awcache = XGBE_DMA_OS_AWCACHE;
+       } else {
+               pdata->axdomain = XGBE_DMA_SYS_AXDOMAIN;
+               pdata->arcache = XGBE_DMA_SYS_ARCACHE;
+               pdata->awcache = XGBE_DMA_SYS_AWCACHE;
+       }
+
        ret = platform_get_irq(pdev, 0);
        if (ret < 0) {
                dev_err(dev, "platform_get_irq failed\n");
@@ -386,7 +396,8 @@ static int xgbe_probe(struct platform_device *pdev)
                              NETIF_F_TSO6 |
                              NETIF_F_GRO |
                              NETIF_F_HW_VLAN_CTAG_RX |
-                             NETIF_F_HW_VLAN_CTAG_TX;
+                             NETIF_F_HW_VLAN_CTAG_TX |
+                             NETIF_F_HW_VLAN_CTAG_FILTER;
 
        netdev->vlan_features |= NETIF_F_SG |
                                 NETIF_F_IP_CSUM |
@@ -397,6 +408,8 @@ static int xgbe_probe(struct platform_device *pdev)
        netdev->features |= netdev->hw_features;
        pdata->netdev_features = netdev->features;
 
+       netdev->priv_flags |= IFF_UNICAST_FLT;
+
        xgbe_init_rx_coalesce(pdata);
        xgbe_init_tx_coalesce(pdata);