# US 2019/0171612 A1 · Network adapter with a common queue for both networking and data manipulation work requests

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

- Number: US 2019/0171612 A1
- Document ID: US20190171612A1
- Status: Published application
- Kind: A1
- Application number: 16/224,834
- Filed: 2018-12-19
- Published: 2019-06-06
- Earliest claimed: 2013-03-10
- Assignees: Mellanox Technologies, Ltd.
- Applicants: Mellanox Technologies, Ltd.
- Inventors: Ariel Shahar; Roee Moyal; Ali Ayoub; Michael Kegan
- Web page: https://patentgrep.com/patent/US20190171612A1

## CPC

- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 15/167: using a common memory, e.g. mailbox
- G06F 15/1735: {Network adapters, e.g. SCI, Myrinet (protocol engines H04L69/12)}
- H04L 9/0631: {Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms}
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/3247: {involving digital signatures}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A network adapter includes a network interface that communicates packets over a network, a host interface connected locally to a host processor and to a host memory, and processing circuitry, coupled between the network interface and the host interface, and is configured to receive in a common queue, via the host interface, (i) a processing work item specifying a source buffer in the host memory, a data processing operation, and a first address in the host memory, and (ii) an RDMA write work item specifying the first address, and a second address in a remote memory. In response to the processing work item, the processing circuitry reads data from the source buffer, applies the data processing operation, and stores the processed data in the first address. In response to the RDMA write work item the processing circuitry transmits the processed data, over the network, for storage in the second address.

## Claims

### Claim 1

A network adapter, comprising:
a network interface, configured to transmit and receive data packets over a network;
a host interface, configured to be connected via a local bus to a host processor and to a local host memory of the host processor; and
processing circuitry, which is coupled between the network interface and the host interface and is configured to:
receive in a common work queue, via the host interface, (i) a data processing work item specifying a source buffer in the local host memory, a data processing operation, and a first target address in the local host memory, and (ii) an RDMA write work item specifying the first target address and a second target address in a remote memory,
in response to the data processing work item, read data to be processed from the specified source buffer, produce processed data by applying the specified data processing operation to the data read, and store the processed data in the first target address, and
in response to the RDMA write work item, transmit the processed data in the first target address, via the network interface over the network, for storage in the second target address of the remote memory.

### Claim 2 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to execute the RDMA write work item only in response to completing execution of the data processing work item.

### Claim 3 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to receive a second data processing work item specifying a second data processing operation, before receiving the RDMA write work item, and to execute the RDMA write work item after executing both the data processing work item and the second data processing work item.

### Claim 4 (depends on 3)

The network adapter according to claim 3, wherein the second data processing work item specifies the first target address as input for applying the second data processing operation, and wherein, in response to the second data processing work item, the processing circuitry is configured to apply the second data processing operation to the processed data in the first target address.

### Claim 5 (depends on 3)

The network adapter according to claim 3, wherein the second data processing work item specifies a second source buffer, different from the source buffer, to which to apply the second data processing operation.

### Claim 6 (depends on 1)

The network adapter according to claim 1, wherein the data processing operation is selected from a list of operations comprising: data encryption, data decryption, digital signing of data, data verification using a digital signature, data compression, data decompression, an image processing operation, and a match operation for a regular expression.

### Claim 7 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to receive in the common work queue a sequence of one or more work items specifying respective data processing operations and respective source and target addresses in the local memory, wherein the target address specified in each work item is also specified as the source address in a subsequent work item in the sequence, wherein the processing circuitry is configured to perform the data processing operations by orderly executing the work items in the sequence.

### Claim 8

A method, comprising:
in a network adapter that transmits and receives data packets over a network, and that connects via a local bus to a host processor and to a local host memory of the host processor, receiving in a common work queue (i) a data processing work item specifying a source buffer in the local host memory, a data processing operation, and a first target address in the local host memory, and (ii) an RDMA write work item specifying the first target address and a second target address in a remote memory;
in response to the data processing work item, reading data to be processed from the specified source buffer, producing processed data by applying the specified data processing operation to the data read, and storing the processed data in the first target address; and
in response to the RDMA write work item, transmitting the processed data in the first target address, over the network, for storage in the second target address of the remote memory.

### Claim 9 (depends on 8)

The method according to claim 8, and comprising executing the RDMA write work item only in response to completing execution of the data processing work item.

### Claim 10 (depends on 8)

The method according to claim 8, and comprising receiving a second data processing work item specifying a second data processing operation, before receiving the RDMA write work item, and executing the RDMA write work item after executing both the data processing work item and the second data processing work item.

