From da5b6cb162b6bef39d76446a5e015d6a111459b1 Mon Sep 17 00:00:00 2001 From: Sebastian Ott Date: Wed, 5 Jun 2013 18:58:35 +0200 Subject: s390/qdio: cleanup chsc SSQD usage Cleanup the function qdio_setup_get_ssqd. Fix some possible memleaks and an unchecked allocation and create a wrapper for SSQD in chsc.c . Reviewed-by: Ursula Braun Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky --- drivers/s390/cio/chsc.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'drivers/s390/cio/chsc.h') diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h index 62d096f..2b88e74 100644 --- a/drivers/s390/cio/chsc.h +++ b/drivers/s390/cio/chsc.h @@ -7,6 +7,7 @@ #include #include #include +#include #define CHSC_SDA_OC_MSS 0x2 @@ -72,6 +73,20 @@ struct chsc_ssd_info { u16 fla[8]; }; +struct chsc_ssqd_area { + struct chsc_header request; + u16:10; + u8 ssid:2; + u8 fmt:4; + u16 first_sch; + u16:16; + u16 last_sch; + u32:32; + struct chsc_header response; + u32:32; + struct qdio_ssqd_desc qdio_ssqd; +} __packed; + struct chsc_scpd { struct chsc_header request; u32:2; @@ -111,7 +126,7 @@ int chsc_determine_fmt1_channel_path_desc(struct chp_id chpid, void chsc_chp_online(struct chp_id chpid); void chsc_chp_offline(struct chp_id chpid); int chsc_get_channel_measurement_chars(struct channel_path *chp); - +int chsc_ssqd(struct subchannel_id schid, struct chsc_ssqd_area *ssqd); int chsc_error_from_response(int response); int chsc_siosl(struct subchannel_id schid); -- cgit v1.1