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
OG exemplary drawing
 
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.