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; 66a0138f59SAlexandra Winter struct chsc_pnso_naid_l2 entries[0]; 67a0138f59SAlexandra Winter } __packed __aligned(PAGE_SIZE); 68a0138f59SAlexandra Winter 69a0138f59SAlexandra Winter #endif /* _ASM_S390_CHSC_H */ 70