int qlcnic_set_vxlan_parsing(struct qlcnic_adapter *adapter, u16 port);
 int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter);
 int qlcnic_read_mac_addr(struct qlcnic_adapter *);
-int qlcnic_setup_netdev(struct qlcnic_adapter *, struct net_device *, int);
+int qlcnic_setup_netdev(struct qlcnic_adapter *, struct net_device *);
 void qlcnic_set_netdev_features(struct qlcnic_adapter *,
                                struct qlcnic_esw_func_cfg *);
 void qlcnic_sriov_vf_set_multi(struct net_device *);
 
 }
 
 int
-qlcnic_setup_netdev(struct qlcnic_adapter *adapter, struct net_device *netdev,
-                   int pci_using_dac)
+qlcnic_setup_netdev(struct qlcnic_adapter *adapter, struct net_device *netdev)
 {
        int err;
        struct pci_dev *pdev = adapter->pdev;
 
        netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_RXCSUM |
                             NETIF_F_IPV6_CSUM | NETIF_F_GRO |
-                            NETIF_F_HW_VLAN_CTAG_RX);
+                            NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HIGHDMA);
        netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM |
-                                 NETIF_F_IPV6_CSUM);
+                                 NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA);
 
        if (QLCNIC_IS_TSO_CAPABLE(adapter)) {
                netdev->features |= (NETIF_F_TSO | NETIF_F_TSO6);
                netdev->vlan_features |= (NETIF_F_TSO | NETIF_F_TSO6);
        }
 
-       if (pci_using_dac) {
-               netdev->features |= NETIF_F_HIGHDMA;
-               netdev->vlan_features |= NETIF_F_HIGHDMA;
-       }
-
        if (qlcnic_vlan_tx_check(adapter))
                netdev->features |= (NETIF_F_HW_VLAN_CTAG_TX);
 
        return 0;
 }
 
-static int qlcnic_set_dma_mask(struct pci_dev *pdev, int *pci_using_dac)
-{
-       if (!dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)))
-               *pci_using_dac = 1;
-       else if (!dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)))
-               *pci_using_dac = 0;
-       else {
-               dev_err(&pdev->dev, "Unable to set DMA mask, aborting\n");
-               return -EIO;
-       }
-
-       return 0;
-}
-
 void qlcnic_free_tx_rings(struct qlcnic_adapter *adapter)
 {
        int ring;
        struct net_device *netdev = NULL;
        struct qlcnic_adapter *adapter = NULL;
        struct qlcnic_hardware_context *ahw;
-       int err, pci_using_dac = -1;
        char board_name[QLCNIC_MAX_BOARD_NAME_LEN + 19]; /* MAC + ": " + name */
+       int err;
 
        err = pci_enable_device(pdev);
        if (err)
                goto err_out_disable_pdev;
        }
 
-       err = qlcnic_set_dma_mask(pdev, &pci_using_dac);
-       if (err)
+       err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+       if (err) {
+               dev_err(&pdev->dev, "Unable to set DMA mask, aborting\n");
                goto err_out_disable_pdev;
+       }
 
        err = pci_request_regions(pdev, qlcnic_driver_name);
        if (err)
        } else if (qlcnic_83xx_check(adapter)) {
                qlcnic_83xx_check_vf(adapter, ent);
                adapter->portnum = adapter->ahw->pci_func;
-               err = qlcnic_83xx_init(adapter, pci_using_dac);
+               err = qlcnic_83xx_init(adapter);
                if (err) {
                        switch (err) {
                        case -ENOTRECOVERABLE:
        if (adapter->portnum == 0)
                qlcnic_set_drv_version(adapter);
 
-       err = qlcnic_setup_netdev(adapter, netdev, pci_using_dac);
+       err = qlcnic_setup_netdev(adapter, netdev);
        if (err)
                goto err_out_disable_mbx_intr;
 
 
        return 0;
 }
 
-static int qlcnic_sriov_setup_vf(struct qlcnic_adapter *adapter,
-                                int pci_using_dac)
+static int qlcnic_sriov_setup_vf(struct qlcnic_adapter *adapter)
 {
        int err;
 
        if (err)
                goto err_out_send_channel_term;
 
-       err = qlcnic_setup_netdev(adapter, adapter->netdev, pci_using_dac);
+       err = qlcnic_setup_netdev(adapter, adapter->netdev);
        if (err)
                goto err_out_send_channel_term;
 
        return 0;
 }
 
-int qlcnic_sriov_vf_init(struct qlcnic_adapter *adapter, int pci_using_dac)
+int qlcnic_sriov_vf_init(struct qlcnic_adapter *adapter)
 {
        struct qlcnic_hardware_context *ahw = adapter->ahw;
        int err;
        if (err)
                return err;
 
-       err = qlcnic_sriov_setup_vf(adapter, pci_using_dac);
+       err = qlcnic_sriov_setup_vf(adapter);
        if (err)
                return err;