IP Library Granted Patent US 12,224,950
Granted Patent B2
US 12,224,950 · App. 17/979,018 · Granted Feb 11, 2025

Efficient network device work queue

Inventors: Gal Yefet (Haifa, IL); Daniel Marcovitch (Yokneam Illit, IL); Roee Moyal (Yokneam Illit, IL); Gil Bloch (Zichron Yaakov, IL); Ariel Shahar (Jerusalem, IL); Yossef Itigin (Hod Hasharon, IL)
Assignee: Mellanox Technologies, Ltd
H04L47/6255H04L47/6225H04L47/6275
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 12,224,950
App. No.
17/979,018
Granted
Feb 11, 2025
Kind
B2
Abstract

In one embodiment, a system includes a memory to store a work queue including work queue entry slots, a processing device to write work queue entries to the work queue in a consecutive and cyclic manner, and a network device including a network interface to share packet over a network, and packet processing circuitry to read the work queue entries from the work queue in a consecutive and cyclic manner, the work queue entries indicating work to be performed associated with the packets, dequeue respective ones of the work queue entries read from the work queue responsively to reading the respective work queue entries from the work queue, add the work queue entries to an execution database used to track execution of the work queue entries, and execute the work queue entries in the execution database.

Claims (72)

1. A system comprising:

a memory to store a work queue including a plurality of work queue entry slots;

a processing device to write work queue entries to the work queue in the work queue entry slots in a consecutive and cyclic manner so that a new work queue entry is added to a next one of the work queue entry slots; and

a network device including: a network interface to share packets over a network; and packet processing circuitry to:

read the work queue entries from the work queue in a consecutive and cyclic manner, the work queue entries indicating work to be performed associated with the packets;

dequeue respective ones of the work queue entries read from the work queue responsively to reading the respective work queue entries from the work queue;

add the work queue entries to an execution database used to track execution of the work queue entries; and

execute the work queue entries in the execution database.

2. The system according to claim 1 , wherein the respective work queue entries are dequeued from the work queue independently of completion of the execution of the respective work queue entries.

3. The system according to claim 1 , wherein the memory is disposed in the processing device, or the network device, or a peer device.

4. The system according to claim 1 , further comprising an internal hardware database, which includes the execution database.

5. The system according to claim 1 , wherein the work queue entries are executed in an order different to the order of the work queue entries in the work queue.

6. The system according to claim 1 , wherein the packet processing circuitry is configured to generate execution completion notices notifying the processing device that the work queue entries have completed execution.

7. The system according to claim 6 , wherein:

the work queue entries include respective identifications which identify the work queue entries independently of the identifications of the work queue slots; and

the packet processing circuitry is configured to generate the execution completion notices to include the respective identifications of the work queue entries that have completed execution.

8. The system according to claim 6 , wherein:

the processing device is configured to define a work queue entry group for a group of the work queue entries; and

the packet processing circuitry is configured to generate one of the execution completion notices for the work queue entry group notifying the processing device when all the work queue entries in the work queue entry group have completed execution.

9. The system according to claim 8 , wherein the work queue entry group is user defined.

10. The system according to claim 6 , wherein the packet processing circuitry is configured to generate the execution completion notices to provide the processing device of an indication of at least one of the work queue entry slots that are occupied with work queue entries and/or empty.

11. The system according to claim 6 , wherein the packet processing circuitry is configured to generate consumption notices to notify the processing device when work queue entries are dequeued from the work queue.

12. The system according to claim 6 , wherein the packet processing circuitry is configured to generate a consumption notice to notify the processing device when a batch of work queue entries are dequeued from the work queue.

13. The system according to claim 6 , further comprising a work queue status counter, wherein the packet processing circuitry is configured to update the work queue status counter to indicate the work queue entries that have been dequeued from the work queue.

14. The system according to claim 1 , wherein the packet processing circuitry is configured to generate consumption notices to notify the processing device when work queue entries are dequeued from the work queue.

15. The system according to claim 1 , wherein the packet processing circuitry is configured to generate a consumption notice to notify the processing device when a batch of work queue entries are dequeued from the work queue.

16. The system according to claim 1 , further comprising a work queue status counter, wherein the packet processing circuitry is configured to update the work queue status counter to indicate the work queue entries that have been dequeued from the work queue.

17. A work queue management method, comprising:

storing a work queue including a plurality of work queue entry slots;

writing work queue entries to the work queue in the work queue entry slots in a consecutive and cyclic manner so that a new work queue entry is added to a next one of the work queue entry slots;

reading by a network device the work queue entries from the work queue in a consecutive and cyclic manner, the work queue entries indicating work to be performed associated with packets;

dequeuing by a network device respective ones of the work queue entries read from the work queue responsively to reading the respective work queue entries from the work queue;

adding by a network device the work queue entries to an execution database used to track execution of the work queue entries; and

executing by a network device the work queue entries in the execution database.

