IP Library Granted Patent US 7,970,927
Granted Patent B1
US 7,970,927 · App. 12/651,270 · Granted Jun 28, 2011

Concurrent transmit processing

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 7,970,927
App. No.
12/651,270
Granted
Jun 28, 2011
Kind
B1
Abstract

A method and system for concurrent processing transmit requests uses transmit queue including a circular buffer and a queue state including a producer index, a consumer index, and a producer list. Producer processes write to the circular buffer concurrently. The producer list signals which portion of the circular buffer are allocated to each of the producer processes.

Claims (32)

1. A method for processing requests for transmission of data from a computing system to a network via a network adapter, the method comprising:

(a) receiving a request for transmission of data; wherein a network driver executed by a computing system processor receives the request;

(b) acquiring a lock to a transmit queue having a plurality of buffers, wherein the network driver places the lock;

(c) allocating space in a buffer from among the plurality of buffers, based on a size of the received request for transmission of data by updating a producer list associated with the buffer to indicate the allocated space; wherein the producer list is updated by adding an entry to the producer list, the entry pointing to a location in the buffer that may be used by a next request for transmission of data; and wherein the network driver allocates space and updates the producer list;

(d) releasing the lock to the transmit queue;

(e) writing data for the request for transmission to the allocated space in the buffer; and

(f) updating the producer list to signal completion of the writing data by deleting the entry in the producer list associated with the completed request for transmission of data.

2. The method of claim 1 , wherein, when the producer list is empty, the location in the buffer that may be used by a next request for transmission of data is set to be a number of locations from the location pointed to by a producer index, the number of locations matching the size of the allocated space.

3. The method of claim 1 , wherein when the producer list is not empty, the location in the buffer that may be used by a next request for transmission of data is set to be a number of locations from the location pointed by the last entry in the producer list, the number of locations matching the size of the allocated space.

4. The method of claim 1 , wherein when the entry deleted from the producer list is the first entry in the producer list, the producer index is updated to point to the location pointed to by the deleted entry.

5. The method of claim 1 , wherein when the entry deleted from the producer list is not the first entry in the list, the preceding entry in the producer list is updated to point to the location that was pointed to by the deleted entry.

6. The method of claim 1 , further comprising processing data of the request for transmission, and writing the processed data to the allocated space in the buffer.

7. A system for concurrent processing of requests for transmission of data to a network, the system comprising:

a processor configured to supply data to a buffer from among a plurality of buffers of a transmit queue; wherein the buffer is used for storage of data to be transmitted to at least one network and the buffer is associated with (i) a consumer index indicating where data may be read from the buffer, (ii) a producer index indicating where data has been written to the buffer, and (iii) a producer list indicating ongoing writes to the buffer; and

a network adapter configured to consume the data from the buffer and transmit the data to the at least one network;

wherein a network driver executed by the processor receives a request for transmission of data; places a lock on the transmit queue, allocates space in a buffer based on the size of the received request for transmission of data, updates the producer list to indicate the allocated space and then releases the lock on the transmit queue; writes data of the request for transmission to the allocated space in the buffer; and updates the producer list to signal completion of the writing data.

8. The system of claim 7 , wherein the producer list is updated by adding an entry to the producer list, the entry pointing to a location in the buffer that may be used by a next request for transmission of data.

9. The system of claim 8 , wherein when the producer list is empty, the location in the buffer that may be used by a next request for transmission of data is set to be a number of locations from the location pointed to by the producer index, the number of locations matching the size of the allocated space.

10. The system of claim 8 , wherein when the producer list is not empty, the location in the buffer that may be used by a next request for transmission of data is set to be a number of locations from the location pointed by the last entry in the producer list, the number of locations matching the size of the allocated space.

11. The system of claim 7 , wherein the updating the producer list to signal completion of the writing data comprises deleting the entry in the producer list associated with the completed request for transmission of data.

12. The system of claim 11 , wherein when the entry deleted from the producer list is the first entry in the producer list, the producer index is updated to point to the location pointed to by the deleted entry.

13. The system of claim 11 , wherein when the entry deleted from the producer list is not the first entry in the list, the preceding entry in the producer list is updated to point to the location that was pointed to by the deleted entry.

14. A computing system operationally coupled to a network via a network adapter, comprising:

a processor configured to supply data to a buffer from among a plurality of buffers of a transmit queue;

wherein the buffer is used for storage of data to be transmitted to at least one network device and the buffer is associated with (i) a consumer index indicating where data may be read from the buffer, (ii) a producer index indicating where data has been written to the buffer, and (iii) a producer list indicating ongoing writes to the buffer; and

wherein a network driver executed by the processor receives a request for transmission of data; places a lock on the transmit queue, allocates space in a buffer based on the size of the received request for transmission of data, updates the producer list to indicate the allocated space and then releases the lock on the transmit queue; writes data of the request for transmission to the allocated space in the buffer; and updates the producer list to signal completion of the writing data.

15. The computing system of claim 14 , wherein the producer list is updated by adding an entry to the producer list, the entry pointing to a location in the buffer that may be used by a next request for transmission of data.

16. The computing system of claim 15 , wherein when the producer list is empty, the location in the buffer that may be used by a next request for transmission of data is set to be a number of locations from the location pointed to by the producer index, the number of locations matching the size of the allocated space.

17. The computing system of claim 15 , wherein when the producer list is not empty, the location in the buffer that may be used by a next request for transmission of data is set to be a number of locations from the location pointed by the last entry in the producer list, the number of locations matching the size of the allocated space.

18. The computing system of claim 14 , wherein the updating the producer list to signal completion of the writing data comprises deleting the entry in the producer list associated with the completed request for transmission of data.

19. The computing system of claim 18 , wherein when the entry deleted from the producer list is the first entry in the producer list, the producer index is updated to point to the location pointed to by the deleted entry.

20. The computing system of claim 18 , wherein when the entry deleted from the producer list is not the first entry in the list, the preceding entry in the producer list is updated to point to the location that was pointed to by the deleted entry.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2009
From: SHAO, FENGYAN; PANDHARE, SHASHANK J.; LOK, YING PING
To: QLOGIC, CORPORATION
Reel/Frame 023725/0007 →