€•ôGŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/translations/zh_CN/scsi/cxgb3i”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/scsi/cxgb3i”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/it_IT/scsi/cxgb3i”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/scsi/cxgb3i”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/scsi/cxgb3i”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/scsi/cxgb3i”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒ9/var/lib/git/docbuild/linux/Documentation/scsi/cxgb3i.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ!Chelsio S3 iSCSI Driver for Linux”h]”hŒ!Chelsio S3 iSCSI Driver for Linux”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ Introduction”h]”hŒ Introduction”…””}”(hhÌhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhÉhžhhŸh³h KubhŒ paragraph”“”)”}”(hXCThe 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:”h]”hXCThe 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:”…””}”(hhÜhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K hhÉhžhubhŒ block_quote”“”)”}”(hXƒ- 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. ”h]”hŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒè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. ”h]”(hÛ)”}”(hŒ,iSCSI PDU digest generation and verification”h]”hŒ,iSCSI PDU digest generation and verification”…””}”(hhûhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khh÷ubhÛ)”}”(hŒ¹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.”h]”hŒ¹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.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khh÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhhòubhö)”}”(hŒõ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. ”h]”(hÛ)”}”(hŒDirect Data Placement (DDP)”h]”hŒDirect Data Placement (DDP)”…””}”(hj!hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KhjubhÛ)”}”(hŒ×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.”h]”hŒÙ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.”…””}”(hj/hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhhòubhö)”}”(hXzPDU 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. ”h]”(hÛ)”}”(hŒPDU Transmit and Recovery”h]”hŒPDU Transmit and Recovery”…””}”(hjGhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KhjCubhÛ)”}”(hXOn 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.”h]”hXOn 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.”…””}”(hjUhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K hjCubhÛ)”}”(hXNOn 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.”h]”hXNOn 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.”…””}”(hjchžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K&hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhhòubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1hðhŸh³h Khhìubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhŸh³h KhhÉhžhubhÛ)”}”(hŒˆThe cxgb3i driver interfaces with open-iscsi initiator and provides the iSCSI acceleration through Chelsio hardware wherever applicable.”h]”hŒˆThe cxgb3i driver interfaces with open-iscsi initiator and provides the iSCSI acceleration through Chelsio hardware wherever applicable.”…””}”(hj…hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K,hhÉhžhubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒUsing the cxgb3i Driver”h]”hŒUsing the cxgb3i Driver”…””}”(hjžhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj›hžhhŸh³h K0ubhÛ)”}”(hŒMThe following steps need to be taken to accelerates the open-iscsi initiator:”h]”hŒMThe following steps need to be taken to accelerates the open-iscsi initiator:”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K2hj›hžhubhŒenumerated_list”“”)”}”(hhh]”(hö)”}”(hXuLoad 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 ---> Chelsio S3xx iSCSI support ”h]”(hÛ)”}”(hŒ)Load the cxgb3i driver: "modprobe cxgb3i"”h]”hŒ-Load the cxgb3i driver: “modprobe cxgb3i—…””}”(hjÃhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K4hj¿ubhÛ)”}”(hŒKThe cxgb3i module registers a new transport class "cxgb3i" with open-iscsi.”h]”hŒOThe cxgb3i module registers a new transport class “cxgb3i†with open-iscsi.”…””}”(hjÑhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K6hj¿ubhñ)”}”(hhh]”hö)”}”(hŒóin the case of recompiling the kernel, the cxgb3i selection is located at:: Device Drivers SCSI device support ---> [*] SCSI low-level drivers ---> Chelsio S3xx iSCSI support ”h]”(hÛ)”}”(hŒKin the case of recompiling the kernel, the cxgb3i selection is located at::”h]”hŒJin the case of recompiling the kernel, the cxgb3i selection is located at:”…””}”(hjæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K8hjâubhŒ literal_block”“”)”}”(hŒ™Device Drivers SCSI device support ---> [*] SCSI low-level drivers ---> Chelsio S3xx iSCSI support”h]”hŒ™Device Drivers SCSI device support ---> [*] SCSI low-level drivers ---> Chelsio S3xx iSCSI support”…””}”hjösbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jôhŸh³h K:hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhjßubah}”(h]”h ]”h"]”h$]”h&]”j}Œ*”uh1hðhŸh³h K8hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhj¼hžhhŸNh Nubhö)”}”(hXÒ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 = iface.ipaddress = * if iface.ipaddress is specified, 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. ”h]”(hÛ)”}”(hŒ_Create an interface file located under /etc/iscsi/ifaces/ for the new transport class "cxgb3i".”h]”hŒcCreate an interface file located under /etc/iscsi/ifaces/ for the new transport class “cxgb3iâ€.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K?hjubhÛ)”}”(hŒ;The content of the file should be in the following format::”h]”hŒ:The content of the file should be in the following format:”…””}”(hj)hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KBhjubjõ)”}”(hŒ_iface.transport_name = cxgb3i iface.net_ifacename = iface.ipaddress = ”h]”hŒ_iface.transport_name = cxgb3i iface.net_ifacename = iface.ipaddress = ”…””}”hj7sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jôhŸh³h KDhjubhñ)”}”(hhh]”hö)”}”(hŒ¾if iface.ipaddress is specified, 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. ”h]”hÛ)”}”(hŒ½if iface.ipaddress is specified, 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.”h]”hŒ¿if iface.ipaddress is specified, 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.”…””}”(hjLhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KHhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjEubah}”(h]”h ]”h"]”h$]”h&]”j}juh1hðhŸh³h KHhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhj¼hžhhŸNh Nubhö)”}”(hXµ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 too big. Need to be <= ." would be logged to dmesg. ”h]”(hÛ)”}”(hŒ 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)::”h]”hŒŸ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):”…””}”(hjphžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KLhjlubjõ)”}”(hŒ2node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192”h]”hŒ2node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192”…””}”hj~sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1jôhŸh³h KPhjlubhñ)”}”(hhh]”hö)”}”(hŒÒThe login would fail for a normal session if MaxRecvDataSegmentLength is too big. A error message in the format of "cxgb3i: ERR! MaxRecvSegmentLength too big. Need to be <= ." would be logged to dmesg. ”h]”hÛ)”}”(hŒÑThe login would fail for a normal session if MaxRecvDataSegmentLength is too big. A error message in the format of "cxgb3i: ERR! MaxRecvSegmentLength too big. Need to be <= ." would be logged to dmesg.”h]”hŒÕThe login would fail for a normal session if MaxRecvDataSegmentLength is too big. A error message in the format of “cxgb3i: ERR! MaxRecvSegmentLength too big. Need to be <= .†would be logged to dmesg.”…””}”(hj“hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjŒubah}”(h]”h ]”h"]”h$]”h&]”j}juh1hðhŸh³h KRhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1hõhj¼hžhhŸNh Nubhö)”}”(hŒáTo direct open-iscsi traffic to go through cxgb3i's accelerated path, "-I " option needs to be specified with most of the iscsiadm command. is the transport interface file created in step 2.”h]”hÛ)”}”(hŒáTo direct open-iscsi traffic to go through cxgb3i's accelerated path, "-I " option needs to be specified with most of the iscsiadm command. is the transport interface file created in step 2.”h]”hŒçTo direct open-iscsi traffic to go through cxgb3i’s accelerated path, “-I †option needs to be specified with most of the iscsiadm command. is the transport interface file created in step 2.”…””}”(hj·hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KWhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj¼hžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jºhj›hžhhŸh³h K4ubeh}”(h]”Œusing-the-cxgb3i-driver”ah ]”h"]”Œusing the cxgb3i driver”ah$]”h&]”uh1h´hh¶hžhhŸh³h K0ubeh}”(h]”Œ!chelsio-s3-iscsi-driver-for-linux”ah ]”h"]”Œ!chelsio s3 iscsi driver for linux”ah$]”h&]”uh1h´hhhžhhŸh³h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jãjàj˜j•jÛjØuŒ nametypes”}”(jã‰j˜‰jÛ‰uh}”(jàh¶j•hÉjØj›uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.