18. The method according to claim 17 , wherein the respective work queue entries are dequeued from the work queue independently of completion of the execution of the respective work queue entries.

19. The method according to claim 17 , wherein the work queue entries are executed in an order different to the order of the work queue entries in the work queue.

20. The method according to claim 17 , further comprising generating execution completion notices notifying that the work queue entries have completed execution.

21. The method according to claim 20 , wherein:

the work queue entries include respective identifications which identify the work queue entries independently of the identifications of the work queue slots; and

the generating includes generating the execution completion notices to include the respective identifications of the work queue entries that have completed execution.

22. The method according to claim 20 , further comprising defining a work queue entry group for a group of the work queue entries, and wherein the generating includes generating one of the execution completion notices for the work queue entry group notifying when all the work queue entries in the work queue entry group have completed execution.

23. The method according to claim 22 , wherein the work queue entry group is user defined.

24. The method according to claim 20 , wherein the generating includes generating the execution completion notices to provide an indication of at least one of the work queue entry slots that are occupied with work queue entries and/or empty.

25. The method according to claim 17 , further comprising generating consumption notices to notify when work queue entries are dequeued from the work queue.

26. The method according to claim 17 , further comprising generating a consumption notice to notify when a batch of work queue entries are dequeued from the work queue.

27. The method according to claim 17 , further comprising updating a work queue status counter to indicate the work queue entries that have been dequeued from the work queue.

28. A network device comprising:

a network interface to share packets over a network; and

packet processing circuitry to:

read work queue entries from a work queue in a consecutive and cyclic manner, the work queue entries indicating work to be performed associated with the packets;

dequeue respective ones of the work queue entries read from the work queue responsively to reading the respective work queue entries from the work queue;

add the work queue entries to an execution database used to track execution of the work queue entries; and

execute the work queue entries in the execution database.

29. The device according to claim 28 , wherein the respective work queue entries are dequeued from the work queue independently of completion of the execution of the respective work queue entries.

30. The device according to claim 28 , further comprising a memory to store the work queue.

31. The device according to claim 28 , further comprising an internal hardware database, which includes the execution database.

32. The device according to claim 28 , wherein the work queue entries are executed in an order different to the order of the work queue entries in the work queue.

33. The device according to claim 28 , wherein the packet processing circuitry is configured to generate execution completion notices notifying a processing device that the work queue entries have completed execution.

34. The device according to claim 33 , wherein:

the work queue entries include respective identifications which identify the work queue entries independently of the identifications of the work queue slots; and

the packet processing circuitry is configured to generate the execution completion notices to include the respective identifications of the work queue entries that have completed execution.

35. The device according to claim 33 , wherein:

a work queue entry group defines a group of the work queue entries; and

the packet processing circuitry is configured to generate one of the execution completion notices for the work queue entry group notifying the processing device when all the work queue entries in the work queue entry group have completed execution.

36. The device according to claim 35 , wherein the work queue entry group is user defined.

37. The device according to claim 33 , wherein the packet processing circuitry is configured to generate the execution completion notices to provide the processing device of an indication of at least one of the work queue entry slots that are occupied with work queue entries and/or empty.

38. The device according to claim 33 , wherein the packet processing circuitry is configured to generate consumption notices to notify the processing device when work queue entries are dequeued from the work queue.

39. The device according to claim 33 , wherein the packet processing circuitry is configured to generate a consumption notice to notify the processing device when a batch of work queue entries are dequeued from the work queue.

40. The device according to claim 33 , wherein the packet processing circuitry is configured to update a work queue status counter to indicate the work queue entries that have been dequeued from the work queue.

41. The device according to claim 28 , wherein the packet processing circuitry is configured to generate consumption notices to notify a processing device when work queue entries are dequeued from the work queue.

42. The device according to claim 28 , wherein the packet processing circuitry is configured to generate a consumption notice to notify a processing device when a batch of work queue entries are dequeued from the work queue.

