[S390] chsc: process channel-path-availability information
Update affected channel path descriptors when receiving channel path availability information. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
b2fa47e6bf
commit
fca894edd7
|
@ -326,6 +326,36 @@ static void chsc_process_sei_res_acc(struct chsc_sei_area *sei_area)
|
|||
s390_process_res_acc(&link);
|
||||
}
|
||||
|
||||
static void chsc_process_sei_chp_avail(struct chsc_sei_area *sei_area)
|
||||
{
|
||||
struct channel_path *chp;
|
||||
struct chp_id chpid;
|
||||
u8 *data;
|
||||
int num;
|
||||
|
||||
CIO_CRW_EVENT(4, "chsc: channel path availability information\n");
|
||||
if (sei_area->rs != 0)
|
||||
return;
|
||||
data = sei_area->ccdf;
|
||||
chp_id_init(&chpid);
|
||||
for (num = 0; num <= __MAX_CHPID; num++) {
|
||||
if (!chp_test_bit(data, num))
|
||||
continue;
|
||||
chpid.id = num;
|
||||
|
||||
CIO_CRW_EVENT(4, "Update information for channel path "
|
||||
"%x.%02x\n", chpid.cssid, chpid.id);
|
||||
chp = chpid_to_chp(chpid);
|
||||
if (!chp) {
|
||||
chp_new(chpid);
|
||||
continue;
|
||||
}
|
||||
mutex_lock(&chp->lock);
|
||||
chsc_determine_base_channel_path_desc(chpid, &chp->desc);
|
||||
mutex_unlock(&chp->lock);
|
||||
}
|
||||
}
|
||||
|
||||
struct chp_config_data {
|
||||
u8 map[32];
|
||||
u8 op;
|
||||
|
@ -376,9 +406,12 @@ static void chsc_process_sei(struct chsc_sei_area *sei_area)
|
|||
case 1: /* link incident*/
|
||||
chsc_process_sei_link_incident(sei_area);
|
||||
break;
|
||||
case 2: /* i/o resource accessibiliy */
|
||||
case 2: /* i/o resource accessibility */
|
||||
chsc_process_sei_res_acc(sei_area);
|
||||
break;
|
||||
case 7: /* channel-path-availability information */
|
||||
chsc_process_sei_chp_avail(sei_area);
|
||||
break;
|
||||
case 8: /* channel-path-configuration notification */
|
||||
chsc_process_sei_chp_config(sei_area);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue