IP Library Granted Patent US 12699664
Granted Patent B2
US 12699664 · App. 18/776,541 · Granted Aug 4, 2026

Network communication apparatus with multiple host bus interfaces

Inventors: Gal Shalom (Givat-Avni, IL); Davide Rossetti (Santa Clara, CA); Vikramjit Sethi (Austin, TX); Peter Paneah (Nesher, IL); Jonathon Evans (Santa Clara, CA); Idan Borshteen (Akko, IL); Jason Gunthorpe (Bedford, CA)
Assignee: Mellanox Technologies, Ltd
G06F13/28G06F2213/28
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 12699664
App. No.
18/776,541
Filed
Jul 18, 2024
Granted
Aug 4, 2026
Kind
B2
Examiner
WONG, TITUS
Art Unit
2181
USPC
710/22
Abstract

Network communication apparatus for connection to a computer that includes a host processor, a host memory and at least first and second root ports. The apparatus includes a network port, for connection to a packet communication network, and first and second host bus interfaces, for connection via respective first and second peripheral component buses to the first and second root ports, respectively. Packet processing logic is coupled between the network port and the first and second host bus interfaces and includes first and second direct memory access (DMA) engines to read data from the host memory via the first and second root ports, respectively, for transmission via the network port, while exposing the network port to the host computer only through the first host bus interface.

Claims (47)

1 . Network communication apparatus for connection to a computer that includes a host processor, a host memory and at least first and second root ports, the network communication apparatus comprising:

a network port, for connection to a packet communication network;

first and second host bus interfaces, for connection via respective first and second peripheral component buses to the first and second root ports, respectively; and

packet processing logic, which is coupled between the network port and the first and second host bus interfaces and comprises first and second direct memory access (DMA) engines to read data from the host memory via the first and second root ports, respectively, for transmission via the network port, while exposing the network port to the host computer only through the first host bus interface, such that a physical network function for receiving and executing instructions to transmit and receive packets over the packet communication network is made available to the computer only via the first host bus interface while the second host bus interface exposes a DMA function of the second DMA engine to the host computer without exposing the network port or the physical network function.

2 . The network communication apparatus according to claim 1 , wherein the packet processing logic is to receive an instruction from the host processor via the first host bus interface to execute a communication transaction via the network port and to transfer data in the communication transaction between the second host bus interface and the host memory.

3 . The network communication apparatus according to claim 2 , wherein the instruction is contained in a work queue element (WQE) posted by the host processor in a work queue, which is associated with the first root port, and

wherein the packet processing logic is to issue to the host processor a crossing memory key (Mkey), which links the work queue to a region in the host memory accessed via the second root port, for application by the host processor in posting the WQE.

4 . The network communication apparatus according to claim 2 , wherein the host computer includes multiple non-uniform memory access (NUMA) nodes, including first and second NUMA nodes respectively including the first and second root ports, and

wherein the packet processing logic is to receive the instruction from the host processor via the first host bus interface to execute the communication transaction via the network port on behalf of a process executing on the second NUMA node.

5 . The network communication apparatus according to claim 4 , wherein the packet processing logic is to transfer data in the communication transaction between the second host bus interface and a local memory of the second NUMA node.

6 . The network communication apparatus according to claim 1 , wherein the first and second host bus interfaces support different, first and second host bus types.

7 . The network communication apparatus according to claim 1 , wherein the second host bus interface is to be connected to a first downstream port of a switch on the second peripheral component bus and to exchange data via the switch with a peer peripheral device connected to a second downstream port of the switch.

8 . A computer system, comprising:

a computer comprising:

a host processor;

a host memory; and

at least first and second root ports; and

a network interface controller (NIC), comprising:

a network port, for connection to a packet communication network;

first and second host bus interfaces, for connection via respective first and second peripheral component buses to the first and second root ports, respectively; and

