Chelsio S3 iSCSI Driver for Linux

Introduction
============

The Chelsio T3 ASIC based Adapters (S310, S320, S302, S304, Mezz cards, etc.
series of products) supports iSCSI acceleration and iSCSI Direct Data Placement
(DDP) where the hardware handles the expensive byte touching operations, such
as CRC computation and verification, and direct DMA to the final host memory
destination.

The cxgb3i driver interfaces with open-iscsi initiator and provides the iSCSI
acceleration through Chelsio hardware wherever applicable.

Using the cxgb3i Driver
=======================

The following steps need to be taken to accelerates the open-iscsi initiator:

1. a new transport class "cxgb3i" need to be specified. This is done by
   creating a new interface file in /etc/iscsi/ifaces.

   The content of the file should be in the following format:
	iface.transport_name = cxgb3i
	iface.net_ifacename = <ethX>
	iface.ipaddress = <iscsi ip address>

   * iface.ipaddress is optional, <iscsi ip address> can be either the same as
	the ethX's ip address or an address on the same subnet. Make sure the
	address is unique in the network.

2. edit /etc/iscsi/iscsid.conf
   The default setting for MaxRecvDataSegmentLength (131072) is too big, search
   and replace all occurances of "xxx.iscsi.MaxRecvDataSegmentLength" to be a
   smaller value (8192 is recommended):

	discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 8192
	node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192

3. Load the cxgb3i driver: "modprobe cxgb3i"

   * in the case of recompiling the kernel, the cxgb3i selection is located at
	Device Drivers
		SCSI device support --->
			[*] SCSI low-level drivers  --->
				<M>   Chelsio S3xx iSCSI support

4. To direct open-iscsi traffic to go through cxgb3i's accelerated path,
   "-I <iface file name>" option needs to be specified with most of the
   iscsiadm command. <iface file name> is the transport interface file created
   in step 1.
