What:		/sys/class/infiniband_srp/srp-<hca>-<port_number>/add_target
Date:		January 2, 2006
KernelVersion:	2.6.15
Contact:	linux-rdma@vger.kernel.org
Description:	Interface for making ib_srp connect to a new target.
		One can request ib_srp to connect to a new target by writing
		a comma-separated list of login parameters to this sysfs
		attribute. The supported parameters are:
		* id_ext, a 16-digit hexadecimal number specifying the eight
		  byte identifier extension in the 16-byte SRP target port
		  identifier. The target port identifier is sent by ib_srp
		  to the target in the SRP_LOGIN_REQ request.
		* ioc_guid, a 16-digit hexadecimal number specifying the eight
		  byte I/O controller GUID portion of the 16-byte target port
		  identifier.
		* dgid, a 32-digit hexadecimal number specifying the
		  destination GID.
		* pkey, a four-digit hexadecimal number specifying the
		  InfiniBand partition key.
		* service_id, a 16-digit hexadecimal number specifying the
		  InfiniBand service ID used to establish communication with
		  the SRP target. How to find out the value of the service ID
		  is specified in the documentation of the SRP target.
		* max_sect, a decimal number specifying the maximum number of
		  512-byte sectors to be transferred via a single SCSI command.
		* max_cmd_per_lun, a decimal number specifying the maximum
		  number of outstanding commands for a single LUN.
		* io_class, a hexadecimal number specifying the SRP I/O class.
		  Must be either 0xff00 (rev 10) or 0x0100 (rev 16a). The I/O
		  class defines the format of the SRP initiator and target
		  port identifiers.
		* initiator_ext, a 16-digit hexadecimal number specifying the
		  identifier extension portion of the SRP initiator port
		  identifier. This data is sent by the initiator to the target
		  in the SRP_LOGIN_REQ request.
		* cmd_sg_entries, a number in the range 1..255 that specifies
		  the maximum number of data buffer descriptors stored in the
		  SRP_CMD information unit itself. With allow_ext_sg=0 the
		  parameter cmd_sg_entries defines the maximum S/G list length
		  for a single SRP_CMD, and commands whose S/G list length
		  exceeds this limit after S/G list collapsing will fail.
		* allow_ext_sg, whether ib_srp is allowed to include a partial
		  memory descriptor list in an SRP_CMD instead of the entire
		  list. If a partial memory descriptor list has been included
		  in an SRP_CMD the remaining memory descriptors are
		  communicated from initiator to target via an additional RDMA
		  transfer. Setting allow_ext_sg to 1 increases the maximum
		  amount of data that can be transferred between initiator and
		  target via a single SCSI command. Since not all SRP target
		  implementations support partial memory descriptor lists the
		  default value for this option is 0.
		* sg_tablesize, a number in the range 1..2048 specifying the
		  maximum S/G list length the SCSI layer is allowed to pass to
		  ib_srp. Specifying a value that exceeds cmd_sg_entries is
		  only safe with partial memory descriptor list support enabled
		  (allow_ext_sg=1).
		* comp_vector, a number in the range 0..n-1 specifying the
		  MSI-X completion vector of the first RDMA channel. Some
		  HCA's allocate multiple (n) MSI-X vectors per HCA port. If
		  the IRQ affinity masks of these interrupts have been
		  configured such that each MSI-X interrupt is handled by a
		  different CPU then the comp_vector parameter can be used to
		  spread the SRP completion workload over multiple CPU's.
		* tl_retry_count, a number in the range 2..7 specifying the
		  IB RC retry count.
		* queue_size, the maximum number of commands that the
		  initiator is allowed to queue per SCSI host. The default
		  value for this parameter is 62. The lowest supported value
		  is 2.
		* max_it_iu_size, a decimal number specifying the maximum
		  initiator to target information unit length.

What:		/sys/class/infiniband_srp/srp-<hca>-<port_number>/ibdev
Date:		January 2, 2006
KernelVersion:	2.6.15
Contact:	linux-rdma@vger.kernel.org
Description:	HCA name (<hca>).

What:		/sys/class/infiniband_srp/srp-<hca>-<port_number>/port
Date:		January 2, 2006
KernelVersion:	2.6.15
Contact:	linux-rdma@vger.kernel.org
Description:	HCA port number (<port_number>).

