RDMA/nes: Add wqm_quanta module option
Add a module parameter wqm_quanta. It controls the number of segments transmitted at a time. Signed-off-by: Sweta Bhatt <sweta.bhatt@einfochips.com> Signed-off-by: Chien Tung <ctung@neteffect.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
committed by
Roland Dreier
parent
de182149c3
commit
2b537c2824
@@ -91,6 +91,10 @@ unsigned int nes_debug_level = 0;
|
||||
module_param_named(debug_level, nes_debug_level, uint, 0644);
|
||||
MODULE_PARM_DESC(debug_level, "Enable debug output level");
|
||||
|
||||
unsigned int wqm_quanta = 0x10000;
|
||||
module_param(wqm_quanta, int, 0644);
|
||||
MODULE_PARM_DESC(wqm_quanta, "WQM quanta");
|
||||
|
||||
LIST_HEAD(nes_adapter_list);
|
||||
static LIST_HEAD(nes_dev_list);
|
||||
|
||||
@@ -557,6 +561,7 @@ static int __devinit nes_probe(struct pci_dev *pcidev, const struct pci_device_i
|
||||
goto bail5;
|
||||
}
|
||||
nesdev->nesadapter->et_rx_coalesce_usecs_irq = interrupt_mod_interval;
|
||||
nesdev->nesadapter->wqm_quanta = wqm_quanta;
|
||||
|
||||
/* nesdev->base_doorbell_index =
|
||||
nesdev->nesadapter->pd_config_base[PCI_FUNC(nesdev->pcidev->devfn)]; */
|
||||
@@ -1069,6 +1074,55 @@ static ssize_t nes_store_idx_data(struct device_driver *ddp,
|
||||
return strnlen(buf, count);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* nes_show_wqm_quanta
|
||||
*/
|
||||
static ssize_t nes_show_wqm_quanta(struct device_driver *ddp, char *buf)
|
||||
{
|
||||
u32 wqm_quanta_value = 0xdead;
|
||||
u32 i = 0;
|
||||
struct nes_device *nesdev;
|
||||
|
||||
list_for_each_entry(nesdev, &nes_dev_list, list) {
|
||||
if (i == ee_flsh_adapter) {
|
||||
wqm_quanta_value = nesdev->nesadapter->wqm_quanta;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "0x%X\n", wqm_quanta);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* nes_store_wqm_quanta
|
||||
*/
|
||||
static ssize_t nes_store_wqm_quanta(struct device_driver *ddp,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned long wqm_quanta_value;
|
||||
u32 wqm_config1;
|
||||
u32 i = 0;
|
||||
struct nes_device *nesdev;
|
||||
|
||||
strict_strtoul(buf, 0, &wqm_quanta_value);
|
||||
list_for_each_entry(nesdev, &nes_dev_list, list) {
|
||||
if (i == ee_flsh_adapter) {
|
||||
nesdev->nesadapter->wqm_quanta = wqm_quanta_value;
|
||||
wqm_config1 = nes_read_indexed(nesdev,
|
||||
NES_IDX_WQM_CONFIG1);
|
||||
nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG1,
|
||||
((wqm_quanta_value << 1) |
|
||||
(wqm_config1 & 0x00000001)));
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return strnlen(buf, count);
|
||||
}
|
||||
|
||||
static DRIVER_ATTR(adapter, S_IRUSR | S_IWUSR,
|
||||
nes_show_adapter, nes_store_adapter);
|
||||
static DRIVER_ATTR(eeprom_cmd, S_IRUSR | S_IWUSR,
|
||||
@@ -1087,6 +1141,8 @@ static DRIVER_ATTR(idx_addr, S_IRUSR | S_IWUSR,
|
||||
nes_show_idx_addr, nes_store_idx_addr);
|
||||
static DRIVER_ATTR(idx_data, S_IRUSR | S_IWUSR,
|
||||
nes_show_idx_data, nes_store_idx_data);
|
||||
static DRIVER_ATTR(wqm_quanta, S_IRUSR | S_IWUSR,
|
||||
nes_show_wqm_quanta, nes_store_wqm_quanta);
|
||||
|
||||
static int nes_create_driver_sysfs(struct pci_driver *drv)
|
||||
{
|
||||
@@ -1100,6 +1156,7 @@ static int nes_create_driver_sysfs(struct pci_driver *drv)
|
||||
error |= driver_create_file(&drv->driver, &driver_attr_nonidx_data);
|
||||
error |= driver_create_file(&drv->driver, &driver_attr_idx_addr);
|
||||
error |= driver_create_file(&drv->driver, &driver_attr_idx_data);
|
||||
error |= driver_create_file(&drv->driver, &driver_attr_wqm_quanta);
|
||||
return error;
|
||||
}
|
||||
|
||||
@@ -1114,6 +1171,7 @@ static void nes_remove_driver_sysfs(struct pci_driver *drv)
|
||||
driver_remove_file(&drv->driver, &driver_attr_nonidx_data);
|
||||
driver_remove_file(&drv->driver, &driver_attr_idx_addr);
|
||||
driver_remove_file(&drv->driver, &driver_attr_idx_data);
|
||||
driver_remove_file(&drv->driver, &driver_attr_wqm_quanta);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user