cxgb4: program pci completion timeout
authorHariprasad Shenai <hariprasad@chelsio.com>
Fri, 5 Jun 2015 08:54:51 +0000 (14:24 +0530)
committerDavid S. Miller <davem@davemloft.net>
Sat, 6 Jun 2015 04:25:58 +0000 (21:25 -0700)
Set pci completion timeout to 0xd.

Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c

index da65e76c44b53b14b4e440ed2a01497ec6489886..efd0aa1a224e799f0c5a38a5447795f1b25abb30 100644 (file)
@@ -5847,6 +5847,22 @@ static int get_flash_params(struct adapter *adap)
        return 0;
 }
 
+static void set_pcie_completion_timeout(struct adapter *adapter, u8 range)
+{
+       u16 val;
+       u32 pcie_cap;
+
+       pcie_cap = pci_find_capability(adapter->pdev, PCI_CAP_ID_EXP);
+       if (pcie_cap) {
+               pci_read_config_word(adapter->pdev,
+                                    pcie_cap + PCI_EXP_DEVCTL2, &val);
+               val &= ~PCI_EXP_DEVCTL2_COMP_TIMEOUT;
+               val |= range;
+               pci_write_config_word(adapter->pdev,
+                                     pcie_cap + PCI_EXP_DEVCTL2, val);
+       }
+}
+
 /**
  *     t4_prep_adapter - prepare SW and HW for operation
  *     @adapter: the adapter
@@ -5919,6 +5935,9 @@ int t4_prep_adapter(struct adapter *adapter)
        adapter->params.nports = 1;
        adapter->params.portvec = 1;
        adapter->params.vpd.cclk = 50000;
+
+       /* Set pci completion timeout value to 4 seconds. */
+       set_pcie_completion_timeout(adapter, 0xd);
        return 0;
 }