IP Library Granted Patent US 7,853,735
Granted Patent B2
US 7,853,735 · App. 11/956,262 · Granted Dec 14, 2010

Efficient processing of groups of host access requests that may include zero length requests

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,853,735
App. No.
11/956,262
Granted
Dec 14, 2010
Kind
B2
Abstract

This is directed to methods and systems for handling access requests from a device to a host. The device may be a device that is part of the host, such as an HBA, an NIC, etc. The device may include a processor which runs firmware and which may generate various host access requests. The host access requests may be, for example, memory access requests, or DMA requests. The device may include a module for executing the host access requests, such as a data transfer block (DXB). The DXB may process incoming host access requests and return notifications of completion to the processor. For various reasons, the processor may from time to time issue null or zero length requests. Embodiments of the present invention ensure that the notifications of completion for all requests, including the zero length requests, are sent to the processor in the same order as the requests.

Claims (45)

1. A system comprising a host comprising a device and a host memory, the device comprising:

a device processor configured to execute device firmware to issue a plurality of internal host memory access requests, the plurality of internal host memory access requests including at least one zero length request issued subsequent to at least one non-zero length request; and

a data transfer block connected to the device processor and including electronic circuitry configured to

process the at least one non-zero length internal host memory access request by sending one or more external host memory access requests to the host,

process the at least one zero length internal host memory access request internally without sending any requests to the host, and

delaying sending to the device processor a notification of completion associated with the at least one zero length internal host memory access request until after a notification of completion associated with the at least one non-zero length request is sent to the device processor.

2. The system of claim 1 , wherein the electronic circuitry of the data transfer block is application specific circuitry.

3. The system of claim 1 , wherein the electronic circuitry of the data transfer block includes a generally programmable controller and a memory storing firmware for the controller.

4. The system of claim 1 , wherein the device is a host bus adapter (HBA).

5. The system of claim 1 , wherein the device is a network interface card (NIC).

6. The system of claim 1 , wherein the device further includes a local memory including the device firmware.

7. The system of claim 1 , wherein the data transfer block further includes an internal request queue, and is further configured to:

store a plurality of records in the internal request queue, each record being associated with one of the internal host memory access requests, the records being stored in the queue in the order in which their associated requests were issued by the device processor; and

order the timing of issuance of completion notifications for the various internal host memory access requests based on the placement of the records associated with said requests in the internal request queue.

8. The system of claim 1 , wherein the data transfer block is further configured to receive one or more responses from the host in response to the external host memory access requests.

9. The system of claim 8 wherein determining when each of the various internal host memory access requests have been processed by the host is performed by examining the responses received from the host.

10. A local area network comprising the system of claim 1 .

11. A storage area network comprising the system of claim 1 .

12. A device configured for connection to a host comprising a host memory, the device comprising:

a device processor configured to execute device firmware to issue a plurality of internal host memory access requests, the plurality of internal host memory access requests including at least one zero length request and at least one non-zero length request; and

a data transfer block connected to the device processor and including electronic circuitry configured to

process the at least one non-zero length internal host memory access request by sending one or more external host memory access requests to the host,

process the at least one zero length internal host memory access request internally without sending any requests to the host, and

delay sending to the device processor a notification of completion associated with the at least one zero length internal host memory access request until after a notification of completion associated with the at least one non-zero length request is sent to the device processor.

13. The device of claim 12 , wherein the electronic circuitry of the data transfer block is application specific circuitry.

14. The device of claim 12 , wherein the electronic circuitry of the data transfer block includes a generally programmable controller and a memory storing firmware for the controller.

15. The device of claim 12 , wherein the device is a host bus adapter (HBA).

16. The device of claim 12 , wherein the device is a network interface card (NIC).

17. The device of claim 12 , wherein the device further includes a local memory including the device firmware.

18. The device of claim 12 , wherein the data transfer block further includes an internal request queue, and is further configured to:

store a plurality of records in the internal request queue, each record being associated with one of the internal host memory access requests, the records being stored in the queue in the order in which their associated requests were issued by the device processor; and

order the timing of issuance of completion notifications for the various internal host memory access requests based on the placement of the records associated with said requests in the internal request queue.

19. The device of claim 12 , wherein the data transfer block is further configured to receive one or more responses from the host in response to the external host memory access requests.

20. The device of claim 19 wherein determining when each of the various internal host memory access requests have been processed by the host is performed by examining the responses received from the host.

21. A method for processing memory access communications at a device connected to a host comprising:

issuing a plurality of internal host memory access requests by a device processor, the plurality of internal host memory access requests including at least one zero length request and at least one non-zero length request; and

processing the at least one non-zero length internal host memory access request by a data transfer block by sending one or more external host memory access requests to the host;

processing the at least one zero length internal host memory access request by the data transfer block internally without sending any requests to the host; and

delaying sending to the device processor a notification of completion associated with the at least one zero length internal host memory access request until after a notification of completion associated with the at least one non-zero length request is sent to the device processor.

22. The method of claim 21 , wherein the device is a host bus adapter (HBA).

23. The method of claim 21 , further comprising:

storing a plurality of records in the internal request queue by the data transfer block, each record being associated with one of the internal host memory access requests, the records being stored in the queue in the order in which their associated requests were issued by the device processor; and

ordering the timing of issuance of completion notifications for the various internal host memory access requests by the data transfer block based on the placement of the records associated with said requests in the internal request queue.

24. The method of claim 21 , further comprising receiving one or more responses from the host by the data transfer block in response to the external host memory access requests.

25. The method of claim 24 wherein determining when each of the various internal host memory access requests have been processed by the host includes examining the responses received from the host.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: EMULEX CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036942/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: EMULEX DESIGN AND MANUFACTURING CORPORATION
To: EMULEX CORPORATION
Reel/Frame 032087/0842 →