IP Library Granted Patent US 7,996,573
Granted Patent B2
US 7,996,573 · App. 11/156,206 · Granted Aug 9, 2011

Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney

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,996,573
App. No.
11/156,206
Granted
Aug 9, 2011
Kind
B2
Abstract

Certain embodiments of the invention may be found in a method and system for performing SCSI read operations with a CRC via a TCP offload engine. Aspects of the method may comprise receiving an iSCSI read command from an initiator. Data may be fetched from a buffer based on the received iSCSI read command. The fetched data may be zero copied from the buffer to the initiator and a TCP sequence may be retransmitted to the initiator. A digest value may be calculated, which may be communicated to the initiator. An accumulated digest value stored in a temporary buffer may be utilized to calculate a final digest value, if the buffer is posted. The retransmitted TCP sequence may be processed and the fetched data may be zero copied into an iSCSI buffer, if the buffer is posted. The calculated final digest value may be communicated to the initiator.

Claims (44)

1. A method for performing a SCSI read operation via a TCP offload engine, the method comprising:

receiving an iSCSI read command from an initiator;

fetching data from a buffer based on said received iSCSI read command;

zero copying said fetched data from said buffer to said initiator;

if said buffer is posted, calculating a final digest value based on an accumulated digest value; and

if said buffer is not posted, parsing an iSCSI protocol data unit; calculating a header digest value for a header of an iSCSI protocol data unit; and communicating said calculated digest value to said initiator.

2. The method according to claim 1 , comprising:

utilizing an accumulated digest value stored in a temporary buffer for calculating a final digest value, if said buffer is posted;

processing a retransmitted TCP sequence retransmitted to said initiator and zero copying said fetched data into an iSCSI buffer, if said buffer is posted;

communicating said calculated final digest value to said initiator; and

processing said retransmitted TCP sequence retransmitted to said initiator, if said buffer is not posted.

3. The method according to claim 1 , comprising:

identifying an additional header and a base header;

placing the header digest value in a temporary buffer.

4. The method according to claim 1 , comprising placing said zero copied fetched data into said buffer.

5. The method according to claim 1 , comprising invoking a recovery procedure if the header digest value has failed.

6. The method according to claim 5 , comprising stripping said header from said iSCSI protocol data unit and placing said zero copied fetched data in an iSCSI buffer, if the header digest value has not failed.

7. The method according to claim 6 , comprising allocating said iSCSI buffer for a next frame of said zero copied fetched data in said iSCSI protocol data unit.

8. The method according to claim 6 , comprising posting said iSCSI buffer to hardware.

9. The method according to claim 1 , comprising generating an out of order message, if frames of said zero copied fetched data are not in order.

10. The method according to claim 1 , comprising communicating the header digest value to said initiator, if frames of said zero copied fetched data are not in order.

11. A system for performing a SCSI read operation via a TCP offload engine, the system comprising:

a target that is operable to receive an iSCSI read command from an initiator;

at least one driver that is operable to fetch data from a buffer based on said received iSCSI read command;

said at least one driver is operable to zero copy said fetched data from said buffer to said initiator;

if said buffer is posted, said at least one driver is operable to calculate a final digest value based on an accumulated digest value;

said at least one driver is operable to parse an iSCSI protocol data unit; and

if said buffer is not posted, said at least one driver is operable to calculate a header digest value, which is communicated to said initiator.

12. The system according to claim 11 , wherein:

said at least one driver is operable to utilize an accumulated digest value stored in a temporary buffer for calculating a final digest value, if said buffer is posted;

said at least one driver is operable to process a retransmitted TCP sequence retransmitted to said initiator and zero copy said fetched data into an iSCSI buffer, if said buffer is posted;

said at least one driver is operable to communicate said calculated final digest value to said initiator; and

said at least one driver is operable to process said retransmitted TCP sequence retransmitted to said initiator, if said buffer is not posted.

13. The system according to claim 11 , wherein:

said at least one driver is operable to identify an additional header and a base header;

said at least one driver is operable to calculate the header digest value for a header of said iSCSI protocol data unit; and

said at least one driver is operable to place the header digest value in a temporary buffer.

14. The system according to claim 11 , wherein said at least one driver is operable to place said zero copied fetched data into said buffer.

15. The system according to claim 11 , wherein said at least one driver is operable to invoke a recovery procedure if the header digest value has failed.

16. The system according to claim 15 , wherein said at least one driver is operable to strip a header from said iSCSI protocol data unit and place said zero copied fetched data in an iSCSI buffer, if the header digest value has not failed.

17. The system according to claim 16 , wherein said at least one driver is operable to allocate said iSCSI buffer for a next frame of said zero copied fetched data in said iSCSI protocol data unit.

18. The system according to claim 16 , wherein said at least one driver is operable to post said iSCSI buffer to hardware.

19. The system according to claim 11 , wherein said at least one driver is operable to generate an out of order message, if frames of said zero copied fetched data are not in order.

20. The system according to claim 11 , wherein said at least one driver is operable to communicate the header digest value to said initiator, if frames of said zero copied fetched data are not in order.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 09/05/2018 PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0133. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0456 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0133 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2005
From: EL ZUR, URI; FAN, KAN FRANKIE; MCDANIEL, SCOTT
To: BROADCOM CORPORATION
Reel/Frame 016549/0016 →