### Claim 11 (depends on 10)

The method according to claim 10, wherein the second data processing work item specifies the first target address as input for applying the second data processing operation, and in response to the second data processing work item, applying the second data processing operation to the processed data in the first target address.

### Claim 12 (depends on 10)

The method according to claim 10, wherein the second data processing work item specifies a second source buffer, different from the source buffer, to which to apply the second data processing operation.

### Claim 13 (depends on 8)

The method according to claim 8, wherein the data processing operation is selected from a list of operations comprising: data encryption, data decryption, digital signing of data, data verification using a digital signature, data compression, data decompression, an image processing operation, and a match operation for a regular expression.

### Claim 14 (depends on 8)

The method according to claim 8, and comprising receiving in the common work queue a sequence of one or more work items specifying respective data processing operations and respective source and target addresses in the local memory, wherein the target address specified in each work item is also specified as the source address in a subsequent work item in the sequence, and performing the data processing operations by orderly executing the work items in the sequence.

### Claim 15

A network adapter, comprising:
a network interface, configured to transmit and receive data packets over a network;
a host interface, configured to be connected via a local bus to a host processor and to a local host memory of the host processor; and
processing circuitry, which is coupled between the network interface and the host interface and is configured to:
receive in a common work queue, via the host interface, (i) an RDMA read work item specifying a source buffer in a remote memory and a first target address in the local host memory, and (ii) a data processing work item specifying the first target, a data processing operation, and a second target address in the local host memory,
in response to the RDMA read work item, receive data to be processed from the source buffer, via the network interface over the network, and store the received data in the first target address of the local memory,
in response to the data processing work item, read data to be processed from the first target address, produce processed data by applying the specified data processing operation to the data read, and store the processed data in the second target address in the local host memory.

### Claim 16 (depends on 15)

The network adapter according to claim 15, wherein the processing circuitry is configured to execute the data processing work item only in response to completing execution of the RDMA read work item.

### Claim 17 (depends on 15)

The network adapter according to claim 15, wherein the processing circuitry is configured to receive a second data processing work item specifying a second data processing operation, after receiving the RDMA read work item, and to execute both the data processing work item and the second data processing work item after executing the RDMA read work item.

### Claim 18 (depends on 17)

The network adapter according to claim 17, wherein the second data processing work item specifies the second target address as a source buffer for applying the second data processing operation, and wherein, in response to the second data processing work item, the processing circuitry is configured to apply the second data processing operation to the processed data in the second target address.

### Claim 19 (depends on 17)

The network adapter according to claim 17, wherein the second data processing work item specifies a second source buffer, different from the second target address, to which to apply the second data processing operation.

### Claim 20 (depends on 15)

The network adapter according to claim 15, wherein the data processing operation is selected from a list of operations comprising: data encryption, data decryption, digital signing of data, data verification using a digital signature, data compression, data decompression, an image processing operation, and a match operation for a regular expression.

### Claim 21

A method, comprising:
in a network adapter that transmits and receives data packets over a network, and that connects via a local bus to a host processor and to a local host memory of the host processor, receiving in a common work queue, (i) an RDMA read work item specifying a source buffer in a remote memory and a first target address in the local host memory, and (ii) a data processing work item specifying the first target, a data processing operation, and a second target address in the local host memory;
in response to the RDMA read work item, receiving data to be processed from the source buffer in the remote memory, over the network, and storing the received data in the first target address of the local memory;
in response to the data processing work item, reading data to be processed from the first target address, producing processed data by applying the specified data processing operation to the data read, and storing the processed data in the second target address in the local host memory.

### Claim 22 (depends on 21)

The method according to claim 21, and comprising executing the data processing work item only in response to completing execution of the RDMA read work item.

### Claim 23 (depends on 21)

The method according to claim 21, and comprising receiving a second data processing work item specifying a second data processing operation, after receiving the RDMA read work item, and executing both the data processing work item and the second data processing work item after executing the RDMA read work item.

### Claim 24 (depends on 23)

The method according to claim 23, wherein the second data processing work item specifies the second target address as a source buffer for applying the second data processing operation, and wherein, in response to the second data processing work item, applying the second data processing operation to the processed data in the second target address.

### Claim 25 (depends on 23)

The method according to claim 23, wherein the second data processing work item specifies a second source buffer, different from the second target address, to which to apply the second data processing operation.

### Claim 26 (depends on 21)

The method according to claim 21, wherein the data processing operation is selected from a list of operations comprising: data encryption, data decryption, digital signing of data, data verification using a digital signature, data compression, data decompression, an image processing operation, and a match operation for a regular expression.
