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: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Родитель
cce0eacc22
Коммит
040495d110
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче