123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- Chelsio S3 iSCSI Driver for Linux
- Introduction
- ============
- The Chelsio T3 ASIC based Adapters (S310, S320, S302, S304, Mezz cards, etc.
- series of products) support 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:
- - iSCSI PDU digest generation and verification
- On transmitting, Chelsio S3 h/w computes and inserts the Header and
- Data digest into the PDUs.
- On receiving, Chelsio S3 h/w computes and verifies the Header and
- Data digest of the PDUs.
- - Direct Data Placement (DDP)
- S3 h/w can directly place the iSCSI Data-In or Data-Out PDU's
- payload into pre-posted final destination host-memory buffers based
- on the Initiator Task Tag (ITT) in Data-In or Target Task Tag (TTT)
- in Data-Out PDUs.
- - PDU Transmit and Recovery
- On transmitting, S3 h/w accepts the complete PDU (header + data)
- from the host driver, computes and inserts the digests, decomposes
- the PDU into multiple TCP segments if necessary, and transmit all
- the TCP segments onto the wire. It handles TCP retransmission if
- needed.
- On receiving, S3 h/w recovers the iSCSI PDU by reassembling TCP
- segments, separating the header and data, calculating and verifying
- the digests, then forwarding the header to the host. The payload data,
- if possible, will be directly placed into the pre-posted host DDP
- buffer. Otherwise, the payload data will be sent to the host too.
- 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. Load the cxgb3i driver: "modprobe cxgb3i"
- The cxgb3i module registers a new transport class "cxgb3i" with open-iscsi.
- * 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
- 2. Create an interface file located under /etc/iscsi/ifaces/ for the new
- transport class "cxgb3i".
- The content of the file should be in the following format:
- iface.transport_name = cxgb3i
- iface.net_ifacename = <ethX>
- iface.ipaddress = <iscsi ip address>
- * if iface.ipaddress is specified, <iscsi ip address> needs to be either the
- same as the ethX's ip address or an address on the same subnet. Make
- sure the ip address is unique in the network.
- 3. edit /etc/iscsi/iscsid.conf
- The default setting for MaxRecvDataSegmentLength (131072) is too big;
- replace with a value no bigger than 15360 (for example 8192):
- node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192
- * The login would fail for a normal session if MaxRecvDataSegmentLength is
- too big. A error message in the format of
- "cxgb3i: ERR! MaxRecvSegmentLength <X> too big. Need to be <= <Y>."
- would be logged to dmesg.
- 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 2.
|