diff options
Diffstat (limited to 'drivers/s390/net/qeth_core_mpc.h')
| -rw-r--r-- | drivers/s390/net/qeth_core_mpc.h | 200 | 
1 files changed, 177 insertions, 23 deletions
diff --git a/drivers/s390/net/qeth_core_mpc.h b/drivers/s390/net/qeth_core_mpc.h index e37dd8c4bf4..cf6a90ed42a 100644 --- a/drivers/s390/net/qeth_core_mpc.h +++ b/drivers/s390/net/qeth_core_mpc.h @@ -1,6 +1,4 @@  /* - *  drivers/s390/net/qeth_core_mpc.h - *   *    Copyright IBM Corp. 2007   *    Author(s): Frank Pavlic <fpavlic@de.ibm.com>,   *		 Thomas Spatzier <tspat@de.ibm.com>, @@ -70,24 +68,6 @@ enum qeth_link_types {  	QETH_LINK_TYPE_ATM_NATIVE   = 0x90,  }; -enum qeth_tr_macaddr_modes { -	QETH_TR_MACADDR_NONCANONICAL = 0, -	QETH_TR_MACADDR_CANONICAL    = 1, -}; - -enum qeth_tr_broadcast_modes { -	QETH_TR_BROADCAST_ALLRINGS = 0, -	QETH_TR_BROADCAST_LOCAL    = 1, -}; - -/* these values match CHECKSUM_* in include/linux/skbuff.h */ -enum qeth_checksum_types { -	SW_CHECKSUMMING = 0, /* TODO: set to bit flag used in IPA Command */ -	HW_CHECKSUMMING = 1, -	NO_CHECKSUMMING = 2, -}; -#define QETH_CHECKSUM_DEFAULT SW_CHECKSUMMING -  /*   * Routing stuff   */ @@ -124,10 +104,12 @@ enum qeth_ipa_cmds {  	IPA_CMD_DELIP			= 0xb7,  	IPA_CMD_SETADAPTERPARMS		= 0xb8,  	IPA_CMD_SET_DIAG_ASS		= 0xb9, +	IPA_CMD_SETBRIDGEPORT		= 0xbe,  	IPA_CMD_CREATE_ADDR		= 0xc3,  	IPA_CMD_DESTROY_ADDR		= 0xc4,  	IPA_CMD_REGISTER_LOCAL_ADDR	= 0xd1,  	IPA_CMD_UNREGISTER_LOCAL_ADDR	= 0xd2, +	IPA_CMD_ADDRESS_CHANGE_NOTIF	= 0xd3,  	IPA_CMD_UNKNOWN			= 0x00  }; @@ -197,7 +179,9 @@ enum qeth_ipa_return_codes {  	IPA_RC_INVALID_SETRTG_INDICATOR	= 0xe012,  	IPA_RC_MC_ADDR_ALREADY_DEFINED	= 0xe013,  	IPA_RC_LAN_OFFLINE		= 0xe080, +	IPA_RC_VEPA_TO_VEB_TRANSITION	= 0xe090,  	IPA_RC_INVALID_IP_VERSION2	= 0xf001, +	IPA_RC_ENOMEM			= 0xfffe,  	IPA_RC_FFFF			= 0xffff  };  /* for DELIP */ @@ -257,6 +241,7 @@ enum qeth_ipa_setadp_cmd {  	IPA_SETADP_SET_PROMISC_MODE		= 0x00000800L,  	IPA_SETADP_SET_DIAG_ASSIST		= 0x00002000L,  	IPA_SETADP_SET_ACCESS_CONTROL		= 0x00010000L, +	IPA_SETADP_QUERY_OAT			= 0x00080000L,  };  enum qeth_ipa_mac_ops {  	CHANGE_ADDR_READ_MAC		= 0, @@ -287,8 +272,28 @@ enum qeth_ipa_set_access_mode_rc {  	SET_ACCESS_CTRL_RC_ALREADY_ISOLATED	= 0x0010,  	SET_ACCESS_CTRL_RC_NONE_SHARED_ADAPTER	= 0x0014,  	SET_ACCESS_CTRL_RC_ACTIVE_CHECKSUM_OFF	= 0x0018, +	SET_ACCESS_CTRL_RC_REFLREL_UNSUPPORTED	= 0x0022, +	SET_ACCESS_CTRL_RC_REFLREL_FAILED	= 0x0024, +	SET_ACCESS_CTRL_RC_REFLREL_DEACT_FAILED	= 0x0028, +}; +enum qeth_card_info_card_type { +	CARD_INFO_TYPE_1G_COPPER_A	= 0x61, +	CARD_INFO_TYPE_1G_FIBRE_A	= 0x71, +	CARD_INFO_TYPE_10G_FIBRE_A	= 0x91, +	CARD_INFO_TYPE_1G_COPPER_B	= 0xb1, +	CARD_INFO_TYPE_1G_FIBRE_B	= 0xa1, +	CARD_INFO_TYPE_10G_FIBRE_B	= 0xc1, +}; +enum qeth_card_info_port_mode { +	CARD_INFO_PORTM_HALFDUPLEX	= 0x0002, +	CARD_INFO_PORTM_FULLDUPLEX	= 0x0003, +}; +enum qeth_card_info_port_speed { +	CARD_INFO_PORTS_10M		= 0x00000005, +	CARD_INFO_PORTS_100M		= 0x00000006, +	CARD_INFO_PORTS_1G		= 0x00000007, +	CARD_INFO_PORTS_10G		= 0x00000008,  }; -  /* (SET)DELIP(M) IPA stuff ***************************************************/  struct qeth_ipacmd_setdelip4 { @@ -333,7 +338,7 @@ struct qeth_arp_query_data {  	__u16 request_bits;  	__u16 reply_bits;  	__u32 no_entries; -	char data; +	char data; /* only for replies */  } __attribute__((packed));  /* used as parameter for arp_query reply */ @@ -404,8 +409,28 @@ struct qeth_snmp_ureq {  /* SET_ACCESS_CONTROL: same format for request and reply */  struct qeth_set_access_ctrl {  	__u32 subcmd_code; +	__u8 reserved[8];  } __attribute__((packed)); +struct qeth_query_oat { +	__u32 subcmd_code; +	__u8 reserved[12]; +} __packed; + +struct qeth_qoat_priv { +	__u32 buffer_len; +	__u32 response_len; +	char *buffer; +}; + +struct qeth_query_card_info { +	__u8	card_type; +	__u8	reserved1; +	__u16	port_mode; +	__u32	port_speed; +	__u32	reserved2; +}; +  struct qeth_ipacmd_setadpparms_hdr {  	__u32 supp_hw_cmds;  	__u32 reserved1; @@ -425,6 +450,8 @@ struct qeth_ipacmd_setadpparms {  		struct qeth_change_addr change_addr;  		struct qeth_snmp_cmd snmp;  		struct qeth_set_access_ctrl set_access_ctrl; +		struct qeth_query_oat query_oat; +		struct qeth_query_card_info card_info;  		__u32 mode;  	} data;  } __attribute__ ((packed)); @@ -456,6 +483,12 @@ enum qeth_diags_trace_cmds {  	QETH_DIAGS_CMD_TRACE_QUERY	= 0x0010,  }; +enum qeth_diags_trap_action { +	QETH_DIAGS_TRAP_ARM	= 0x01, +	QETH_DIAGS_TRAP_DISARM	= 0x02, +	QETH_DIAGS_TRAP_CAPTURE = 0x04, +}; +  struct qeth_ipacmd_diagass {  	__u32  host_tod2;  	__u32:32; @@ -465,9 +498,128 @@ struct qeth_ipacmd_diagass {  	__u8   type;  	__u8   action;  	__u16  options; -	__u32:32; +	__u32  ext; +	__u8   cdata[64];  } __attribute__ ((packed)); +/* SETBRIDGEPORT IPA Command:	 *********************************************/ +enum qeth_ipa_sbp_cmd { +	IPA_SBP_QUERY_COMMANDS_SUPPORTED	= 0x00000000L, +	IPA_SBP_RESET_BRIDGE_PORT_ROLE		= 0x00000001L, +	IPA_SBP_SET_PRIMARY_BRIDGE_PORT		= 0x00000002L, +	IPA_SBP_SET_SECONDARY_BRIDGE_PORT	= 0x00000004L, +	IPA_SBP_QUERY_BRIDGE_PORTS		= 0x00000008L, +	IPA_SBP_BRIDGE_PORT_STATE_CHANGE	= 0x00000010L, +}; + +struct net_if_token { +	__u16 devnum; +	__u8 cssid; +	__u8 iid; +	__u8 ssid; +	__u8 chpid; +	__u16 chid; +} __packed; + +struct mac_addr_lnid { +	__u8 mac[6]; +	__u16 lnid; +} __packed; + +struct qeth_ipacmd_sbp_hdr { +	__u32 supported_sbp_cmds; +	__u32 enabled_sbp_cmds; +	__u16 cmdlength; +	__u16 reserved1; +	__u32 command_code; +	__u16 return_code; +	__u8  used_total; +	__u8  seq_no; +	__u32 reserved2; +} __packed; + +struct qeth_sbp_query_cmds_supp { +	__u32 supported_cmds; +	__u32 reserved; +} __packed; + +struct qeth_sbp_reset_role { +} __packed; + +struct qeth_sbp_set_primary { +	struct net_if_token token; +} __packed; + +struct qeth_sbp_set_secondary { +} __packed; + +struct qeth_sbp_port_entry { +		__u8 role; +		__u8 state; +		__u8 reserved1; +		__u8 reserved2; +		struct net_if_token token; +} __packed; + +struct qeth_sbp_query_ports { +	__u8 primary_bp_supported; +	__u8 secondary_bp_supported; +	__u8 num_entries; +	__u8 entry_length; +	struct qeth_sbp_port_entry entry[]; +} __packed; + +struct qeth_sbp_state_change { +	__u8 primary_bp_supported; +	__u8 secondary_bp_supported; +	__u8 num_entries; +	__u8 entry_length; +	struct qeth_sbp_port_entry entry[]; +} __packed; + +struct qeth_ipacmd_setbridgeport { +	struct qeth_ipacmd_sbp_hdr hdr; +	union { +		struct qeth_sbp_query_cmds_supp query_cmds_supp; +		struct qeth_sbp_reset_role reset_role; +		struct qeth_sbp_set_primary set_primary; +		struct qeth_sbp_set_secondary set_secondary; +		struct qeth_sbp_query_ports query_ports; +		struct qeth_sbp_state_change state_change; +	} data; +} __packed; + +/* ADDRESS_CHANGE_NOTIFICATION adapter-initiated "command" *******************/ +/* Bitmask for entry->change_code. Both bits may be raised.		     */ +enum qeth_ipa_addr_change_code { +	IPA_ADDR_CHANGE_CODE_VLANID		= 0x01, +	IPA_ADDR_CHANGE_CODE_MACADDR		= 0x02, +	IPA_ADDR_CHANGE_CODE_REMOVAL		= 0x80,	/* else addition */ +}; +enum qeth_ipa_addr_change_retcode { +	IPA_ADDR_CHANGE_RETCODE_OK		= 0x0000, +	IPA_ADDR_CHANGE_RETCODE_LOSTEVENTS	= 0x0010, +}; +enum qeth_ipa_addr_change_lostmask { +	IPA_ADDR_CHANGE_MASK_OVERFLOW		= 0x01, +	IPA_ADDR_CHANGE_MASK_STATECHANGE	= 0x02, +}; + +struct qeth_ipacmd_addr_change_entry { +	struct net_if_token token; +	struct mac_addr_lnid addr_lnid; +	__u8 change_code; +	__u8 reserved1; +	__u16 reserved2; +} __packed; + +struct qeth_ipacmd_addr_change { +	__u8 lost_event_mask; +	__u8 reserved; +	__u16 num_entries; +	struct qeth_ipacmd_addr_change_entry entry[]; +} __packed; +  /* Header for each IPA command */  struct qeth_ipacmd_hdr {  	__u8   command; @@ -497,6 +649,8 @@ struct qeth_ipa_cmd {  		struct qeth_ipacmd_setadpparms		setadapterparms;  		struct qeth_set_routing			setrtg;  		struct qeth_ipacmd_diagass		diagass; +		struct qeth_ipacmd_setbridgeport	sbp; +		struct qeth_ipacmd_addr_change		addrchange;  	} data;  } __attribute__ ((packed));  | 
