IP Library › Granted Patent US 9,842,083
Granted Patent B2
US 9,842,083 · App. 14/715,155 · Granted Dec 12, 2017

Using completion queues for RDMA event detection

Inventor: Michael Tsirkin (Yokneam Yillit, IL)
Assignee: Red Hat Israel, Ltd.
G06F15/167H04L12/06H04L12/66H04L49/3018H04L49/3027H04L49/901
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,842,083
App. No.
14/715,155
Granted
Dec 12, 2017
Kind
B2
Abstract

Systems and methods for using completion queues for Remote Direct Memory Access (RDMA) event detection. An example method may comprise: receiving a request to create a queue pair for processing Remote Direct Memory Access (RDMA) requests using an RDMA-enabled network interface controller (RNIC), the queue pair comprising a send queue and a receive queue; associating the queue pair with a completion queue associated with the RNIC, the completion queue employed to store a plurality of completion queue elements associated with completed work requests; receiving a notification of an interrupt associated with the RNIC; and responsive to determining that at least one of a number of send queues associated with the completion queue or a number of receive queues associated with the completion queue exceeds zero, identifying at least one of: a first application registered to be notified of RDMA send events or a second application registered to be notified of RDMA receive events.

Claims (22)

1. A method, comprising:

receiving, by a processing device, a request to create a queue pair for processing Remote Direct Memory Access (RDMA) requests using an RDMA-enabled network interface controller (RNIC), the queue pair comprising a send queue and a receive queue; associating the queue pair with a completion queue associated with the RNIC, the completion queue employed to store a plurality of completion queue elements associated with completed work requests; receiving a notification of an interrupt associated with the RNIC; responsive to determining that a number of send queues associated with the completion queue exceeds zero, identifying an application registered to be notified of RDMA send events; and awakening the application.

2. The method of claim 1 , wherein the send queue is provided by a data structure employed to store a plurality of work queue elements, each work queue element comprising a pointer to a memory buffer for storing incoming RDMA data.

3. The method of claim 1 , wherein the receive queue is provided by a data structure employed to store a plurality of work queue elements, each work queue element comprising a pointer to a memory buffer for storing outgoing RDMA data.

4. The method of claim 1 , wherein associating the queue pair with the completion queue comprises incrementing at least one of: a first counter reflecting the number of send queues associated with the completion queue or a second counter reflecting the number of receive queues associated with the completion queue.

5. The method of claim 4 , further comprising:

responsive to receiving a request to destroy the queue pair, decrementing at least one of: the first counter or the second counter.

6. The method of claim 1 , further comprising:

receiving a request for RDMA send event notifications initiated by the application.

7. A system, comprising:

a memory; and a processing device operatively coupled to the memory, the processing device to: receive a request to create a queue pair for processing Remote Direct Memory Access (RDMA) requests using an RDMA-enabled network interface controller (RNIC), the queue pair comprising a send queue and a receive queue; associate the queue pair with a completion queue associated with the RNIC, the completion queue employed to store a plurality of completion queue elements associated with completed work requests; receive a notification of an interrupt associated with the RNIC; responsive to determining that at least one of a number of send queues associated with the completion queue or a number of receive queues associated with the completion queue exceeds zero, identify at least one of: a first application registered to be notified of RDMA send events or a second application registered to be notified of RDMA receive events; and awaken at least one of: the first application or the second application.

8. The system of claim 7 , wherein the send queue is provided by a data structure employed to store a plurality of work queue elements, each work queue element comprising a pointer to a memory buffer for storing incoming RDMA data.

9. The system of claim 7 , wherein the receive queue is provided by a data structure employed to store a plurality of work queue elements, each work queue element comprising a pointer to a memory buffer for storing outgoing RDMA data.

10. The system of claim 7 , wherein to associate the queue pair with the completion queue, the processing device is to increment at least one of: a first counter reflecting the number of send queues associated with the completion queue or a second counter reflecting the number of receive queues associated with the completion queue.

11. The system of claim 10 , wherein the processing device is further to:

responsive to receiving a request to destroy the queue pair, decrement at least one of: the first counter or the second counter.

12. The system of claim 7 , wherein the processing device is further to:

receive at least one of: a first application-initiated request for RDMA send event notifications or a second application-initiated request for RDMA receive event notifications.

13. A computer-readable non-transitory storage medium comprising executable instructions to cause a processing device to: receive, by the processing device, a request to create a queue pair for processing Remote Direct Memory Access (RDMA) requests using an RDMA-enabled network interface controller (RNIC), the queue pair comprising a send queue and a receive queue; associate the queue pair with a completion queue associated with the RNIC, the completion queue employed to store a plurality of completion queue elements associated with completed work requests; receive a notification of an interrupt associated with the RNIC; responsive to determining that a number of receive queues associated with the completion queue exceeds zero, identify an application registered to be notified of RDMA receive events; and awaken the application.

14. The computer-readable non-transitory storage medium of claim 13 , wherein the send queue is provided by a data structure employed to store a plurality of work queue elements, each work queue element comprising a pointer to a memory buffer for storing incoming RDMA data.

15. The computer-readable non-transitory storage medium of claim 13 , wherein the receive queue is provided by a data structure employed to store a plurality of work queue elements, each work queue element comprising a pointer to a memory buffer for storing outgoing RDMA data.

16. The computer-readable non-transitory storage medium of claim 13 , further comprising executable instructions causing the processing device, responsive to associating the queue pair with the completion queue, to increment at least one of: a first counter reflecting the number of send queues associated with the completion queue or a second counter reflecting the number of receive queues associated with the completion queue.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2015
From: TSIRKIN, MICHAEL
To: RED HAT ISRAEL, LTD.
Reel/Frame 036449/0438 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2015
From: TSIRKIN, MICHAEL
To: RED HAT ISRAEL, LTD.
Reel/Frame 036420/0754 →
Continuity (1)
Related Publication 20160342567A1 · Nov 24, 2016