diff options
Diffstat (limited to 'drivers/infiniband/hw/nes/nes.c')
-rw-r--r-- | drivers/infiniband/hw/nes/nes.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c index fb7d243b1a23..b9611ade9eab 100644 --- a/drivers/infiniband/hw/nes/nes.c +++ b/drivers/infiniband/hw/nes/nes.c | |||
@@ -95,6 +95,10 @@ unsigned int wqm_quanta = 0x10000; | |||
95 | module_param(wqm_quanta, int, 0644); | 95 | module_param(wqm_quanta, int, 0644); |
96 | MODULE_PARM_DESC(wqm_quanta, "WQM quanta"); | 96 | MODULE_PARM_DESC(wqm_quanta, "WQM quanta"); |
97 | 97 | ||
98 | static unsigned int limit_maxrdreqsz; | ||
99 | module_param(limit_maxrdreqsz, bool, 0644); | ||
100 | MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes"); | ||
101 | |||
98 | LIST_HEAD(nes_adapter_list); | 102 | LIST_HEAD(nes_adapter_list); |
99 | static LIST_HEAD(nes_dev_list); | 103 | static LIST_HEAD(nes_dev_list); |
100 | 104 | ||
@@ -581,6 +585,18 @@ static int __devinit nes_probe(struct pci_dev *pcidev, const struct pci_device_i | |||
581 | nesdev->nesadapter->port_count; | 585 | nesdev->nesadapter->port_count; |
582 | } | 586 | } |
583 | 587 | ||
588 | if ((limit_maxrdreqsz || | ||
589 | ((nesdev->nesadapter->phy_type[0] == NES_PHY_TYPE_GLADIUS) && | ||
590 | (hw_rev == NE020_REV1))) && | ||
591 | (pcie_get_readrq(pcidev) > 256)) { | ||
592 | if (pcie_set_readrq(pcidev, 256)) | ||
593 | printk(KERN_ERR PFX "Unable to set max read request" | ||
594 | " to 256 bytes\n"); | ||
595 | else | ||
596 | nes_debug(NES_DBG_INIT, "Max read request size set" | ||
597 | " to 256 bytes\n"); | ||
598 | } | ||
599 | |||
584 | tasklet_init(&nesdev->dpc_tasklet, nes_dpc, (unsigned long)nesdev); | 600 | tasklet_init(&nesdev->dpc_tasklet, nes_dpc, (unsigned long)nesdev); |
585 | 601 | ||
586 | /* bring up the Control QP */ | 602 | /* bring up the Control QP */ |