What:		/sys/class/scsi_host/host<n>/allow_ext_sg
Date:		May 19, 2011
KernelVersion:	2.6.39
Contact:	linux-rdma@vger.kernel.org
Description:	Whether ib_srp is allowed to include a partial memory
		descriptor list in an SRP_CMD when communicating with an SRP
		target.

What:		/sys/class/scsi_host/host<n>/ch_count
Date:		April 1, 2015
KernelVersion:	3.19
Contact:	linux-rdma@vger.kernel.org
Description:	Number of RDMA channels used for communication with the SRP
		target.

What:		/sys/class/scsi_host/host<n>/cmd_sg_entries
Date:		May 19, 2011
KernelVersion:	2.6.39
Contact:	linux-rdma@vger.kernel.org
Description:	Maximum number of data buffer descriptors that may be sent to
		the target in a single SRP_CMD request.

What:		/sys/class/scsi_host/host<n>/comp_vector
Date:		September 2, 2013
KernelVersion:	3.11
Contact:	linux-rdma@vger.kernel.org
Description:	Completion vector used for the first RDMA channel.

What:		/sys/class/scsi_host/host<n>/dgid
Date:		June 17, 2006
KernelVersion:	2.6.17
Contact:	linux-rdma@vger.kernel.org
Description:	InfiniBand destination GID used for communication with the SRP
		target. Differs from orig_dgid if port redirection has happened.

What:		/sys/class/scsi_host/host<n>/id_ext
Date:		June 17, 2006
KernelVersion:	2.6.17
Contact:	linux-rdma@vger.kernel.org
Description:	Eight-byte identifier extension portion of the 16-byte target
		port identifier.

What:		/sys/class/scsi_host/host<n>/ioc_guid
Date:		June 17, 2006
KernelVersion:	2.6.17
Contact:	linux-rdma@vger.kernel.org
Description:	Eight-byte I/O controller GUID portion of the 16-byte target
		port identifier.

What:		/sys/class/scsi_host/host<n>/local_ib_device
Date:		November 29, 2006
KernelVersion:	2.6.19
Contact:	linux-rdma@vger.kernel.org
Description:	Name of the InfiniBand HCA used for communicating with the
		SRP target.

What:		/sys/class/scsi_host/host<n>/local_ib_port
Date:		November 29, 2006
KernelVersion:	2.6.19
Contact:	linux-rdma@vger.kernel.org
Description:	Number of the HCA port used for communicating with the
		SRP target.

What:		/sys/class/scsi_host/host<n>/orig_dgid
Date:		June 17, 2006
KernelVersion:	2.6.17
Contact:	linux-rdma@vger.kernel.org
Description:	InfiniBand destination GID specified in the parameters
		written to the add_target sysfs attribute.

What:		/sys/class/scsi_host/host<n>/pkey
Date:		June 17, 2006
KernelVersion:	2.6.17
Contact:	linux-rdma@vger.kernel.org
Description:	A 16-bit number representing the InfiniBand partition key used
		for communication with the SRP target.

What:		/sys/class/scsi_host/host<n>/req_lim
Date:		October 20, 2010
KernelVersion:	2.6.36
Contact:	linux-rdma@vger.kernel.org
Description:	Number of requests ib_srp can send to the target before it has
		to wait for more credits. For more information see also the
		SRP credit algorithm in the SRP specification.

What:		/sys/class/scsi_host/host<n>/service_id
Date:		June 17, 2006
KernelVersion:	2.6.17
Contact:	linux-rdma@vger.kernel.org
Description:	InfiniBand service ID used for establishing communication with
		the SRP	target.

What:		/sys/class/scsi_host/host<n>/sgid
Date:		February 1, 2014
KernelVersion:	3.13
Contact:	linux-rdma@vger.kernel.org
Description:	InfiniBand GID of the source port used for communication with
		the SRP target.

What:		/sys/class/scsi_host/host<n>/zero_req_lim
Date:		September 20, 2006
KernelVersion:	2.6.18
Contact:	linux-rdma@vger.kernel.org
Description:	Number of times the initiator had to wait before sending a
		request to the target because it ran out of credits. For more
		information see also the SRP credit algorithm in the SRP
		specification.
