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 a2b04d62b1a..aa1dc41f04c 100644 --- a/drivers/infiniband/hw/nes/nes.c +++ b/drivers/infiniband/hw/nes/nes.c @@ -95,6 +95,10 @@ unsigned int wqm_quanta = 0x10000;  module_param(wqm_quanta, int, 0644);  MODULE_PARM_DESC(wqm_quanta, "WQM quanta"); +static unsigned int limit_maxrdreqsz; +module_param(limit_maxrdreqsz, bool, 0644); +MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes"); +  LIST_HEAD(nes_adapter_list);  static LIST_HEAD(nes_dev_list); @@ -588,6 +592,18 @@ static int __devinit nes_probe(struct pci_dev *pcidev, const struct pci_device_i  						nesdev->nesadapter->port_count;  	} +	if ((limit_maxrdreqsz || +	     ((nesdev->nesadapter->phy_type[0] == NES_PHY_TYPE_GLADIUS) && +	      (hw_rev == NE020_REV1))) && +	    (pcie_get_readrq(pcidev) > 256)) { +		if (pcie_set_readrq(pcidev, 256)) +			printk(KERN_ERR PFX "Unable to set max read request" +				" to 256 bytes\n"); +		else +			nes_debug(NES_DBG_INIT, "Max read request size set" +				" to 256 bytes\n"); +	} +  	tasklet_init(&nesdev->dpc_tasklet, nes_dpc, (unsigned long)nesdev);  	/* bring up the Control QP */  |