diff options
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_main.c')
| -rw-r--r-- | drivers/infiniband/hw/mthca/mthca_main.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c index 266f347c6707..9b9ff7bff357 100644 --- a/drivers/infiniband/hw/mthca/mthca_main.c +++ b/drivers/infiniband/hw/mthca/mthca_main.c | |||
| @@ -52,6 +52,14 @@ MODULE_DESCRIPTION("Mellanox InfiniBand HCA low-level driver"); | |||
| 52 | MODULE_LICENSE("Dual BSD/GPL"); | 52 | MODULE_LICENSE("Dual BSD/GPL"); |
| 53 | MODULE_VERSION(DRV_VERSION); | 53 | MODULE_VERSION(DRV_VERSION); |
| 54 | 54 | ||
| 55 | #ifdef CONFIG_INFINIBAND_MTHCA_DEBUG | ||
| 56 | |||
| 57 | int mthca_debug_level = 0; | ||
| 58 | module_param_named(debug_level, mthca_debug_level, int, 0644); | ||
| 59 | MODULE_PARM_DESC(debug_level, "Enable debug tracing if > 0"); | ||
| 60 | |||
| 61 | #endif /* CONFIG_INFINIBAND_MTHCA_DEBUG */ | ||
| 62 | |||
| 55 | #ifdef CONFIG_PCI_MSI | 63 | #ifdef CONFIG_PCI_MSI |
| 56 | 64 | ||
| 57 | static int msi_x = 0; | 65 | static int msi_x = 0; |
| @@ -69,6 +77,10 @@ MODULE_PARM_DESC(msi, "attempt to use MSI if nonzero"); | |||
| 69 | 77 | ||
| 70 | #endif /* CONFIG_PCI_MSI */ | 78 | #endif /* CONFIG_PCI_MSI */ |
| 71 | 79 | ||
| 80 | static int tune_pci = 0; | ||
| 81 | module_param(tune_pci, int, 0444); | ||
| 82 | MODULE_PARM_DESC(tune_pci, "increase PCI burst from the default set by BIOS if nonzero"); | ||
| 83 | |||
| 72 | static const char mthca_version[] __devinitdata = | 84 | static const char mthca_version[] __devinitdata = |
| 73 | DRV_NAME ": Mellanox InfiniBand HCA driver v" | 85 | DRV_NAME ": Mellanox InfiniBand HCA driver v" |
| 74 | DRV_VERSION " (" DRV_RELDATE ")\n"; | 86 | DRV_VERSION " (" DRV_RELDATE ")\n"; |
| @@ -90,6 +102,9 @@ static int __devinit mthca_tune_pci(struct mthca_dev *mdev) | |||
| 90 | int cap; | 102 | int cap; |
| 91 | u16 val; | 103 | u16 val; |
| 92 | 104 | ||
| 105 | if (!tune_pci) | ||
| 106 | return 0; | ||
| 107 | |||
| 93 | /* First try to max out Read Byte Count */ | 108 | /* First try to max out Read Byte Count */ |
| 94 | cap = pci_find_capability(mdev->pdev, PCI_CAP_ID_PCIX); | 109 | cap = pci_find_capability(mdev->pdev, PCI_CAP_ID_PCIX); |
| 95 | if (cap) { | 110 | if (cap) { |
| @@ -176,6 +191,7 @@ static int __devinit mthca_dev_lim(struct mthca_dev *mdev, struct mthca_dev_lim | |||
| 176 | mdev->limits.reserved_srqs = dev_lim->reserved_srqs; | 191 | mdev->limits.reserved_srqs = dev_lim->reserved_srqs; |
| 177 | mdev->limits.reserved_eecs = dev_lim->reserved_eecs; | 192 | mdev->limits.reserved_eecs = dev_lim->reserved_eecs; |
| 178 | mdev->limits.max_desc_sz = dev_lim->max_desc_sz; | 193 | mdev->limits.max_desc_sz = dev_lim->max_desc_sz; |
| 194 | mdev->limits.max_srq_sge = mthca_max_srq_sge(mdev); | ||
| 179 | /* | 195 | /* |
| 180 | * Subtract 1 from the limit because we need to allocate a | 196 | * Subtract 1 from the limit because we need to allocate a |
| 181 | * spare CQE so the HCA HW can tell the difference between an | 197 | * spare CQE so the HCA HW can tell the difference between an |
| @@ -191,6 +207,18 @@ static int __devinit mthca_dev_lim(struct mthca_dev *mdev, struct mthca_dev_lim | |||
| 191 | mdev->limits.port_width_cap = dev_lim->max_port_width; | 207 | mdev->limits.port_width_cap = dev_lim->max_port_width; |
| 192 | mdev->limits.page_size_cap = ~(u32) (dev_lim->min_page_sz - 1); | 208 | mdev->limits.page_size_cap = ~(u32) (dev_lim->min_page_sz - 1); |
| 193 | mdev->limits.flags = dev_lim->flags; | 209 | mdev->limits.flags = dev_lim->flags; |
| 210 | /* | ||
| 211 | * For old FW that doesn't return static rate support, use a | ||
| 212 | * value of 0x3 (only static rate values of 0 or 1 are handled), | ||
| 213 | * except on Sinai, where even old FW can handle static rate | ||
| 214 | * values of 2 and 3. | ||
| 215 | */ | ||
| 216 | if (dev_lim->stat_rate_support) | ||
| 217 | mdev->limits.stat_rate_support = dev_lim->stat_rate_support; | ||
| 218 | else if (mdev->mthca_flags & MTHCA_FLAG_SINAI_OPT) | ||
| 219 | mdev->limits.stat_rate_support = 0xf; | ||
| 220 | else | ||
| 221 | mdev->limits.stat_rate_support = 0x3; | ||
| 194 | 222 | ||
| 195 | /* IB_DEVICE_RESIZE_MAX_WR not supported by driver. | 223 | /* IB_DEVICE_RESIZE_MAX_WR not supported by driver. |
| 196 | May be doable since hardware supports it for SRQ. | 224 | May be doable since hardware supports it for SRQ. |
