summaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/chsc.h
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2013-06-05 18:58:35 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-06-26 21:10:14 +0200
commitda5b6cb162b6bef39d76446a5e015d6a111459b1 (patch)
treedae7bc447358be3c4f2a25e27c9a2d2bf1e1034b /drivers/s390/cio/chsc.h
parents390/sclp: Add SCLP character device driver (diff)
downloadlinux-da5b6cb162b6bef39d76446a5e015d6a111459b1.tar.xz
linux-da5b6cb162b6bef39d76446a5e015d6a111459b1.zip
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 <ursula.braun@de.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/chsc.h')
-rw-r--r--drivers/s390/cio/chsc.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h
index 62d096f11e65..2b88e74e6b65 100644
--- a/drivers/s390/cio/chsc.h
+++ b/drivers/s390/cio/chsc.h
@@ -7,6 +7,7 @@
#include <asm/chpid.h>
#include <asm/chsc.h>
#include <asm/schid.h>
+#include <asm/qdio.h>
#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);