@@ -302,7 +302,6 @@ static void hns_roce_ib_free_cq_buf(struct hns_roce_dev *hr_dev,
302
302
303
303
struct ib_cq * hns_roce_ib_create_cq (struct ib_device * ib_dev ,
304
304
const struct ib_cq_init_attr * attr ,
305
- struct ib_ucontext * context ,
306
305
struct ib_udata * udata )
307
306
{
308
307
struct hns_roce_dev * hr_dev = to_hr_dev (ib_dev );
@@ -314,6 +313,8 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
314
313
int vector = attr -> comp_vector ;
315
314
int cq_entries = attr -> cqe ;
316
315
int ret ;
316
+ struct hns_roce_ucontext * context = rdma_udata_to_drv_context (
317
+ udata , struct hns_roce_ucontext , ibucontext );
317
318
318
319
if (cq_entries < 1 || cq_entries > hr_dev -> caps .max_cqes ) {
319
320
dev_err (dev , "Creat CQ failed. entries=%d, max=%d\n" ,
@@ -332,7 +333,7 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
332
333
hr_cq -> ib_cq .cqe = cq_entries - 1 ;
333
334
spin_lock_init (& hr_cq -> lock );
334
335
335
- if (context ) {
336
+ if (udata ) {
336
337
if (ib_copy_from_udata (& ucmd , udata , sizeof (ucmd ))) {
337
338
dev_err (dev , "Failed to copy_from_udata.\n" );
338
339
ret = - EFAULT ;
@@ -350,8 +351,7 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
350
351
351
352
if ((hr_dev -> caps .flags & HNS_ROCE_CAP_FLAG_RECORD_DB ) &&
352
353
(udata -> outlen >= sizeof (resp ))) {
353
- ret = hns_roce_db_map_user (to_hr_ucontext (context ),
354
- udata , ucmd .db_addr ,
354
+ ret = hns_roce_db_map_user (context , udata , ucmd .db_addr ,
355
355
& hr_cq -> db );
356
356
if (ret ) {
357
357
dev_err (dev , "cq record doorbell map failed!\n" );
@@ -362,7 +362,7 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
362
362
}
363
363
364
364
/* Get user space parameters */
365
- uar = & to_hr_ucontext ( context ) -> uar ;
365
+ uar = & context -> uar ;
366
366
} else {
367
367
if (hr_dev -> caps .flags & HNS_ROCE_CAP_FLAG_RECORD_DB ) {
368
368
ret = hns_roce_alloc_db (hr_dev , & hr_cq -> db , 1 );
@@ -401,15 +401,15 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
401
401
* problems if tptr is set to zero here, so we initialze it in user
402
402
* space.
403
403
*/
404
- if (!context && hr_cq -> tptr_addr )
404
+ if (!udata && hr_cq -> tptr_addr )
405
405
* hr_cq -> tptr_addr = 0 ;
406
406
407
407
/* Get created cq handler and carry out event */
408
408
hr_cq -> comp = hns_roce_ib_cq_comp ;
409
409
hr_cq -> event = hns_roce_ib_cq_event ;
410
410
hr_cq -> cq_depth = cq_entries ;
411
411
412
- if (context ) {
412
+ if (udata ) {
413
413
resp .cqn = hr_cq -> cqn ;
414
414
ret = ib_copy_to_udata (udata , & resp , sizeof (resp ));
415
415
if (ret )
@@ -422,21 +422,20 @@ struct ib_cq *hns_roce_ib_create_cq(struct ib_device *ib_dev,
422
422
hns_roce_free_cq (hr_dev , hr_cq );
423
423
424
424
err_dbmap :
425
- if (context && (hr_dev -> caps .flags & HNS_ROCE_CAP_FLAG_RECORD_DB ) &&
425
+ if (udata && (hr_dev -> caps .flags & HNS_ROCE_CAP_FLAG_RECORD_DB ) &&
426
426
(udata -> outlen >= sizeof (resp )))
427
- hns_roce_db_unmap_user (to_hr_ucontext (context ),
428
- & hr_cq -> db );
427
+ hns_roce_db_unmap_user (context , & hr_cq -> db );
429
428
430
429
err_mtt :
431
430
hns_roce_mtt_cleanup (hr_dev , & hr_cq -> hr_buf .hr_mtt );
432
- if (context )
431
+ if (udata )
433
432
ib_umem_release (hr_cq -> umem );
434
433
else
435
434
hns_roce_ib_free_cq_buf (hr_dev , & hr_cq -> hr_buf ,
436
435
hr_cq -> ib_cq .cqe );
437
436
438
437
err_db :
439
- if (!context && (hr_dev -> caps .flags & HNS_ROCE_CAP_FLAG_RECORD_DB ))
438
+ if (!udata && (hr_dev -> caps .flags & HNS_ROCE_CAP_FLAG_RECORD_DB ))
440
439
hns_roce_free_db (hr_dev , & hr_cq -> db );
441
440
442
441
err_cq :
0 commit comments