packet processing logic, which is coupled between the network port and the first and second host bus interfaces and comprises first and second direct memory access (DMA) engines to read data from the host memory via the first and second root ports, respectively, for transmission via the network port, while exposing the network port to the host computer only through the first host bus interface, such that a physical network function for receiving and executing instructions to transmit and receive packets over the packet communication network is made available to the computer only via the first host bus interface while the second host bus interface exposes a DMA function of the second DMA engine to the host computer without exposing the network port or the physical network function.

9 . The computer system according to claim 8 , wherein the host processor is to submit an instruction to the packet processing logic via the first root port to execute a communication transaction via the network port and to transfer data in the communication transaction between the second root port and the host memory.

10 . The computer system according to claim 9 , wherein the instruction is contained in a work queue element (WQE) posted by the host processor in a work queue, which is associated with the first root port, and

wherein the packet processing logic is to issue to the host processor a crossing memory key (Mkey), which links the work queue to a region in the host memory accessed via the second root port, for application by the host processor in posting the WQE.

11 . The computer system according to claim 9 , wherein the host computer comprises multiple non-uniform memory access (NUMA) nodes, including first and second NUMA nodes respectively including the first and second root ports, and

wherein the host processor is to submit the instruction to the NIC via the first root port to execute the communication transaction via the network port on behalf of a process executing on the second NUMA node.

12 . The computer system according to claim 11 , wherein the packet processing logic is to transfer data in the communication transaction between the second host bus interface and a local memory of the second NUMA node.

13 . The computer system according to claim 8 , wherein the first and second peripheral component buses are of different, first and second host bus types.

14 . The computer system according to claim 8 , and comprising:

a peer peripheral device; and

a switch comprising:

an upstream port connected to the second root port of the host computer;

a first downstream port connected to the second host bus interface of the NIC; and

a second downstream port connected to the peer peripheral device,

wherein the second DMA engine is to exchange data via the switch with the peer peripheral device.

15 . A method for network communication, comprising:

connecting a network port of network interface controller (NIC) to a packet communication network;

connecting first and second host bus interfaces of the NIC via respective first and second peripheral component buses to first and second root ports, respectively, of a host computer, while exposing the network port to the host computer only through the first host bus interface, such that a physical network function for receiving and executing instructions to transmit and receive packets over the packet communication network is made available to the computer only via the first host bus interface while the second host bus interface exposes a DMA function of the second DMA engine to the host computer without exposing the network port or the physical network function; and

reading data by direct memory access (DMA) via both the first and second root ports from a host memory of the host computer for transmission by the NIC via the network port.

16 . The method according to claim 15 , wherein reading the data comprises receiving an instruction from the host computer via the first host bus interface to execute a communication transaction via the network port and transferring data in the communication transaction between the second host bus interface and the host memory.

17 . The method according to claim 16 , wherein receiving the instruction comprises reading a work queue element (WQE) posted by the host computer in a work queue, which is associated with the first root port, and

wherein the method comprises issuing to the host computer a crossing memory key (Mkey), which links the work queue to a region in the host memory accessed via the second root port, for application by the host computer in posting the WQE.

18 . The method according to claim 16 , wherein the host computer includes multiple non-uniform memory access (NUMA) nodes, including first and second NUMA nodes respectively including the first and second root ports, and

wherein receiving the instruction comprises receiving the instruction from the host computer via the first host bus interface to execute the communication transaction via the network port on behalf of a process executing on the second NUMA node.

19 . The method according to claim 18 , wherein reading the data comprises transferring the data in the communication transaction between the second host bus interface and a local memory of the second NUMA node.

20 . The method according to claim 15 , wherein the first and second host bus interfaces support different, first and second host bus types.

21 . The method according to claim 15 , wherein connecting first and second host bus interfaces comprises connecting the second host bus interface to a first downstream port of a switch on the second peripheral component bus and exchanging data via the switch with a peer peripheral device connected to a second downstream port of the switch.