^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright IBM Corp. 2013
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Author(s): Ralf Hoppe (rhoppe@de.ibm.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #ifndef _SCLP_DIAG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define _SCLP_DIAG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) /* return codes for Diagnostic Test FTP Service, as indicated in member
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * sclp_diag_ftp::ldflg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define SCLP_DIAG_FTP_OK 0x80U /* success */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define SCLP_DIAG_FTP_LDFAIL 0x01U /* load failed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define SCLP_DIAG_FTP_LDNPERM 0x02U /* not allowed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define SCLP_DIAG_FTP_LDRUNS 0x03U /* LD runs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define SCLP_DIAG_FTP_LDNRUNS 0x04U /* LD does not run */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define SCLP_DIAG_FTP_XPCX 0x80 /* PCX communication code */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define SCLP_DIAG_FTP_ROUTE 4 /* routing code for new FTP service */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * length of Diagnostic Test FTP Service event buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define SCLP_DIAG_FTP_EVBUF_LEN \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) (offsetof(struct sclp_diag_evbuf, mdd) + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) sizeof(struct sclp_diag_ftp))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * struct sclp_diag_ftp - Diagnostic Test FTP Service model-dependent data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * @pcx: code for PCX communication (should be 0x80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * @ldflg: load flag (see defines above)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * @cmd: FTP command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) * @pgsize: page size (0 = 4kB, 1 = large page size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * @srcflg: source flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) * @spare: reserved (zeroes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) * @offset: file offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) * @fsize: file size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) * @length: buffer size resp. bytes transferred
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) * @failaddr: failing address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) * @bufaddr: buffer address, virtual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) * @asce: region or segment table designation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) * @fident: file name (ASCII, zero-terminated)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) struct sclp_diag_ftp {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) u8 pcx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) u8 ldflg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) u8 cmd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) u8 pgsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) u8 srcflg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) u8 spare;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) u64 fsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) u64 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) u64 failaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) u64 bufaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) u64 asce;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) u8 fident[256];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) * struct sclp_diag_evbuf - Diagnostic Test (ET7) Event Buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) * @hdr: event buffer header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) * @route: diagnostic route
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) * @mdd: model-dependent data (@route dependent)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) struct sclp_diag_evbuf {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) struct evbuf_header hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) u16 route;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) struct sclp_diag_ftp ftp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) } mdd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) * struct sclp_diag_sccb - Diagnostic Test (ET7) SCCB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * @hdr: SCCB header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * @evbuf: event buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) struct sclp_diag_sccb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) struct sccb_header hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) struct sclp_diag_evbuf evbuf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #endif /* _SCLP_DIAG_H */