# US 11,451,493 B2 · Connection management in a network adapter

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

- Number: US 11,451,493 B2
- Document ID: US11451493B2
- Status: Granted
- Kind: B2
- Application number: 17/142,366
- Filed: 2021-01-06
- Published: 2022-07-07
- Granted: 2022-09-20
- Earliest claimed: 2021-01-06
- Assignees: Mellanox Technologies, Ltd.
- Applicants: Mellanox Technologies, Ltd.
- Inventors: Gal Yefet; Daniel Marcovitch; Roee Moyal; Ariel Shahar; Gil Bloch; Lior Narkis
- Web page: https://patentgrep.com/patent/US11451493B2

## CPC

- G06F 13/385: {for adaptation of a particular data processing system to different peripheral devices}
- H04L 49/901: using storage descriptor, e.g. read or write pointers
- H04L 41/0627: {by acting on the notification or alarm source}
- H04L 41/0654: using network fault recovery (ring fault isolation or reconfiguration in loop networks without recovery actions by a network management system H04L12/437)
- H04L 49/253: using establishment or release of connections between ports
- H04L 49/9005: using dynamic buffer space allocation
- 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, a host interface and processing circuitry. The network interface connects to a communication network for communicating with remote targets. The host interface connects to a host that accesses a Multi-Channel Send Queue (MCSQ) storing Work Requests (WRs) originating from client processes running on the host. The processing circuitry is configured to retrieve WRs from the MCSQ and distribute the WRs among multiple Send Queues (SQs) accessible by the processing circuitry.

## Claims

### Claim 1

A network adapter, comprising:
a network interface, configured to connect to a communication network for communicating with remote targets;
a host interface configured to connect to a host that accesses a Multi-Channel Send Queue (MCSQ) storing Work Requests (WRs) originating from client processes running on the host; and
processing circuitry, configured to:
retrieve WRs from multiple Send Queues (SQs) and execute data transmission operations specified in the WRs, and
retrieve the WRs from the MCSQ and distribute the retrieved WRs among the multiple Send Queues (SQs) accessible by the processing circuitry.

### Claim 2 (depends on 1)

The network adapter according to claim 1, wherein each of the targets comprises (i) a remote node coupled to the communication network or (ii) a local device coupled to the host.

### Claim 3 (depends on 1)

The network adapter according to claim 1, wherein the WRs comprise respective identifiers associated with respective SQs, and wherein the processing circuitry is configured to distribute the WRs among the SQs based on the identifiers.

### Claim 4 (depends on 3)

The network adapter according to claim 3, wherein the processing circuitry is configured to, in response to detecting that the identifier in a retrieved WR has no associated SQ among the SQs, select an available SQ among the multiple SQs, to associate the identifier with the available SQ, and to post the WR on the available SQ.

### Claim 5 (depends on 3)

The network adapter according to claim 3, wherein the processing circuitry is configured to, in response to detecting that the identifier in a given WR is associated with a selected SQ, post the WR on the selected SQ.

### Claim 6 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to operate the SQs in accordance with a Reliable-Connection (RC) protocol in which the SQs are assigned to connect persistently to respective targets.

### Claim 7 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to operate the SQs in accordance with a Dynamically Connected (DC) protocol, which allows a given SQ to connect to different targets at different times.

### Claim 8 (depends on 1)

The network adapter according to claim 1, wherein the host posts WRs on a first and second MCSQs associated respectively with first and second pools of SQs, and wherein the processing circuitry is configured to distribute WRs from the first MCSQ to SQs in the first pool, and to distribute WRs from the second MCSQ to SQs of the second pool.

### Claim 9 (depends on 8)

The network adapter according to claim 8, wherein at least one SQ is shared among the first and second pools, and wherein the processing circuitry is configured to post WRs from both the first and the second MCSQs to the at least one SQ.

### Claim 10 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to post on a Completion Queue (CQ) accessible by the client processes a Completion Queue Element (CQE) indicative of concluding execution of a given WR, after posting on the CQ all CQEs corresponding to WRs posted to the MCSQ before the given WR.

### Claim 11 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to post CQEs to a CQ independently of an order of respective WRs in the MCSQ.

### Claim 12 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to distribute to a given SQ that has established a connection with a given target, only WRs specifying the given target, until the connection terminates.

### Claim 13 (depends on 1)

The network adapter according to claim 1, wherein the processing circuitry is configured to, in response to detecting a failure in a given SQ, post on a CQ a CQE indicative of the failure.

### Claim 14 (depends on 13)

The network adapter according to claim 13, wherein the processing circuitry is configured to post on the CQ a CQE indicative of the failure for each WR that is to be executed in the given SQ.

