Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f132c54e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull infiniband upate from Roland Dreier:
 "First batch of InfiniBand/RDMA changes for the 3.8 merge window:
   - A good chunk of Bart Van Assche's SRP fixes
   - UAPI disintegration from David Howells
   - mlx4 support for "64-byte CQE" hardware feature from Or Gerlitz
   - Other miscellaneous fixes"

Fix up trivial conflict in mellanox/mlx4 driver.

* tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (33 commits)
  RDMA/nes: Fix for crash when registering zero length MR for CQ
  RDMA/nes: Fix for terminate timer crash
  RDMA/nes: Fix for BUG_ON due to adding already-pending timer
  IB/srp: Allow SRP disconnect through sysfs
  srp_transport: Document sysfs attributes
  srp_transport: Simplify attribute initialization code
  srp_transport: Fix attribute registration
  IB/srp: Document sysfs attributes
  IB/srp: send disconnect request without waiting for CM timewait exit
  IB/srp: destroy and recreate QP and CQs when reconnecting
  IB/srp: Eliminate state SRP_TARGET_DEAD
  IB/srp: Introduce the helper function srp_remove_target()
  IB/srp: Suppress superfluous error messages
  IB/srp: Process all error completions
  IB/srp: Introduce srp_handle_qp_err()
  IB/srp: Simplify SCSI error handling
  IB/srp: Keep processing commands during host removal
  IB/srp: Eliminate state SRP_TARGET_CONNECTING
  IB/srp: Increase block layer timeout
  RDMA/cm: Change return value from find_gid_port()
  ...
parents d3b43e12 01e03365
Loading
Loading
Loading
Loading
+156 −0
Original line number Diff line number Diff line
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).

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>/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>/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>/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.
+19 −0
Original line number Diff line number Diff line
What:		/sys/class/srp_remote_ports/port-<h>:<n>/delete
Date:		June 1, 2012
KernelVersion:	3.7
Contact:	linux-scsi@vger.kernel.org, linux-rdma@vger.kernel.org
Description:	Instructs an SRP initiator to disconnect from a target and to
		remove all LUNs imported from that target.

What:		/sys/class/srp_remote_ports/port-<h>:<n>/port_id
Date:		June 27, 2007
KernelVersion:	2.6.24
Contact:	linux-scsi@vger.kernel.org
Description:	16-byte local SRP port identifier in hexadecimal format. An
		example: 4c:49:4e:55:58:20:56:49:4f:00:00:00:00:00:00:00.

What:		/sys/class/srp_remote_ports/port-<h>:<n>/roles
Date:		June 27, 2007
KernelVersion:	2.6.24
Contact:	linux-scsi@vger.kernel.org
Description:	Role of the remote port. Either "SRP Initiator" or "SRP Target".
+4 −5
Original line number Diff line number Diff line
@@ -345,17 +345,17 @@ static int find_gid_port(struct ib_device *device, union ib_gid *gid, u8 port_nu

	err = ib_query_port(device, port_num, &props);
	if (err)
		return 1;
		return err;

	for (i = 0; i < props.gid_tbl_len; ++i) {
		err = ib_query_gid(device, port_num, i, &tmp);
		if (err)
			return 1;
			return err;
		if (!memcmp(&tmp, gid, sizeof tmp))
			return 0;
	}

	return -EAGAIN;
	return -EADDRNOTAVAIL;
}

static int cma_acquire_dev(struct rdma_id_private *id_priv)
@@ -388,8 +388,7 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv)
				if (!ret) {
					id_priv->id.port_num = port;
					goto out;
				} else if (ret == 1)
					break;
				}
			}
		}
	}
+1 −0
Original line number Diff line number Diff line
@@ -311,6 +311,7 @@ void c2_ae_event(struct c2_dev *c2dev, u32 mq_index)
		if (cq->ibcq.event_handler)
			cq->ibcq.event_handler(&ib_event,
					       cq->ibcq.cq_context);
		break;
	}

	default:
+2 −4
Original line number Diff line number Diff line
@@ -128,9 +128,8 @@ static void stop_ep_timer(struct iwch_ep *ep)
{
	PDBG("%s ep %p\n", __func__, ep);
	if (!timer_pending(&ep->timer)) {
		printk(KERN_ERR "%s timer stopped when its not running!  ep %p state %u\n",
		WARN(1, "%s timer stopped when its not running!  ep %p state %u\n",
			__func__, ep, ep->com.state);
		WARN_ON(1);
		return;
	}
	del_timer_sync(&ep->timer);
@@ -1756,9 +1755,8 @@ static void ep_timeout(unsigned long arg)
		__state_set(&ep->com, ABORTING);
		break;
	default:
		printk(KERN_ERR "%s unexpected state ep %p state %u\n",
		WARN(1, "%s unexpected state ep %p state %u\n",
			__func__, ep, ep->com.state);
		WARN_ON(1);
		abort = 0;
	}
	spin_unlock_irqrestore(&ep->com.lock, flags);
Loading