| US 7,543,290 B2 | ||
| Multiple queue pair access with single doorbell | ||
| Michael Kagan, Zichron Yaakov (Israel); Gil Bloch, Kiryat Ata (Israel); Diego A Crupnicoff, Haifa (Israel); Margarita Schnitman, Netivot (Israel); and Dafna Levenvirth, Beit Izhak (Israel) | ||
| Assigned to Mellanox Technologies Ltd., Yokneam (Israel) | ||
| Filed on Nov. 26, 2001, as Appl. No. 9/991,692. | ||
| Claims priority of provisional application 60/283108, filed on Apr. 11, 2001. | ||
| Prior Publication US 2002/0165899 A1, Nov. 07, 2002 | ||
| Int. Cl. G06F 9/46 (2006.01); G06F 13/28 (2006.01); G06F 3/00 (2006.01); G06F 15/16 (2006.01) | ||
| U.S. Cl. 718—100 [718/102; 710/22; 710/39; 709/245; 709/250] | 22 Claims |

| 1. A method for controlling access by processes running on a host device to a communication network, the method comprising:
assigning to each of the processes a single respective doorbell address in an address range, in an address space of the host
device, occupied by a network interface adapter that couples the host device to the network;
by a driver of the network interface adapter, allocating a plurality of instances of a communication service on the network,
to be provided via the adapter, to at least some of the processes on the host device, such that each of the instances is allocated
to a particular one of the processes, wherein allocating the instances comprises allocating multiple instances to a single
one of the processes;
by the network interface adapter, receiving a request submitted by a given one of the processes to its respective doorbell
address, to access one of the allocated service instances, which is specified in the request; and
conveying data over the network using the specified instance of the service, subject to verifying, based on the doorbell address
to which the request was submitted, that the specified instance was allocated to the given process;
wherein the communication service comprises a transport service, wherein allocating the plurality of the instances comprises
allocating pairs of work queues, and wherein receiving the request comprises receiving a work request to place a work item
in a specified one of the work queues, and wherein conveying the data comprises transporting the data to a destination address
provided by a context of the specified work queue.
|