aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/ocrdma/ocrdma_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/ocrdma/ocrdma_main.c')
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_main.c12
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);