Browse Prior Art Database

Method of Calculating the iSCSI Data CRC32C Checksum With an iSCSI Offload Adaptor

IP.com Disclosure Number: IPCOM000008841D
Publication Date: 2002-Jul-17
Document File: 5 page(s) / 34K

Publishing Venue

The IP.com Prior Art Database

Abstract

Disclosed is a method for calculating the iSCSI data CRC32C checksum with an iSCSI offload adaptor. Benefits include higher performance and minimal impact on the normal data path.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 50% of the total text.

Method of Calculating the iSCSI Data CRC32C Checksum With an iSCSI Offload Adaptor

Disclosed is a method for calculating the iSCSI data CRC32C checksum with an iSCSI offload adaptor. Benefits include higher performance and minimal impact on the normal data path.

Background

Currently, data CRC32C checksums are usually calculated on firmware on a offload iSCSI adapter, and the data iSCSI checksum is usually handled in the iSCSI protocol layer.

General Description

The disclosed method is composed of four components: the Ethernet device driver, the TCP/IP layer, the iSCSI protocol layer, and the iSCSI host interface.  Figure 1 shows these firmware layers.

For high performance, direct iSCSI data transmit and receive are used. On transmit, the SCSI data are kept in the host memory until the firmware is ready to put the data on the Ethernet device driver’s transmit descriptor buffers. The firmware then transfers the SCSI data directly from the host memory to the Ethernet device without going through the embedded memory or embedded data cache.  On receive, the iSCSI data are kept in the Ethernet device driver’s receive descriptor buffers until the firmware is ready to DMA them to the host memory. They are kept in the embedded main memory and never brought in the embedded data cache memory.

The iSCSI protocol requires CRC32CC checksums in the iSCSI header and data segment. The iSCSI header CRC32CC checksum is very easy to calculate on transmit and verify on receive since the firmware constructs the header on transmit and interprets the header on receive. However, the firmware has to bring the data into the embedded data cache to verify the received iSCSI data segment CRC32C checksum if the receive data is verified in the firmware.  This prevents the use of no-copy receive. The host driver must copy the SCSI data to the embedded memory if the transmit data CRC32C checksum is calculated in firmware. This prevents the use of no-copy tra...