File tree Expand file tree Collapse file tree 2 files changed +33
-2
lines changed
drivers/infiniband/hw/mana Expand file tree Collapse file tree 2 files changed +33
-2
lines changed Original file line number Diff line number Diff line change @@ -658,7 +658,7 @@ int mana_ib_create_eqs(struct mana_ib_dev *mdev)
658
658
{
659
659
struct gdma_context * gc = mdev_to_gc (mdev );
660
660
struct gdma_queue_spec spec = {};
661
- int err ;
661
+ int err , i ;
662
662
663
663
spec .type = GDMA_EQ ;
664
664
spec .monitor_avl_buf = false;
@@ -672,12 +672,42 @@ int mana_ib_create_eqs(struct mana_ib_dev *mdev)
672
672
if (err )
673
673
return err ;
674
674
675
+ mdev -> eqs = kcalloc (mdev -> ib_dev .num_comp_vectors , sizeof (struct gdma_queue * ),
676
+ GFP_KERNEL );
677
+ if (!mdev -> eqs ) {
678
+ err = - ENOMEM ;
679
+ goto destroy_fatal_eq ;
680
+ }
681
+
682
+ for (i = 0 ; i < mdev -> ib_dev .num_comp_vectors ; i ++ ) {
683
+ spec .eq .msix_index = (i + 1 ) % gc -> num_msix_usable ;
684
+ err = mana_gd_create_mana_eq (mdev -> gdma_dev , & spec , & mdev -> eqs [i ]);
685
+ if (err )
686
+ goto destroy_eqs ;
687
+ }
688
+
675
689
return 0 ;
690
+
691
+ destroy_eqs :
692
+ while (i -- > 0 )
693
+ mana_gd_destroy_queue (gc , mdev -> eqs [i ]);
694
+ kfree (mdev -> eqs );
695
+ destroy_fatal_eq :
696
+ mana_gd_destroy_queue (gc , mdev -> fatal_err_eq );
697
+ return err ;
676
698
}
677
699
678
700
void mana_ib_destroy_eqs (struct mana_ib_dev * mdev )
679
701
{
680
- mana_gd_destroy_queue (mdev_to_gc (mdev ), mdev -> fatal_err_eq );
702
+ struct gdma_context * gc = mdev_to_gc (mdev );
703
+ int i ;
704
+
705
+ mana_gd_destroy_queue (gc , mdev -> fatal_err_eq );
706
+
707
+ for (i = 0 ; i < mdev -> ib_dev .num_comp_vectors ; i ++ )
708
+ mana_gd_destroy_queue (gc , mdev -> eqs [i ]);
709
+
710
+ kfree (mdev -> eqs );
681
711
}
682
712
683
713
int mana_ib_gd_create_rnic_adapter (struct mana_ib_dev * mdev )
Original file line number Diff line number Diff line change @@ -56,6 +56,7 @@ struct mana_ib_dev {
56
56
struct gdma_dev * gdma_dev ;
57
57
mana_handle_t adapter_handle ;
58
58
struct gdma_queue * fatal_err_eq ;
59
+ struct gdma_queue * * eqs ;
59
60
struct mana_ib_adapter_caps adapter_caps ;
60
61
};
61
62
You can’t perform that action at this time.
0 commit comments