diff options
Diffstat (limited to 'drivers/infiniband/hw/ocrdma/ocrdma_main.c')
-rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma_main.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c index b0b2257b8e04..7a2b59aca004 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c | |||
@@ -239,7 +239,7 @@ static int ocrdma_register_device(struct ocrdma_dev *dev) | |||
239 | 239 | ||
240 | dev->ibdev.node_type = RDMA_NODE_IB_CA; | 240 | dev->ibdev.node_type = RDMA_NODE_IB_CA; |
241 | dev->ibdev.phys_port_cnt = 1; | 241 | dev->ibdev.phys_port_cnt = 1; |
242 | dev->ibdev.num_comp_vectors = 1; | 242 | dev->ibdev.num_comp_vectors = dev->eq_cnt; |
243 | 243 | ||
244 | /* mandatory verbs. */ | 244 | /* mandatory verbs. */ |
245 | dev->ibdev.query_device = ocrdma_query_device; | 245 | dev->ibdev.query_device = ocrdma_query_device; |
@@ -329,6 +329,8 @@ static int ocrdma_alloc_resources(struct ocrdma_dev *dev) | |||
329 | if (dev->stag_arr == NULL) | 329 | if (dev->stag_arr == NULL) |
330 | goto alloc_err; | 330 | goto alloc_err; |
331 | 331 | ||
332 | ocrdma_alloc_pd_pool(dev); | ||
333 | |||
332 | spin_lock_init(&dev->av_tbl.lock); | 334 | spin_lock_init(&dev->av_tbl.lock); |
333 | spin_lock_init(&dev->flush_q_lock); | 335 | spin_lock_init(&dev->flush_q_lock); |
334 | return 0; | 336 | return 0; |
@@ -491,6 +493,9 @@ static struct ocrdma_dev *ocrdma_add(struct be_dev_info *dev_info) | |||
491 | spin_unlock(&ocrdma_devlist_lock); | 493 | spin_unlock(&ocrdma_devlist_lock); |
492 | /* Init stats */ | 494 | /* Init stats */ |
493 | ocrdma_add_port_stats(dev); | 495 | ocrdma_add_port_stats(dev); |
496 | /* Interrupt Moderation */ | ||
497 | INIT_DELAYED_WORK(&dev->eqd_work, ocrdma_eqd_set_task); | ||
498 | schedule_delayed_work(&dev->eqd_work, msecs_to_jiffies(1000)); | ||
494 | 499 | ||
495 | pr_info("%s %s: %s \"%s\" port %d\n", | 500 | pr_info("%s %s: %s \"%s\" port %d\n", |
496 | dev_name(&dev->nic_info.pdev->dev), hca_name(dev), | 501 | dev_name(&dev->nic_info.pdev->dev), hca_name(dev), |
@@ -528,11 +533,12 @@ static void ocrdma_remove(struct ocrdma_dev *dev) | |||
528 | /* first unregister with stack to stop all the active traffic | 533 | /* first unregister with stack to stop all the active traffic |
529 | * of the registered clients. | 534 | * of the registered clients. |
530 | */ | 535 | */ |
531 | ocrdma_rem_port_stats(dev); | 536 | cancel_delayed_work_sync(&dev->eqd_work); |
532 | ocrdma_remove_sysfiles(dev); | 537 | ocrdma_remove_sysfiles(dev); |
533 | |||
534 | ib_unregister_device(&dev->ibdev); | 538 | ib_unregister_device(&dev->ibdev); |
535 | 539 | ||
540 | ocrdma_rem_port_stats(dev); | ||
541 | |||
536 | spin_lock(&ocrdma_devlist_lock); | 542 | spin_lock(&ocrdma_devlist_lock); |
537 | list_del_rcu(&dev->entry); | 543 | list_del_rcu(&dev->entry); |
538 | spin_unlock(&ocrdma_devlist_lock); | 544 | spin_unlock(&ocrdma_devlist_lock); |