# US 12,224,950 B2 · Efficient network device work queue

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,224,950 B2
- Document ID: US12224950B2
- Status: Granted
- Kind: B2
- Application number: 17/979,018
- Filed: 2022-11-02
- Published: 2024-05-02
- Granted: 2025-02-11
- Earliest claimed: 2022-11-02
- Assignees: Mellanox Technologies, Ltd.
- Applicants: Mellanox Technologies, Ltd.
- Inventors: Gal Yefet; Daniel Marcovitch; Roee Moyal; Gil Bloch; Ariel Shahar; Yossef Itigin
- Web page: https://patentgrep.com/patent/US12224950B2

## CPC

- H04L 47/6255: {queue load conditions, e.g. longest queue first}
- H04L 47/6225: {Fixed service order, e.g. Round Robin}
- H04L 47/6275: based on priority
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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

### Claim 4 (depends on 1)

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

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 6)

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.

### Claim 8 (depends on 6)

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.

### Claim 9 (depends on 8)

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

### Claim 10 (depends on 6)

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.

### Claim 11 (depends on 6)

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.

### Claim 12 (depends on 6)

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.

### Claim 13 (depends on 6)

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.

### Claim 14 (depends on 1)

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.

### Claim 15 (depends on 1)

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.

### Claim 16 (depends on 1)

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.

### Claim 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.

### Claim 18 (depends on 17)

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.

### Claim 19 (depends on 17)

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.

### Claim 20 (depends on 17)

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

### Claim 21 (depends on 20)

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.

### Claim 22 (depends on 20)

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.

### Claim 23 (depends on 22)

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

### Claim 24 (depends on 20)

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.

### Claim 25 (depends on 17)

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

### Claim 26 (depends on 17)

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.

### Claim 27 (depends on 17)

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.

### Claim 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.

### Claim 29 (depends on 28)

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.

### Claim 30 (depends on 28)

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

### Claim 31 (depends on 28)

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

### Claim 32 (depends on 28)

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.

### Claim 33 (depends on 28)

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.

### Claim 34 (depends on 33)

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.

### Claim 35 (depends on 33)

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.

### Claim 36 (depends on 35)

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

### Claim 37 (depends on 33)

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.

### Claim 38 (depends on 33)

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.

### Claim 39 (depends on 33)

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.

### Claim 40 (depends on 33)

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.

### Claim 41 (depends on 28)

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.

### Claim 42 (depends on 28)

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.

### Claim 43 (depends on 28)

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.
