diff options
Diffstat (limited to 'include/rdma')
-rw-r--r-- | include/rdma/ib_verbs.h | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 17cc309d03ef..5342ac64ed1a 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -431,9 +431,11 @@ struct ib_wc { | |||
431 | u8 port_num; /* valid only for DR SMPs on switches */ | 431 | u8 port_num; /* valid only for DR SMPs on switches */ |
432 | }; | 432 | }; |
433 | 433 | ||
434 | enum ib_cq_notify { | 434 | enum ib_cq_notify_flags { |
435 | IB_CQ_SOLICITED, | 435 | IB_CQ_SOLICITED = 1 << 0, |
436 | IB_CQ_NEXT_COMP | 436 | IB_CQ_NEXT_COMP = 1 << 1, |
437 | IB_CQ_SOLICITED_MASK = IB_CQ_SOLICITED | IB_CQ_NEXT_COMP, | ||
438 | IB_CQ_REPORT_MISSED_EVENTS = 1 << 2, | ||
437 | }; | 439 | }; |
438 | 440 | ||
439 | enum ib_srq_attr_mask { | 441 | enum ib_srq_attr_mask { |
@@ -990,7 +992,7 @@ struct ib_device { | |||
990 | struct ib_wc *wc); | 992 | struct ib_wc *wc); |
991 | int (*peek_cq)(struct ib_cq *cq, int wc_cnt); | 993 | int (*peek_cq)(struct ib_cq *cq, int wc_cnt); |
992 | int (*req_notify_cq)(struct ib_cq *cq, | 994 | int (*req_notify_cq)(struct ib_cq *cq, |
993 | enum ib_cq_notify cq_notify); | 995 | enum ib_cq_notify_flags flags); |
994 | int (*req_ncomp_notif)(struct ib_cq *cq, | 996 | int (*req_ncomp_notif)(struct ib_cq *cq, |
995 | int wc_cnt); | 997 | int wc_cnt); |
996 | struct ib_mr * (*get_dma_mr)(struct ib_pd *pd, | 998 | struct ib_mr * (*get_dma_mr)(struct ib_pd *pd, |
@@ -1419,14 +1421,34 @@ int ib_peek_cq(struct ib_cq *cq, int wc_cnt); | |||
1419 | /** | 1421 | /** |
1420 | * ib_req_notify_cq - Request completion notification on a CQ. | 1422 | * ib_req_notify_cq - Request completion notification on a CQ. |
1421 | * @cq: The CQ to generate an event for. | 1423 | * @cq: The CQ to generate an event for. |
1422 | * @cq_notify: If set to %IB_CQ_SOLICITED, completion notification will | 1424 | * @flags: |
1423 | * occur on the next solicited event. If set to %IB_CQ_NEXT_COMP, | 1425 | * Must contain exactly one of %IB_CQ_SOLICITED or %IB_CQ_NEXT_COMP |
1424 | * notification will occur on the next completion. | 1426 | * to request an event on the next solicited event or next work |
1427 | * completion at any type, respectively. %IB_CQ_REPORT_MISSED_EVENTS | ||
1428 | * may also be |ed in to request a hint about missed events, as | ||
1429 | * described below. | ||
1430 | * | ||
1431 | * Return Value: | ||
1432 | * < 0 means an error occurred while requesting notification | ||
1433 | * == 0 means notification was requested successfully, and if | ||
1434 | * IB_CQ_REPORT_MISSED_EVENTS was passed in, then no events | ||
1435 | * were missed and it is safe to wait for another event. In | ||
1436 | * this case is it guaranteed that any work completions added | ||
1437 | * to the CQ since the last CQ poll will trigger a completion | ||
1438 | * notification event. | ||
1439 | * > 0 is only returned if IB_CQ_REPORT_MISSED_EVENTS was passed | ||
1440 | * in. It means that the consumer must poll the CQ again to | ||
1441 | * make sure it is empty to avoid missing an event because of a | ||
1442 | * race between requesting notification and an entry being | ||
1443 | * added to the CQ. This return value means it is possible | ||
1444 | * (but not guaranteed) that a work completion has been added | ||
1445 | * to the CQ since the last poll without triggering a | ||
1446 | * completion notification event. | ||
1425 | */ | 1447 | */ |
1426 | static inline int ib_req_notify_cq(struct ib_cq *cq, | 1448 | static inline int ib_req_notify_cq(struct ib_cq *cq, |
1427 | enum ib_cq_notify cq_notify) | 1449 | enum ib_cq_notify_flags flags) |
1428 | { | 1450 | { |
1429 | return cq->device->req_notify_cq(cq, cq_notify); | 1451 | return cq->device->req_notify_cq(cq, flags); |
1430 | } | 1452 | } |
1431 | 1453 | ||
1432 | /** | 1454 | /** |