Commit 040495d1 authored by Peter Oberparleiter's avatar Peter Oberparleiter Committed by Martin Schwidefsky
Browse files

s390/cio: make use of newly added format 1 channel-path data



Make use of the stored copy of format 1 channel-path data instead
of querying the information every time the corresponding function
is called.

Reviewed-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarPeter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent cce0eacc
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -704,9 +704,9 @@ EXPORT_SYMBOL(ccw_device_tm_start_timeout);
int ccw_device_get_mdc(struct ccw_device *cdev, u8 mask)
{
	struct subchannel *sch = to_subchannel(cdev->dev.parent);
	struct channel_path_desc_fmt1 desc;
	struct channel_path *chp;
	struct chp_id chpid;
	int mdc = 0, ret, i;
	int mdc = 0, i;

	/* Adjust requested path mask to excluded varied off paths. */
	if (mask)
@@ -719,14 +719,20 @@ int ccw_device_get_mdc(struct ccw_device *cdev, u8 mask)
		if (!(mask & (0x80 >> i)))
			continue;
		chpid.id = sch->schib.pmcw.chpid[i];
		ret = chsc_determine_fmt1_channel_path_desc(chpid, &desc);
		if (ret)
			return ret;
		if (!desc.f)
		chp = chpid_to_chp(chpid);
		if (!chp)
			continue;

		mutex_lock(&chp->lock);
		if (!chp->desc_fmt1.f) {
			mutex_unlock(&chp->lock);
			return 0;
		if (!desc.r)
		}
		if (!chp->desc_fmt1.r)
			mdc = 1;
		mdc = mdc ? min(mdc, (int)desc.mdc) : desc.mdc;
		mdc = mdc ? min_t(int, mdc, chp->desc_fmt1.mdc) :
			    chp->desc_fmt1.mdc;
		mutex_unlock(&chp->lock);
	}

	return mdc;