### Claim 15 (depends on 13)

The network adapter according to claim 13, wherein the processing circuitry is configured to post on the CQ a CQE indicative of the failure for each WR from the MCSQ that is to be distributed to the given SQ.

### Claim 16 (depends on 1)

The network adapter according to claim 1, wherein at least a given WR specifies a respective data transmission operation from the host to a target.

### Claim 17 (depends on 1)

The network adapter according to claim 1, wherein a given WR specifies a locally executed operation.

### Claim 18 (depends on 1)

The network adapter according to claim 1, wherein the Send Queues reside in a memory of the host and the processing circuitry accesses the MCSQ and the SQs through the host interface.

### Claim 19 (depends on 1)

The network adapter according to claim 1, wherein the Send Queues reside in a memory of the network adapter.

### Claim 20

A method for communication, comprising:
in a network adapter that connects to a communication network for communicating with remote targets, and further connects to a host that accesses a MCSQ storing Work Requests (WRs) originating from client processes running on the host,
retrieving WRs from multiple Send Queues (SQs) and executing data transmission operations specified in the WRs, and
retrieving the WRs from the MCSQ and distributing the retrieved WRs among the multiple Send Queues (SQs) accessible by the network adapter.

### Claim 21 (depends on 20)

The method according to claim 20, wherein each of the targets comprises (i) a remote node coupled to the communication network or (ii) a local device coupled to the host.

### Claim 22 (depends on 20)

The method according to claim 20, wherein the WRs comprise respective identifiers associated with respective SQs, and wherein distributing the WRs comprises distributing the WRs among the SQs based on the identifiers.

### Claim 23 (depends on 22)

The method according to claim 22, and comprising, in response to detecting that the identifier in a retrieved WR has no associated SQ among the SQs, selecting an available SQ among the multiple SQs, associating the identifier with the available SQ, and posting the WR on the available SQ.

### Claim 24 (depends on 22)

The method according to claim 22, and comprising, in response to detecting that the identifier in a given WR is associated with a selected SQ, posting the WR on the selected SQ.

### Claim 25 (depends on 20)

The method according to claim 20, and comprising operating the SQs in accordance with a Reliable-Connection (RC) protocol in which the SQs are assigned to connect persistently to respective targets.

### Claim 26 (depends on 20)

The method according to claim 20, and comprising operating the SQs in accordance with a Dynamically Connected (DC) protocol, which allows a given SQ to connect to different targets at different times.

### Claim 27 (depends on 20)

The method according to claim 20, wherein the host posts WRs on a first and second MCSQs associated respectively with first and second pools of SQs, and wherein distributing the WRs comprises distributing the WRs from the first MCSQ to SQs in the first pool, and distributing the WRs from the second MCSQ to SQs of the second pool.

### Claim 28 (depends on 27)

The method according to claim 27, wherein at least one SQ is shared among the first and second pools, and wherein distributing the WRs comprises posting WRs from both the first and the second MCSQs to the at least one SQ.

### Claim 29 (depends on 20)

The method according to claim 20, wherein posting the CQEs comprises posting on a Completion Queue (CQ) accessible by the client processes a Completion Queue Element (CQE) indicative of concluding execution of a given WR, after posting on the CQ all CQEs corresponding to WRs posted to the MCSQ before the given WR.

### Claim 30 (depends on 20)

The method according to claim 20, wherein posting the CQEs comprises posting CQEs to a CQ independently of an order of respective WRs in the MCSQ.

### Claim 31 (depends on 20)

The method according to claim 20, wherein distributing the WRs comprises distributing to a given SQ that has established a connection with a given target, only WRs specifying the given target, until the connection terminates.

### Claim 32 (depends on 20)

The method according to claim 20, wherein posting the CQEs comprises, in response to detecting a failure in a given SQ, posting on a CQ a CQE indicative of the failure for each WR retrieved from the MCSQ and that is to be distributed to the given SQ.

### Claim 33 (depends on 32)

The method according to claim 32, wherein posing the CQEs comprises posting on the CQ a CQE indicative of the failure for each WR that is to be executed in the given SQ.

### Claim 34 (depends on 32)

The method according to claim 32, wherein posting the CQEs comprises posting on the CQ a CQE indicative of the failure for each WR from the MCSQ that is to be distributed to the given SQ.

### Claim 35 (depends on 20)

The method according to claim 20, wherein a given WR specifies a respective data transmission operation from the host to a target.

### Claim 36 (depends on 20)

The method according to claim 20, wherein a given WR specifies a locally executed operation.

### Claim 37 (depends on 20)

The method according to claim 20, wherein the Send Queues reside in a memory of the host or in a memory of the network adapter.
