Files
s390-tools/qethqoat/qethqoat.h
Julian Wiedmann 20145b6d06 qethqoat: add OSA-Express7S support
Add the missing identifiers to report the card name and link speed.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
2018-10-25 13:42:12 +02:00

227 lines
5.0 KiB
C

/*
* qethqoat - Query the OSA address table and display physical and logical
* device information
*
* Copyright IBM Corp. 2012, 2017
*
* s390-tools is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
*/
#ifndef _QETHQOAT_H
#define _QETHQOAT_H
#include <linux/types.h>
#define SIOC_QETH_QUERY_OAT (SIOCDEVPRIVATE + 7)
struct qeth_query_oat_data {
__u32 command; /* scope of the query */
__u32 buffer_len; /* length of the buffer */
__u32 response_len; /* length of the response in the buffer */
__u64 ptr; /* pointer to buffer */
};
struct qeth_qoat_ipa_reply {
__u16 len;
__u8 reserved1[2];
__u32 command;
__u16 rc;
__u8 frames_total;
__u8 frames_seq;
__u8 reserved2[4];
__u32 subcommand;
__u8 reserved3[4];
__u32 supported_scope;
__u32 supported_descriptor;
} __attribute__((packed));
struct qeth_qoat_physical {
__u16 pchid;
__u16 chpid;
__u8 physical_mac[6];
__u8 logical_mac[6];
__u16 data_sub_channel;
__u8 cula;
__u8 unit_address;
__u16 physical_port;
__u16 nr_out_queues;
__u16 nr_in_queues;
__u16 nr_active_in_queues;
#define OAT_IFF_CHPID_TYPE_OSD 0x0
#define OAT_IFF_CHPID_TYPE_OSX 0x1
#define OAT_IFF_CHPID_TYPE_OSM 0x2
__u32 interface_flags_chpid_type:4;
__u32 interface_flags:28;
#define OAT_OSA_GEN_OSAE3 0x01
#define OAT_OSA_GEN_OSAE4S 0x02
#define OAT_OSA_GEN_OSAE5S 0x03
#define OAT_OSA_GEN_OSAE6S 0x04
#define OAT_OSA_GEN_OSAE7S 0x05
__u8 osa_gen;
#define OAT_PORT_SPEED_UNKNOWN 0x00
#define OAT_PORT_SPEED_10mbs_half 0x01
#define OAT_PORT_SPEED_10mbs_full 0x02
#define OAT_PORT_SPEED_100mbs_half 0x03
#define OAT_PORT_SPEED_100mbs_full 0x04
#define OAT_PORT_SPEED_1000mbs_half 0x05
#define OAT_PORT_SPEED_1000mbs_full 0x06
#define OAT_PORT_SPEED_NA 0x07
#define OAT_PORT_SPEED_10gbs_full 0x08
#define OAT_PORT_SPEED_25gbs_full 0x0A
__u8 port_speed;
#define OAT_PORT_MEDIA_COPPER 0x01
#define OAT_PORT_MEDIA_MULTI_MODE 0x02
#define OAT_PORT_MEDIA_SINGLE_MODE 0x04
__u8 port_media;
#define OAT_PORT_MEDIA_ATT_JUMBO 0x80
__u8 port_media_att;
__u32 firmware;
__u8 reserved1[24];
} __attribute__((packed));
struct qeth_qoat_logical {
__u8 ip4_primary_router:1;
__u8 ip4_secondary_router:1;
__u8 ip4_active_router:1;
__u8 ip6_primary_router:1;
__u8 ip6_secondary_router:1;
__u8 ip6_active_router:1;
__u8 ip4_vmac_router:1;
__u8 ip6_vmac_router:1;
__u8 ip4_vmac_active:1;
__u8 ip4_vmac_source:1;
__u8 ip4_global_vlan_active:1;
__u8 ip6_vmac_active:1;
__u8 ip6_vmac_source:1;
__u8 ip6_global_vlan_active:1;
__u8 reserved1:2;
__u8 port_name_f:1;
__u8 isolation_f:1;
__u8 isolation_vepa:1;
__u8 reserved2:5;
__u8 reserved3;
__u16 ip4_global_vlanid;
__u8 ip4_vmac[6];
__u16 ip6_global_vlanid;
__u8 ip6_vmac[6];
__u8 port_name[8];
__u32 ip4_ass_enabled;
__u32 ip6_ass_enabled;
__u32 out_csum_enabled;
__u32 out_csum_enabled6;
__u32 in_csum_enabled;
__u32 in_csum_enabled6;
__u32 reserved4;
__u16 l2_vlanid;
__u8 l2_vmac[6];
__u16 nr_des;
__u8 reserved5[14];
} __attribute__((packed));
struct qeth_qoat_des_ip4 {
__u32 ip4_address;
__u32 flags;
} __attribute__((packed));
struct qeth_qoat_des_ip4mc {
__u32 ip4_mc_address;
__u8 ip4_mc_mac[6];
__u8 reserved[6];
} __attribute__((packed));
struct qeth_qoat_des_ip6 {
__u8 ip6_address[16];
__u32 flags;
__u8 reserved[4];
} __attribute__((packed));
struct qeth_qoat_des_ip6mc {
__u8 ip6_mc_address[16];
__u8 ip6_mc_mac[6];
__u8 reserved[2];
} __attribute__((packed));
struct qeth_qoat_des_vmac {
__u8 vmac[6];
__u8 reserved[2];
} __attribute__((packed));
struct qeth_qoat_des_vlan {
__u16 vlanid;
__u8 reserved[2];
} __attribute__((packed));
struct qeth_qoat_des_gmac {
__u8 gmac[6];
__u8 reserved[2];
} __attribute__((packed));
struct qeth_qoat_des_aiq {
__u32 protocol;
__u8 src_address[16];
__u8 des_address[16];
__u16 src_port;
__u16 des_port;
} __attribute__((packed));
struct qeth_qoat_descriptor {
#define OAT_DES_TYPE_IP4 0x00000001
#define OAT_DES_TYPE_IP4MC 0x00000002
#define OAT_DES_TYPE_IP6 0x00000004
#define OAT_DES_TYPE_IP6MC 0x00000008
#define OAT_DES_TYPE_VMAC 0x00000100
#define OAT_DES_TYPE_VLAN 0x00000200
#define OAT_DES_TYPE_GMAC 0x00000400
#define OAT_DES_TYPE_AIQ 0x00010000
__u32 des_type;
__u32 rv_type;
__u16 rv_version;
__u16 qid;
__u32 reply_entry_len;
__u16 reply_entry_version;
__u16 reply_entry_count;
__u16 dh;
__u8 reserved[10];
} __attribute__((packed));
struct qeth_qoat_hdr {
#define OAT_HDR_TYPE_PHYSICAL 0x0004
#define OAT_HDR_TYPE_LOGICAL 0x0008
#define OAT_HDR_TYPE_DESCRIPTOR 0x0010
__u16 hdr_type;
__u16 len;
__u16 version;
__u8 reserved1[6];
__u32 ec;
union {
struct qeth_qoat_physical physical;
struct qeth_qoat_logical logical;
struct qeth_qoat_descriptor descriptor;
} type;
} __attribute__((packed));
struct qeth_print_hdr {
int ip4_h;
int ip4mc_h;
int ip6_h;
int ip6mc_h;
int vmac_h;
int vlan_h;
int gmac_h;
int aiq_h;
};
struct qoat_opts {
int raw;
char *ifname;
int scope;
char *file;
};
#endif