xref: /openbmc/linux/arch/s390/include/asm/chsc.h (revision 5224f790)
1a0138f59SAlexandra Winter /* SPDX-License-Identifier: GPL-2.0 */
2a0138f59SAlexandra Winter /*
3a0138f59SAlexandra Winter  * Copyright IBM Corp. 2020
4a0138f59SAlexandra Winter  *
5a0138f59SAlexandra Winter  * Author(s): Alexandra Winter <wintera@linux.ibm.com>
6a0138f59SAlexandra Winter  *
7a0138f59SAlexandra Winter  * Interface for Channel Subsystem Call
8a0138f59SAlexandra Winter  */
9a0138f59SAlexandra Winter #ifndef _ASM_S390_CHSC_H
10a0138f59SAlexandra Winter #define _ASM_S390_CHSC_H
11a0138f59SAlexandra Winter 
12a0138f59SAlexandra Winter #include <uapi/asm/chsc.h>
13a0138f59SAlexandra Winter 
14a0138f59SAlexandra Winter /**
154fea49a7SAlexandra Winter  * Operation codes for CHSC PNSO:
164fea49a7SAlexandra Winter  *    PNSO_OC_NET_BRIDGE_INFO - only addresses that are visible to a bridgeport
174fea49a7SAlexandra Winter  *    PNSO_OC_NET_ADDR_INFO   - all addresses
184fea49a7SAlexandra Winter  */
194fea49a7SAlexandra Winter #define PNSO_OC_NET_BRIDGE_INFO		0
204fea49a7SAlexandra Winter #define PNSO_OC_NET_ADDR_INFO		3
214fea49a7SAlexandra Winter /**
22a0138f59SAlexandra Winter  * struct chsc_pnso_naid_l2 - network address information descriptor
23a0138f59SAlexandra Winter  * @nit:  Network interface token
24a0138f59SAlexandra Winter  * @addr_lnid: network address and logical network id (VLAN ID)
25a0138f59SAlexandra Winter  */
26a0138f59SAlexandra Winter struct chsc_pnso_naid_l2 {
27a0138f59SAlexandra Winter 	u64 nit;
28a0138f59SAlexandra Winter 	struct { u8 mac[6]; u16 lnid; } addr_lnid;
29a0138f59SAlexandra Winter } __packed;
30a0138f59SAlexandra Winter 
31a0138f59SAlexandra Winter struct chsc_pnso_resume_token {
32a0138f59SAlexandra Winter 	u64 t1;
33a0138f59SAlexandra Winter 	u64 t2;
34a0138f59SAlexandra Winter } __packed;
35a0138f59SAlexandra Winter 
36a0138f59SAlexandra Winter struct chsc_pnso_naihdr {
37a0138f59SAlexandra Winter 	struct chsc_pnso_resume_token resume_token;
38a0138f59SAlexandra Winter 	u32:32;
39a0138f59SAlexandra Winter 	u32 instance;
40a0138f59SAlexandra Winter 	u32:24;
41a0138f59SAlexandra Winter 	u8 naids;
42a0138f59SAlexandra Winter 	u32 reserved[3];
43a0138f59SAlexandra Winter } __packed;
44a0138f59SAlexandra Winter 
45a0138f59SAlexandra Winter struct chsc_pnso_area {
46a0138f59SAlexandra Winter 	struct chsc_header request;
47a0138f59SAlexandra Winter 	u8:2;
48a0138f59SAlexandra Winter 	u8 m:1;
49a0138f59SAlexandra Winter 	u8:5;
50a0138f59SAlexandra Winter 	u8:2;
51a0138f59SAlexandra Winter 	u8 ssid:2;
52a0138f59SAlexandra Winter 	u8 fmt:4;
53a0138f59SAlexandra Winter 	u16 sch;
54a0138f59SAlexandra Winter 	u8:8;
55a0138f59SAlexandra Winter 	u8 cssid;
56a0138f59SAlexandra Winter 	u16:16;
57a0138f59SAlexandra Winter 	u8 oc;
58a0138f59SAlexandra Winter 	u32:24;
59a0138f59SAlexandra Winter 	struct chsc_pnso_resume_token resume_token;
60a0138f59SAlexandra Winter 	u32 n:1;
61a0138f59SAlexandra Winter 	u32:31;
62a0138f59SAlexandra Winter 	u32 reserved[3];
63a0138f59SAlexandra Winter 	struct chsc_header response;
64a0138f59SAlexandra Winter 	u32:32;
65a0138f59SAlexandra Winter 	struct chsc_pnso_naihdr naihdr;
66*5224f790SGustavo A. R. Silva 	struct chsc_pnso_naid_l2 entries[];
67a0138f59SAlexandra Winter } __packed __aligned(PAGE_SIZE);
68a0138f59SAlexandra Winter 
69a0138f59SAlexandra Winter #endif /* _ASM_S390_CHSC_H */
70