i40e: enable packet split only when IOMMU present
authorMitch Williams <mitch.a.williams@intel.com>
Fri, 6 Feb 2015 08:52:11 +0000 (08:52 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 25 Feb 2015 05:13:35 +0000 (21:13 -0800)
When an IOMMU is in use, the packet split receive path shows a distinct
advantage over the single-buffer path because it minimizes DMA mapping
and unmapping. However, this is not an advantage for systems with no
IOMMU. At init time, check to see if an IOMMU is enabled and enable
packet split receives.

Change-ID: I4f70d2e9c31bbea3dc8fd0c5734959a6e6602210
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Jim Young <james.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_main.c

index 3ee730dab82dc0ea03d6dd1cfcfd7fe91b87d865..eb6307edbdd45ff675b10d62a201ccf257176d0b 100644 (file)
@@ -36,6 +36,7 @@
 #include <linux/aer.h>
 #include <linux/netdevice.h>
 #include <linux/ioport.h>
+#include <linux/iommu.h>
 #include <linux/slab.h>
 #include <linux/list.h>
 #include <linux/string.h>
index bb876e310908bdf4d9def89ba70fdddcc066ea07..a8824c785b5ad3e43b8058482fb8b6438f9a056b 100644 (file)
@@ -7279,8 +7279,12 @@ static int i40e_sw_init(struct i40e_pf *pf)
        /* Set default capability flags */
        pf->flags = I40E_FLAG_RX_CSUM_ENABLED |
                    I40E_FLAG_MSI_ENABLED     |
-                   I40E_FLAG_MSIX_ENABLED    |
-                   I40E_FLAG_RX_PS_ENABLED;
+                   I40E_FLAG_MSIX_ENABLED;
+
+       if (iommu_present(&pci_bus_type))
+               pf->flags |= I40E_FLAG_RX_PS_ENABLED;
+       else
+               pf->flags |= I40E_FLAG_RX_1BUF_ENABLED;
 
        /* Set default ITR */
        pf->rx_itr_default = I40E_ITR_DYNAMIC | I40E_ITR_RX_DEF;