Merge branch 'misc' into k.o/for-next
Conflicts: drivers/infiniband/core/iwcm.c - The rdma_netlink patches in HEAD and the iwarp cm workqueue fix (don't use WQ_MEM_RECLAIM, we aren't safe for that context) touched the same code. Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
commit
d3cf4d9915
|
@ -4304,7 +4304,7 @@ static int __init ib_cm_init(void)
|
||||||
goto error1;
|
goto error1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cm.wq = create_workqueue("ib_cm");
|
cm.wq = alloc_workqueue("ib_cm", 0, 1);
|
||||||
if (!cm.wq) {
|
if (!cm.wq) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto error2;
|
goto error2;
|
||||||
|
|
|
@ -523,7 +523,7 @@ int ib_register_device(struct ib_device *device,
|
||||||
device->reg_state = IB_DEV_REGISTERED;
|
device->reg_state = IB_DEV_REGISTERED;
|
||||||
|
|
||||||
list_for_each_entry(client, &client_list, list)
|
list_for_each_entry(client, &client_list, list)
|
||||||
if (client->add && !add_client_context(device, client))
|
if (!add_client_context(device, client) && client->add)
|
||||||
client->add(device);
|
client->add(device);
|
||||||
|
|
||||||
device->index = __dev_new_index();
|
device->index = __dev_new_index();
|
||||||
|
@ -612,7 +612,7 @@ int ib_register_client(struct ib_client *client)
|
||||||
mutex_lock(&device_mutex);
|
mutex_lock(&device_mutex);
|
||||||
|
|
||||||
list_for_each_entry(device, &device_list, core_list)
|
list_for_each_entry(device, &device_list, core_list)
|
||||||
if (client->add && !add_client_context(device, client))
|
if (!add_client_context(device, client) && client->add)
|
||||||
client->add(device);
|
client->add(device);
|
||||||
|
|
||||||
down_write(&lists_rwsem);
|
down_write(&lists_rwsem);
|
||||||
|
|
|
@ -1177,7 +1177,7 @@ static int __init iw_cm_init(void)
|
||||||
pr_err("iw_cm: couldn't init iwpm\n");
|
pr_err("iw_cm: couldn't init iwpm\n");
|
||||||
else
|
else
|
||||||
rdma_nl_register(RDMA_NL_IWCM, iwcm_nl_cb_table);
|
rdma_nl_register(RDMA_NL_IWCM, iwcm_nl_cb_table);
|
||||||
iwcm_wq = alloc_ordered_workqueue("iw_cm_wq", WQ_MEM_RECLAIM);
|
iwcm_wq = alloc_ordered_workqueue("iw_cm_wq", 0);
|
||||||
if (!iwcm_wq)
|
if (!iwcm_wq)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -1020,7 +1020,7 @@ static struct ib_ucq_object *create_cq(struct ib_uverbs_file *file,
|
||||||
cq->uobject = &obj->uobject;
|
cq->uobject = &obj->uobject;
|
||||||
cq->comp_handler = ib_uverbs_comp_handler;
|
cq->comp_handler = ib_uverbs_comp_handler;
|
||||||
cq->event_handler = ib_uverbs_cq_event_handler;
|
cq->event_handler = ib_uverbs_cq_event_handler;
|
||||||
cq->cq_context = &ev_file->ev_queue;
|
cq->cq_context = ev_file ? &ev_file->ev_queue : NULL;
|
||||||
atomic_set(&cq->usecnt, 0);
|
atomic_set(&cq->usecnt, 0);
|
||||||
|
|
||||||
obj->uobject.object = cq;
|
obj->uobject.object = cq;
|
||||||
|
|
|
@ -3372,7 +3372,7 @@ int bnxt_re_dealloc_ucontext(struct ib_ucontext *ib_uctx)
|
||||||
&rdev->qplib_res.dpi_tbl,
|
&rdev->qplib_res.dpi_tbl,
|
||||||
&uctx->dpi);
|
&uctx->dpi);
|
||||||
if (rc)
|
if (rc)
|
||||||
dev_err(rdev_to_dev(rdev), "Deallocte HW DPI failed!");
|
dev_err(rdev_to_dev(rdev), "Deallocate HW DPI failed!");
|
||||||
/* Don't fail, continue*/
|
/* Don't fail, continue*/
|
||||||
uctx->dpi.dbr = NULL;
|
uctx->dpi.dbr = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2871,7 +2871,6 @@ static int close_con_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
pr_debug("%s ep %p tid %u\n", __func__, ep, ep->hwtid);
|
pr_debug("%s ep %p tid %u\n", __func__, ep, ep->hwtid);
|
||||||
BUG_ON(!ep);
|
|
||||||
|
|
||||||
/* The cm_id may be null if we failed to connect */
|
/* The cm_id may be null if we failed to connect */
|
||||||
mutex_lock(&ep->com.mutex);
|
mutex_lock(&ep->com.mutex);
|
||||||
|
|
|
@ -7380,7 +7380,7 @@ void handle_verify_cap(struct work_struct *work)
|
||||||
struct hfi1_devdata *dd = ppd->dd;
|
struct hfi1_devdata *dd = ppd->dd;
|
||||||
u64 reg;
|
u64 reg;
|
||||||
u8 power_management;
|
u8 power_management;
|
||||||
u8 continious;
|
u8 continuous;
|
||||||
u8 vcu;
|
u8 vcu;
|
||||||
u8 vau;
|
u8 vau;
|
||||||
u8 z;
|
u8 z;
|
||||||
|
@ -7399,7 +7399,7 @@ void handle_verify_cap(struct work_struct *work)
|
||||||
lcb_shutdown(dd, 0);
|
lcb_shutdown(dd, 0);
|
||||||
adjust_lcb_for_fpga_serdes(dd);
|
adjust_lcb_for_fpga_serdes(dd);
|
||||||
|
|
||||||
read_vc_remote_phy(dd, &power_management, &continious);
|
read_vc_remote_phy(dd, &power_management, &continuous);
|
||||||
read_vc_remote_fabric(dd, &vau, &z, &vcu, &vl15buf,
|
read_vc_remote_fabric(dd, &vau, &z, &vcu, &vl15buf,
|
||||||
&partner_supported_crc);
|
&partner_supported_crc);
|
||||||
read_vc_remote_link_width(dd, &remote_tx_rate, &link_widths);
|
read_vc_remote_link_width(dd, &remote_tx_rate, &link_widths);
|
||||||
|
@ -7413,7 +7413,7 @@ void handle_verify_cap(struct work_struct *work)
|
||||||
get_link_widths(dd, &active_tx, &active_rx);
|
get_link_widths(dd, &active_tx, &active_rx);
|
||||||
dd_dev_info(dd,
|
dd_dev_info(dd,
|
||||||
"Peer PHY: power management 0x%x, continuous updates 0x%x\n",
|
"Peer PHY: power management 0x%x, continuous updates 0x%x\n",
|
||||||
(int)power_management, (int)continious);
|
(int)power_management, (int)continuous);
|
||||||
dd_dev_info(dd,
|
dd_dev_info(dd,
|
||||||
"Peer Fabric: vAU %d, Z %d, vCU %d, vl15 credits 0x%x, CRC sizes 0x%x\n",
|
"Peer Fabric: vAU %d, Z %d, vCU %d, vl15 credits 0x%x, CRC sizes 0x%x\n",
|
||||||
(int)vau, (int)z, (int)vcu, (int)vl15buf,
|
(int)vau, (int)z, (int)vcu, (int)vl15buf,
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void port_release(struct kobject *kobj)
|
||||||
/* nothing to do since memory is freed by hfi1_free_devdata() */
|
/* nothing to do since memory is freed by hfi1_free_devdata() */
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bin_attribute cc_table_bin_attr = {
|
static const struct bin_attribute cc_table_bin_attr = {
|
||||||
.attr = {.name = "cc_table_bin", .mode = 0444},
|
.attr = {.name = "cc_table_bin", .mode = 0444},
|
||||||
.read = read_cc_table_bin,
|
.read = read_cc_table_bin,
|
||||||
.size = PAGE_SIZE,
|
.size = PAGE_SIZE,
|
||||||
|
@ -137,7 +137,7 @@ static ssize_t read_cc_setting_bin(struct file *filp, struct kobject *kobj,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bin_attribute cc_setting_bin_attr = {
|
static const struct bin_attribute cc_setting_bin_attr = {
|
||||||
.attr = {.name = "cc_settings_bin", .mode = 0444},
|
.attr = {.name = "cc_settings_bin", .mode = 0444},
|
||||||
.read = read_cc_setting_bin,
|
.read = read_cc_setting_bin,
|
||||||
.size = PAGE_SIZE,
|
.size = PAGE_SIZE,
|
||||||
|
|
|
@ -3687,8 +3687,6 @@ int i40iw_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
||||||
|
|
||||||
cm_node->accelerated = 1;
|
cm_node->accelerated = 1;
|
||||||
if (cm_node->accept_pend) {
|
if (cm_node->accept_pend) {
|
||||||
if (!cm_node->listener)
|
|
||||||
i40iw_pr_err("cm_node->listener NULL for passive node\n");
|
|
||||||
atomic_dec(&cm_node->listener->pend_accepts_cnt);
|
atomic_dec(&cm_node->listener->pend_accepts_cnt);
|
||||||
cm_node->accept_pend = 0;
|
cm_node->accept_pend = 0;
|
||||||
}
|
}
|
||||||
|
@ -4056,12 +4054,7 @@ static void i40iw_cm_event_connected(struct i40iw_cm_event *event)
|
||||||
i40iw_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL);
|
i40iw_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL);
|
||||||
|
|
||||||
cm_node->accelerated = 1;
|
cm_node->accelerated = 1;
|
||||||
if (cm_node->accept_pend) {
|
|
||||||
if (!cm_node->listener)
|
|
||||||
i40iw_pr_err("listener is null for passive node\n");
|
|
||||||
atomic_dec(&cm_node->listener->pend_accepts_cnt);
|
|
||||||
cm_node->accept_pend = 0;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
|
|
@ -269,10 +269,8 @@ static enum i40iw_status_code add_bp_pages(struct i40iw_sc_dev *dev,
|
||||||
status = i40iw_add_sd_table_entry(dev->hw, hmc_info,
|
status = i40iw_add_sd_table_entry(dev->hw, hmc_info,
|
||||||
info->idx.sd_idx, I40IW_SD_TYPE_PAGED,
|
info->idx.sd_idx, I40IW_SD_TYPE_PAGED,
|
||||||
I40IW_HMC_DIRECT_BP_SIZE);
|
I40IW_HMC_DIRECT_BP_SIZE);
|
||||||
if (status) {
|
if (status)
|
||||||
i40iw_free_vmalloc_mem(dev->hw, chunk);
|
goto error;
|
||||||
return status;
|
|
||||||
}
|
|
||||||
if (!dev->is_pf) {
|
if (!dev->is_pf) {
|
||||||
status = i40iw_vchnl_vf_add_hmc_objs(dev, I40IW_HMC_IW_PBLE,
|
status = i40iw_vchnl_vf_add_hmc_objs(dev, I40IW_HMC_IW_PBLE,
|
||||||
fpm_to_idx(pble_rsrc,
|
fpm_to_idx(pble_rsrc,
|
||||||
|
@ -280,8 +278,7 @@ static enum i40iw_status_code add_bp_pages(struct i40iw_sc_dev *dev,
|
||||||
(info->pages << PBLE_512_SHIFT));
|
(info->pages << PBLE_512_SHIFT));
|
||||||
if (status) {
|
if (status) {
|
||||||
i40iw_pr_err("allocate PBLEs in the PF. Error %i\n", status);
|
i40iw_pr_err("allocate PBLEs in the PF. Error %i\n", status);
|
||||||
i40iw_free_vmalloc_mem(dev->hw, chunk);
|
goto error;
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addr = chunk->vaddr;
|
addr = chunk->vaddr;
|
||||||
|
|
|
@ -949,14 +949,16 @@ enum i40iw_status_code i40iw_puda_create_rsrc(struct i40iw_sc_vsi *vsi,
|
||||||
ret = i40iw_puda_qp_create(rsrc);
|
ret = i40iw_puda_qp_create(rsrc);
|
||||||
}
|
}
|
||||||
if (ret) {
|
if (ret) {
|
||||||
i40iw_debug(dev, I40IW_DEBUG_PUDA, "[%s] error qp_create\n", __func__);
|
i40iw_debug(dev, I40IW_DEBUG_PUDA, "[%s] error qp_create\n",
|
||||||
|
__func__);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
rsrc->completion = PUDA_QP_CREATED;
|
rsrc->completion = PUDA_QP_CREATED;
|
||||||
|
|
||||||
ret = i40iw_puda_allocbufs(rsrc, info->tx_buf_cnt + info->rq_size);
|
ret = i40iw_puda_allocbufs(rsrc, info->tx_buf_cnt + info->rq_size);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
i40iw_debug(dev, I40IW_DEBUG_PUDA, "[%s] error allloc_buf\n", __func__);
|
i40iw_debug(dev, I40IW_DEBUG_PUDA, "[%s] error alloc_buf\n",
|
||||||
|
__func__);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1161,7 +1161,7 @@ static void mthca_remove_one(struct pci_dev *pdev)
|
||||||
mutex_unlock(&mthca_device_mutex);
|
mutex_unlock(&mthca_device_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pci_device_id mthca_pci_table[] = {
|
static const struct pci_device_id mthca_pci_table[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR),
|
{ PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR),
|
||||||
.driver_data = TAVOR },
|
.driver_data = TAVOR },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_TOPSPIN, PCI_DEVICE_ID_MELLANOX_TAVOR),
|
{ PCI_DEVICE(PCI_VENDOR_ID_TOPSPIN, PCI_DEVICE_ID_MELLANOX_TAVOR),
|
||||||
|
|
|
@ -101,7 +101,7 @@ static unsigned int ee_flsh_adapter;
|
||||||
static unsigned int sysfs_nonidx_addr;
|
static unsigned int sysfs_nonidx_addr;
|
||||||
static unsigned int sysfs_idx_addr;
|
static unsigned int sysfs_idx_addr;
|
||||||
|
|
||||||
static struct pci_device_id nes_pci_table[] = {
|
static const struct pci_device_id nes_pci_table[] = {
|
||||||
{ PCI_VDEVICE(NETEFFECT, PCI_DEVICE_ID_NETEFFECT_NE020), },
|
{ PCI_VDEVICE(NETEFFECT, PCI_DEVICE_ID_NETEFFECT_NE020), },
|
||||||
{ PCI_VDEVICE(NETEFFECT, PCI_DEVICE_ID_NETEFFECT_NE020_KR), },
|
{ PCI_VDEVICE(NETEFFECT, PCI_DEVICE_ID_NETEFFECT_NE020_KR), },
|
||||||
{0}
|
{0}
|
||||||
|
@ -807,13 +807,6 @@ static void nes_remove(struct pci_dev *pcidev)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct pci_driver nes_pci_driver = {
|
|
||||||
.name = DRV_NAME,
|
|
||||||
.id_table = nes_pci_table,
|
|
||||||
.probe = nes_probe,
|
|
||||||
.remove = nes_remove,
|
|
||||||
};
|
|
||||||
|
|
||||||
static ssize_t adapter_show(struct device_driver *ddp, char *buf)
|
static ssize_t adapter_show(struct device_driver *ddp, char *buf)
|
||||||
{
|
{
|
||||||
unsigned int devfn = 0xffffffff;
|
unsigned int devfn = 0xffffffff;
|
||||||
|
@ -1155,35 +1148,29 @@ static DRIVER_ATTR_RW(idx_addr);
|
||||||
static DRIVER_ATTR_RW(idx_data);
|
static DRIVER_ATTR_RW(idx_data);
|
||||||
static DRIVER_ATTR_RW(wqm_quanta);
|
static DRIVER_ATTR_RW(wqm_quanta);
|
||||||
|
|
||||||
static int nes_create_driver_sysfs(struct pci_driver *drv)
|
static struct attribute *nes_attrs[] = {
|
||||||
{
|
&driver_attr_adapter.attr,
|
||||||
int error;
|
&driver_attr_eeprom_cmd.attr,
|
||||||
error = driver_create_file(&drv->driver, &driver_attr_adapter);
|
&driver_attr_eeprom_data.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_eeprom_cmd);
|
&driver_attr_flash_cmd.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_eeprom_data);
|
&driver_attr_flash_data.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_flash_cmd);
|
&driver_attr_nonidx_addr.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_flash_data);
|
&driver_attr_nonidx_data.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_nonidx_addr);
|
&driver_attr_idx_addr.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_nonidx_data);
|
&driver_attr_idx_data.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_idx_addr);
|
&driver_attr_wqm_quanta.attr,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_idx_data);
|
NULL,
|
||||||
error |= driver_create_file(&drv->driver, &driver_attr_wqm_quanta);
|
};
|
||||||
return error;
|
ATTRIBUTE_GROUPS(nes);
|
||||||
}
|
|
||||||
|
static struct pci_driver nes_pci_driver = {
|
||||||
|
.name = DRV_NAME,
|
||||||
|
.id_table = nes_pci_table,
|
||||||
|
.probe = nes_probe,
|
||||||
|
.remove = nes_remove,
|
||||||
|
.groups = nes_groups,
|
||||||
|
};
|
||||||
|
|
||||||
static void nes_remove_driver_sysfs(struct pci_driver *drv)
|
|
||||||
{
|
|
||||||
driver_remove_file(&drv->driver, &driver_attr_adapter);
|
|
||||||
driver_remove_file(&drv->driver, &driver_attr_eeprom_cmd);
|
|
||||||
driver_remove_file(&drv->driver, &driver_attr_eeprom_data);
|
|
||||||
driver_remove_file(&drv->driver, &driver_attr_flash_cmd);
|
|
||||||
driver_remove_file(&drv->driver, &driver_attr_flash_data);
|
|
||||||
driver_remove_file(&drv->driver, &driver_attr_nonidx_addr);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nes_init_module - module initialization entry point
|
* nes_init_module - module initialization entry point
|
||||||
|
@ -1191,20 +1178,13 @@ static void nes_remove_driver_sysfs(struct pci_driver *drv)
|
||||||
static int __init nes_init_module(void)
|
static int __init nes_init_module(void)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
int retval1;
|
|
||||||
|
|
||||||
retval = nes_cm_start();
|
retval = nes_cm_start();
|
||||||
if (retval) {
|
if (retval) {
|
||||||
printk(KERN_ERR PFX "Unable to start NetEffect iWARP CM.\n");
|
printk(KERN_ERR PFX "Unable to start NetEffect iWARP CM.\n");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
retval = pci_register_driver(&nes_pci_driver);
|
return pci_register_driver(&nes_pci_driver);
|
||||||
if (retval >= 0) {
|
|
||||||
retval1 = nes_create_driver_sysfs(&nes_pci_driver);
|
|
||||||
if (retval1 < 0)
|
|
||||||
printk(KERN_ERR PFX "Unable to create NetEffect sys files.\n");
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1214,7 +1194,6 @@ static int __init nes_init_module(void)
|
||||||
static void __exit nes_exit_module(void)
|
static void __exit nes_exit_module(void)
|
||||||
{
|
{
|
||||||
nes_cm_stop();
|
nes_cm_stop();
|
||||||
nes_remove_driver_sysfs(&nes_pci_driver);
|
|
||||||
|
|
||||||
pci_unregister_driver(&nes_pci_driver);
|
pci_unregister_driver(&nes_pci_driver);
|
||||||
}
|
}
|
||||||
|
|
|
@ -399,7 +399,7 @@ static int loadtime_init(struct qib_devdata *dd)
|
||||||
if (((dd->revision >> QLOGIC_IB_R_SOFTWARE_SHIFT) &
|
if (((dd->revision >> QLOGIC_IB_R_SOFTWARE_SHIFT) &
|
||||||
QLOGIC_IB_R_SOFTWARE_MASK) != QIB_CHIP_SWVERSION) {
|
QLOGIC_IB_R_SOFTWARE_MASK) != QIB_CHIP_SWVERSION) {
|
||||||
qib_dev_err(dd,
|
qib_dev_err(dd,
|
||||||
"Driver only handles version %d, chip swversion is %d (%llx), failng\n",
|
"Driver only handles version %d, chip swversion is %d (%llx), failing\n",
|
||||||
QIB_CHIP_SWVERSION,
|
QIB_CHIP_SWVERSION,
|
||||||
(int)(dd->revision >>
|
(int)(dd->revision >>
|
||||||
QLOGIC_IB_R_SOFTWARE_SHIFT) &
|
QLOGIC_IB_R_SOFTWARE_SHIFT) &
|
||||||
|
|
|
@ -247,7 +247,7 @@ static struct kobj_type qib_port_cc_ktype = {
|
||||||
.release = qib_port_release,
|
.release = qib_port_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct bin_attribute cc_table_bin_attr = {
|
static const struct bin_attribute cc_table_bin_attr = {
|
||||||
.attr = {.name = "cc_table_bin", .mode = 0444},
|
.attr = {.name = "cc_table_bin", .mode = 0444},
|
||||||
.read = read_cc_table_bin,
|
.read = read_cc_table_bin,
|
||||||
.size = PAGE_SIZE,
|
.size = PAGE_SIZE,
|
||||||
|
@ -286,7 +286,7 @@ static ssize_t read_cc_setting_bin(struct file *filp, struct kobject *kobj,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bin_attribute cc_setting_bin_attr = {
|
static const struct bin_attribute cc_setting_bin_attr = {
|
||||||
.attr = {.name = "cc_settings_bin", .mode = 0444},
|
.attr = {.name = "cc_settings_bin", .mode = 0444},
|
||||||
.read = read_cc_setting_bin,
|
.read = read_cc_setting_bin,
|
||||||
.size = PAGE_SIZE,
|
.size = PAGE_SIZE,
|
||||||
|
|
|
@ -1077,7 +1077,7 @@ static void pvrdma_pci_remove(struct pci_dev *pdev)
|
||||||
pci_set_drvdata(pdev, NULL);
|
pci_set_drvdata(pdev, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pci_device_id pvrdma_pci_table[] = {
|
static const struct pci_device_id pvrdma_pci_table[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_VMWARE, PCI_DEVICE_ID_VMWARE_PVRDMA), },
|
{ PCI_DEVICE(PCI_VENDOR_ID_VMWARE, PCI_DEVICE_ID_VMWARE_PVRDMA), },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,18 +38,13 @@ int rxe_av_chk_attr(struct rxe_dev *rxe, struct rdma_ah_attr *attr)
|
||||||
{
|
{
|
||||||
struct rxe_port *port;
|
struct rxe_port *port;
|
||||||
|
|
||||||
if (rdma_ah_get_port_num(attr) != 1) {
|
|
||||||
pr_info("invalid port_num = %d\n", rdma_ah_get_port_num(attr));
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
port = &rxe->port;
|
port = &rxe->port;
|
||||||
|
|
||||||
if (rdma_ah_get_ah_flags(attr) & IB_AH_GRH) {
|
if (rdma_ah_get_ah_flags(attr) & IB_AH_GRH) {
|
||||||
u8 sgid_index = rdma_ah_read_grh(attr)->sgid_index;
|
u8 sgid_index = rdma_ah_read_grh(attr)->sgid_index;
|
||||||
|
|
||||||
if (sgid_index > port->attr.gid_tbl_len) {
|
if (sgid_index > port->attr.gid_tbl_len) {
|
||||||
pr_info("invalid sgid index = %d\n", sgid_index);
|
pr_warn("invalid sgid index = %d\n", sgid_index);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1961,10 +1961,6 @@ static struct nvmf_transport_ops nvme_rdma_transport = {
|
||||||
.create_ctrl = nvme_rdma_create_ctrl,
|
.create_ctrl = nvme_rdma_create_ctrl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void nvme_rdma_add_one(struct ib_device *ib_device)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void nvme_rdma_remove_one(struct ib_device *ib_device, void *client_data)
|
static void nvme_rdma_remove_one(struct ib_device *ib_device, void *client_data)
|
||||||
{
|
{
|
||||||
struct nvme_rdma_ctrl *ctrl;
|
struct nvme_rdma_ctrl *ctrl;
|
||||||
|
@ -1986,7 +1982,6 @@ static void nvme_rdma_remove_one(struct ib_device *ib_device, void *client_data)
|
||||||
|
|
||||||
static struct ib_client nvme_rdma_ib_client = {
|
static struct ib_client nvme_rdma_ib_client = {
|
||||||
.name = "nvme_rdma",
|
.name = "nvme_rdma",
|
||||||
.add = nvme_rdma_add_one,
|
|
||||||
.remove = nvme_rdma_remove_one
|
.remove = nvme_rdma_remove_one
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1510,10 +1510,6 @@ static struct nvmet_fabrics_ops nvmet_rdma_ops = {
|
||||||
.delete_ctrl = nvmet_rdma_delete_ctrl,
|
.delete_ctrl = nvmet_rdma_delete_ctrl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void nvmet_rdma_add_one(struct ib_device *ib_device)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void nvmet_rdma_remove_one(struct ib_device *ib_device, void *client_data)
|
static void nvmet_rdma_remove_one(struct ib_device *ib_device, void *client_data)
|
||||||
{
|
{
|
||||||
struct nvmet_rdma_queue *queue;
|
struct nvmet_rdma_queue *queue;
|
||||||
|
@ -1534,7 +1530,6 @@ static void nvmet_rdma_remove_one(struct ib_device *ib_device, void *client_data
|
||||||
|
|
||||||
static struct ib_client nvmet_rdma_ib_client = {
|
static struct ib_client nvmet_rdma_ib_client = {
|
||||||
.name = "nvmet_rdma",
|
.name = "nvmet_rdma",
|
||||||
.add = nvmet_rdma_add_one,
|
|
||||||
.remove = nvmet_rdma_remove_one
|
.remove = nvmet_rdma_remove_one
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1307,6 +1307,7 @@ int __pci_register_driver(struct pci_driver *drv, struct module *owner,
|
||||||
drv->driver.bus = &pci_bus_type;
|
drv->driver.bus = &pci_bus_type;
|
||||||
drv->driver.owner = owner;
|
drv->driver.owner = owner;
|
||||||
drv->driver.mod_name = mod_name;
|
drv->driver.mod_name = mod_name;
|
||||||
|
drv->driver.groups = drv->groups;
|
||||||
|
|
||||||
spin_lock_init(&drv->dynids.lock);
|
spin_lock_init(&drv->dynids.lock);
|
||||||
INIT_LIST_HEAD(&drv->dynids.list);
|
INIT_LIST_HEAD(&drv->dynids.list);
|
||||||
|
|
|
@ -729,6 +729,7 @@ struct pci_driver {
|
||||||
void (*shutdown) (struct pci_dev *dev);
|
void (*shutdown) (struct pci_dev *dev);
|
||||||
int (*sriov_configure) (struct pci_dev *dev, int num_vfs); /* PF pdev */
|
int (*sriov_configure) (struct pci_dev *dev, int num_vfs); /* PF pdev */
|
||||||
const struct pci_error_handlers *err_handler;
|
const struct pci_error_handlers *err_handler;
|
||||||
|
const struct attribute_group **groups;
|
||||||
struct device_driver driver;
|
struct device_driver driver;
|
||||||
struct pci_dynids dynids;
|
struct pci_dynids dynids;
|
||||||
};
|
};
|
||||||
|
|
|
@ -172,7 +172,8 @@ static inline int rdma_ip2gid(struct sockaddr *addr, union ib_gid *gid)
|
||||||
(struct in6_addr *)gid);
|
(struct in6_addr *)gid);
|
||||||
break;
|
break;
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
memcpy(gid->raw, &((struct sockaddr_in6 *)addr)->sin6_addr, 16);
|
*(struct in6_addr *)&gid->raw =
|
||||||
|
((struct sockaddr_in6 *)addr)->sin6_addr;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
Loading…
Reference in New Issue