43. The device according to claim 28 , wherein the packet processing circuitry is configured to update a work queue status counter to indicate the work queue entries that have been dequeued from the work queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2022
From: YEFET, GAL; MARCOVITCH, DANIEL; MOYAL, ROEE; BLOCH, GIL; SHAHAR, ARIEL; ITIGIN, YOSSEF
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 061624/0925 →
Continuity (1)
Related Publication 20240146664A1 · May 2, 2024
References Cited (67)
US 5347637A · Halford · 1994 [cited by applicant]
US 6041058A · Flanders et al. · 2000 [cited by applicant]
US 6704831B1 · Avery · 2004 [cited by examiner]
US 7286549B2 · Gaur · 2007 [cited by examiner]
US 7346707B1 · Erimli · 2008 [cited by examiner]
US 7535907B2 · Hussain · 2009 [cited by examiner]
US 7813277B2 · Okholm · 2010 [cited by examiner]
US 7895431B2 · Bouchard · 2011 [cited by examiner]
US 8095683B2 · Balasubramaniam Chandra · 2012 [cited by applicant]
US 8111707B2 · Riddle · 2012 [cited by examiner]
US 8208380B1 · Nachum et al. · 2012 [cited by applicant]
US 8279885B2 · Riddle · 2012 [cited by examiner]
US 8913264B2 · Skvirski · 2014 [cited by applicant]
US 9141548B2 · Asher · 2015 [cited by examiner]
US 9397938B2 · Folsom · 2016 [cited by examiner]
US 9680742B2 · Tompkins · 2017 [cited by examiner]
US 9811467B2 · Snyder, II · 2017 [cited by examiner]
US 10033607B2 · Badea et al. · 2018 [cited by applicant]
US 10210125B2 · Burstein · 2019 [cited by applicant]
US 10230810B1 · Bhide et al. · 2019 [cited by applicant]
US 10277518B1 · Matthews et al. · 2019 [cited by applicant]
US 10581762B2 · Shpiner · 2020 [cited by examiner]
US 10834006B2 · Levy et al. · 2020 [cited by applicant]
US 10999366B2 · Gafni et al. · 2021 [cited by applicant]
US 11327890B1 · Mukherjee · 2022 [cited by examiner]
US 11374872B1 · Danivas · 2022 [cited by examiner]
US 11451493B2 · Yefet et al. · 2022 [cited by applicant]
US 11513958B1 · Mukherjee · 2022 [cited by examiner]
US 20010055274A1 · Hegge et al. · 2001 [cited by applicant]
US 20040003094A1 · See · 2004 [cited by applicant]
US 20060056406A1 · Bouchard · 2006 [cited by examiner]
US 20060265561A1 · Boyd et al. · 2006 [cited by applicant]
US 20070223385A1 · Berly et al. · 2007 [cited by applicant]
US 20080279102A1 · Sankaran et al. · 2008 [cited by applicant]
US 20090161547A1 · Riddle · 2009 [cited by examiner]
US 20130258858A1 · Cherian et al. · 2013 [cited by applicant]
US 20140078915A1 · Edsall et al. · 2014 [cited by applicant]
US 20140089450A1 · Raindel et al. · 2014 [cited by applicant]
US 20140223111A1 · Dinkjian et al. · 2014 [cited by applicant]
US 20140280674A1 · Arramreddy et al. · 2014 [cited by applicant]
US 20140286352A1 · Turgeman et al. · 2014 [cited by applicant]
US 20140344536A1 · Benisty et al. · 2014 [cited by applicant]
US 20150071079A1 · Kadosh et al. · 2015 [cited by applicant]
US 20150134875A1 · Veal · 2015 [cited by applicant]
US 20150220360A1 · Snyder, II · 2015 [cited by examiner]
US 20150249604A1 · Folsom · 2015 [cited by examiner]
US 20150254104A1 · Kessler et al. · 2015 [cited by applicant]
US 20150355883A1 · Kegel · 2015 [cited by applicant]
US 20160087916A1 · Janardhanan · 2016 [cited by applicant]
US 20170104642A1 · Miura et al. · 2017 [cited by applicant]
US 20170279817A1 · Campbell et al. · 2017 [cited by applicant]
US 20170337010A1 · Kriss et al. · 2017 [cited by applicant]
US 20170339074A1 · Melman et al. · 2017 [cited by applicant]
US 20180123933A1 · Yamashima et al. · 2018 [cited by applicant]
US 20180183733A1 · Dcruz et al. · 2018 [cited by applicant]
US 20190327190A1 · Browne et al. · 2019 [cited by applicant]
US 20190334799A1 · Iizuka et al. · 2019 [cited by applicant]
US 20200106740A1 · Bangalore Krishnamurthy · 2020 [cited by applicant]
US 20200371708A1 · Karmani et al. · 2020 [cited by applicant]
CN 1529256A · 2004 [cited by applicant]
Rozenbaum et al., U.S. Appl. No. 17/714,207, filed Apr. 6, 2022. [cited by applicant]
Wikipedia, “Direct Memory Access,” pp. 1-7, last edited Nov. 4, 2018. [cited by applicant]
Tsirkin et al., “Virtual I/O Device (VIRTIO)”, Version 1.1, OASIS Open Committee Specification 01, pp. 1-126, Apr. 11, 2019 as downloaded from https://docs.oasis-open.org/virtio/virtio/v1.1/virtio-v1.1.html. [cited by applicant]
NVM Express Inc., “NVM Express® Base Specification”, Revision 2.0b, pp. 1-455, Jan. 6, 2022 as downloaded from https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-2.0b-2021.12.18-Ratified.pdf. [cited by applicant]
PCI-SIG, “PCI Express® Base Specification”, Revision 6.0, pp. 1-1923, Dec. 16, 2021. [cited by applicant]
CN Application # 202010419130.4 Office Action dated Feb. 29, 2024. [cited by applicant]
U.S. Appl. No. 17/714,207 Office Action dated May 21, 2024. [cited by applicant]