162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ioctl definitions for qeth driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright IBM Corp. 2004 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Author(s): Thomas Spatzier <tspat@de.ibm.com> 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci#ifndef __ASM_S390_QETH_IOCTL_H__ 1162306a36Sopenharmony_ci#define __ASM_S390_QETH_IOCTL_H__ 1262306a36Sopenharmony_ci#include <linux/types.h> 1362306a36Sopenharmony_ci#include <linux/ioctl.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define SIOC_QETH_ARP_SET_NO_ENTRIES (SIOCDEVPRIVATE) 1662306a36Sopenharmony_ci#define SIOC_QETH_ARP_QUERY_INFO (SIOCDEVPRIVATE + 1) 1762306a36Sopenharmony_ci#define SIOC_QETH_ARP_ADD_ENTRY (SIOCDEVPRIVATE + 2) 1862306a36Sopenharmony_ci#define SIOC_QETH_ARP_REMOVE_ENTRY (SIOCDEVPRIVATE + 3) 1962306a36Sopenharmony_ci#define SIOC_QETH_ARP_FLUSH_CACHE (SIOCDEVPRIVATE + 4) 2062306a36Sopenharmony_ci#define SIOC_QETH_ADP_SET_SNMP_CONTROL (SIOCDEVPRIVATE + 5) 2162306a36Sopenharmony_ci#define SIOC_QETH_GET_CARD_TYPE (SIOCDEVPRIVATE + 6) 2262306a36Sopenharmony_ci#define SIOC_QETH_QUERY_OAT (SIOCDEVPRIVATE + 7) 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct qeth_arp_cache_entry { 2562306a36Sopenharmony_ci __u8 macaddr[6]; 2662306a36Sopenharmony_ci __u8 reserved1[2]; 2762306a36Sopenharmony_ci __u8 ipaddr[16]; /* for both IPv4 and IPv6 */ 2862306a36Sopenharmony_ci __u8 reserved2[32]; 2962306a36Sopenharmony_ci} __attribute__ ((packed)); 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_cienum qeth_arp_ipaddrtype { 3262306a36Sopenharmony_ci QETHARP_IP_ADDR_V4 = 1, 3362306a36Sopenharmony_ci QETHARP_IP_ADDR_V6 = 2, 3462306a36Sopenharmony_ci}; 3562306a36Sopenharmony_cistruct qeth_arp_entrytype { 3662306a36Sopenharmony_ci __u8 mac; 3762306a36Sopenharmony_ci __u8 ip; 3862306a36Sopenharmony_ci} __attribute__((packed)); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci#define QETH_QARP_MEDIASPECIFIC_BYTES 32 4162306a36Sopenharmony_ci#define QETH_QARP_MACADDRTYPE_BYTES 1 4262306a36Sopenharmony_cistruct qeth_arp_qi_entry7 { 4362306a36Sopenharmony_ci __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; 4462306a36Sopenharmony_ci struct qeth_arp_entrytype type; 4562306a36Sopenharmony_ci __u8 macaddr[6]; 4662306a36Sopenharmony_ci __u8 ipaddr[4]; 4762306a36Sopenharmony_ci} __attribute__((packed)); 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistruct qeth_arp_qi_entry7_ipv6 { 5062306a36Sopenharmony_ci __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; 5162306a36Sopenharmony_ci struct qeth_arp_entrytype type; 5262306a36Sopenharmony_ci __u8 macaddr[6]; 5362306a36Sopenharmony_ci __u8 ipaddr[16]; 5462306a36Sopenharmony_ci} __attribute__((packed)); 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cistruct qeth_arp_qi_entry7_short { 5762306a36Sopenharmony_ci struct qeth_arp_entrytype type; 5862306a36Sopenharmony_ci __u8 macaddr[6]; 5962306a36Sopenharmony_ci __u8 ipaddr[4]; 6062306a36Sopenharmony_ci} __attribute__((packed)); 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cistruct qeth_arp_qi_entry7_short_ipv6 { 6362306a36Sopenharmony_ci struct qeth_arp_entrytype type; 6462306a36Sopenharmony_ci __u8 macaddr[6]; 6562306a36Sopenharmony_ci __u8 ipaddr[16]; 6662306a36Sopenharmony_ci} __attribute__((packed)); 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistruct qeth_arp_qi_entry5 { 6962306a36Sopenharmony_ci __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; 7062306a36Sopenharmony_ci struct qeth_arp_entrytype type; 7162306a36Sopenharmony_ci __u8 ipaddr[4]; 7262306a36Sopenharmony_ci} __attribute__((packed)); 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_cistruct qeth_arp_qi_entry5_ipv6 { 7562306a36Sopenharmony_ci __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; 7662306a36Sopenharmony_ci struct qeth_arp_entrytype type; 7762306a36Sopenharmony_ci __u8 ipaddr[16]; 7862306a36Sopenharmony_ci} __attribute__((packed)); 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_cistruct qeth_arp_qi_entry5_short { 8162306a36Sopenharmony_ci struct qeth_arp_entrytype type; 8262306a36Sopenharmony_ci __u8 ipaddr[4]; 8362306a36Sopenharmony_ci} __attribute__((packed)); 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistruct qeth_arp_qi_entry5_short_ipv6 { 8662306a36Sopenharmony_ci struct qeth_arp_entrytype type; 8762306a36Sopenharmony_ci __u8 ipaddr[16]; 8862306a36Sopenharmony_ci} __attribute__((packed)); 8962306a36Sopenharmony_ci/* 9062306a36Sopenharmony_ci * can be set by user if no "media specific information" is wanted 9162306a36Sopenharmony_ci * -> saves a lot of space in user space buffer 9262306a36Sopenharmony_ci */ 9362306a36Sopenharmony_ci#define QETH_QARP_STRIP_ENTRIES 0x8000 9462306a36Sopenharmony_ci#define QETH_QARP_WITH_IPV6 0x4000 9562306a36Sopenharmony_ci#define QETH_QARP_REQUEST_MASK 0x00ff 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci/* data sent to user space as result of query arp ioctl */ 9862306a36Sopenharmony_ci#define QETH_QARP_USER_DATA_SIZE 20000 9962306a36Sopenharmony_ci#define QETH_QARP_MASK_OFFSET 4 10062306a36Sopenharmony_ci#define QETH_QARP_ENTRIES_OFFSET 6 10162306a36Sopenharmony_cistruct qeth_arp_query_user_data { 10262306a36Sopenharmony_ci union { 10362306a36Sopenharmony_ci __u32 data_len; /* set by user space program */ 10462306a36Sopenharmony_ci __u32 no_entries; /* set by kernel */ 10562306a36Sopenharmony_ci } u; 10662306a36Sopenharmony_ci __u16 mask_bits; 10762306a36Sopenharmony_ci char *entries; 10862306a36Sopenharmony_ci} __attribute__((packed)); 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_cistruct qeth_query_oat_data { 11162306a36Sopenharmony_ci __u32 command; 11262306a36Sopenharmony_ci __u32 buffer_len; 11362306a36Sopenharmony_ci __u32 response_len; 11462306a36Sopenharmony_ci __u64 ptr; 11562306a36Sopenharmony_ci}; 11662306a36Sopenharmony_ci#endif /* __ASM_S390_QETH_IOCTL_H__ */ 117