diff options
Diffstat (limited to 'drivers/s390/net/qeth_mpc.h')
-rw-r--r-- | drivers/s390/net/qeth_mpc.h | 219 |
1 files changed, 127 insertions, 92 deletions
diff --git a/drivers/s390/net/qeth_mpc.h b/drivers/s390/net/qeth_mpc.h index d74bc43da72a..1d8083c91765 100644 --- a/drivers/s390/net/qeth_mpc.h +++ b/drivers/s390/net/qeth_mpc.h | |||
@@ -25,14 +25,14 @@ extern unsigned char IPA_PDU_HEADER[]; | |||
25 | 25 | ||
26 | #define IPA_CMD_LENGTH (IPA_PDU_HEADER_SIZE + sizeof(struct qeth_ipa_cmd)) | 26 | #define IPA_CMD_LENGTH (IPA_PDU_HEADER_SIZE + sizeof(struct qeth_ipa_cmd)) |
27 | 27 | ||
28 | #define QETH_SEQ_NO_LENGTH 4 | 28 | #define QETH_SEQ_NO_LENGTH 4 |
29 | #define QETH_MPC_TOKEN_LENGTH 4 | 29 | #define QETH_MPC_TOKEN_LENGTH 4 |
30 | #define QETH_MCL_LENGTH 4 | 30 | #define QETH_MCL_LENGTH 4 |
31 | #define OSA_ADDR_LEN 6 | 31 | #define OSA_ADDR_LEN 6 |
32 | 32 | ||
33 | #define QETH_TIMEOUT (10 * HZ) | 33 | #define QETH_TIMEOUT (10 * HZ) |
34 | #define QETH_IPA_TIMEOUT (45 * HZ) | 34 | #define QETH_IPA_TIMEOUT (45 * HZ) |
35 | #define QETH_IDX_COMMAND_SEQNO 0xffff0000 | 35 | #define QETH_IDX_COMMAND_SEQNO 0xffff0000 |
36 | #define SR_INFO_LEN 16 | 36 | #define SR_INFO_LEN 16 |
37 | 37 | ||
38 | #define QETH_CLEAR_CHANNEL_PARM -10 | 38 | #define QETH_CLEAR_CHANNEL_PARM -10 |
@@ -93,79 +93,107 @@ enum qeth_checksum_types { | |||
93 | */ | 93 | */ |
94 | #define RESET_ROUTING_FLAG 0x10 /* indicate that routing type shall be set */ | 94 | #define RESET_ROUTING_FLAG 0x10 /* indicate that routing type shall be set */ |
95 | enum qeth_routing_types { | 95 | enum qeth_routing_types { |
96 | NO_ROUTER = 0, /* TODO: set to bit flag used in IPA Command */ | 96 | NO_ROUTER = 0, /* TODO: set to bit flag used in IPA Command */ |
97 | PRIMARY_ROUTER = 1, | 97 | PRIMARY_ROUTER = 1, |
98 | SECONDARY_ROUTER = 2, | 98 | SECONDARY_ROUTER = 2, |
99 | MULTICAST_ROUTER = 3, | 99 | MULTICAST_ROUTER = 3, |
100 | PRIMARY_CONNECTOR = 4, | 100 | PRIMARY_CONNECTOR = 4, |
101 | SECONDARY_CONNECTOR = 5, | 101 | SECONDARY_CONNECTOR = 5, |
102 | }; | 102 | }; |
103 | 103 | ||
104 | |||
105 | /* IPA Commands */ | 104 | /* IPA Commands */ |
106 | enum qeth_ipa_cmds { | 105 | enum qeth_ipa_cmds { |
107 | IPA_CMD_STARTLAN = 0x01, | 106 | IPA_CMD_STARTLAN = 0x01, |
108 | IPA_CMD_STOPLAN = 0x02, | 107 | IPA_CMD_STOPLAN = 0x02, |
109 | IPA_CMD_SETVMAC = 0x21, | 108 | IPA_CMD_SETVMAC = 0x21, |
110 | IPA_CMD_DELVMAC = 0x22, | 109 | IPA_CMD_DELVMAC = 0x22, |
111 | IPA_CMD_SETGMAC = 0x23, | 110 | IPA_CMD_SETGMAC = 0x23, |
112 | IPA_CMD_DELGMAC = 0x24, | 111 | IPA_CMD_DELGMAC = 0x24, |
113 | IPA_CMD_SETVLAN = 0x25, | 112 | IPA_CMD_SETVLAN = 0x25, |
114 | IPA_CMD_DELVLAN = 0x26, | 113 | IPA_CMD_DELVLAN = 0x26, |
115 | IPA_CMD_SETCCID = 0x41, | 114 | IPA_CMD_SETCCID = 0x41, |
116 | IPA_CMD_DELCCID = 0x42, | 115 | IPA_CMD_DELCCID = 0x42, |
117 | IPA_CMD_MODCCID = 0x43, | 116 | IPA_CMD_MODCCID = 0x43, |
118 | IPA_CMD_SETIP = 0xb1, | 117 | IPA_CMD_SETIP = 0xb1, |
119 | IPA_CMD_DELIP = 0xb7, | 118 | IPA_CMD_QIPASSIST = 0xb2, |
120 | IPA_CMD_QIPASSIST = 0xb2, | 119 | IPA_CMD_SETASSPARMS = 0xb3, |
121 | IPA_CMD_SETASSPARMS = 0xb3, | 120 | IPA_CMD_SETIPM = 0xb4, |
122 | IPA_CMD_SETIPM = 0xb4, | 121 | IPA_CMD_DELIPM = 0xb5, |
123 | IPA_CMD_DELIPM = 0xb5, | 122 | IPA_CMD_SETRTG = 0xb6, |
124 | IPA_CMD_SETRTG = 0xb6, | 123 | IPA_CMD_DELIP = 0xb7, |
125 | IPA_CMD_SETADAPTERPARMS = 0xb8, | 124 | IPA_CMD_SETADAPTERPARMS = 0xb8, |
126 | IPA_CMD_IPFRAME = 0xb9, | 125 | IPA_CMD_SET_DIAG_ASS = 0xb9, |
127 | IPA_CMD_ADD_ADDR_ENTRY = 0xc1, | 126 | IPA_CMD_CREATE_ADDR = 0xc3, |
128 | IPA_CMD_DELETE_ADDR_ENTRY = 0xc2, | 127 | IPA_CMD_DESTROY_ADDR = 0xc4, |
129 | IPA_CMD_CREATE_ADDR = 0xc3, | 128 | IPA_CMD_REGISTER_LOCAL_ADDR = 0xd1, |
130 | IPA_CMD_DESTROY_ADDR = 0xc4, | 129 | IPA_CMD_UNREGISTER_LOCAL_ADDR = 0xd2, |
131 | IPA_CMD_REGISTER_LOCAL_ADDR = 0xd1, | 130 | IPA_CMD_UNKNOWN = 0x00 |
132 | IPA_CMD_UNREGISTER_LOCAL_ADDR = 0xd2, | ||
133 | }; | 131 | }; |
134 | 132 | ||
135 | enum qeth_ip_ass_cmds { | 133 | enum qeth_ip_ass_cmds { |
136 | IPA_CMD_ASS_START = 0x0001, | 134 | IPA_CMD_ASS_START = 0x0001, |
137 | IPA_CMD_ASS_STOP = 0x0002, | 135 | IPA_CMD_ASS_STOP = 0x0002, |
138 | IPA_CMD_ASS_CONFIGURE = 0x0003, | 136 | IPA_CMD_ASS_CONFIGURE = 0x0003, |
139 | IPA_CMD_ASS_ENABLE = 0x0004, | 137 | IPA_CMD_ASS_ENABLE = 0x0004, |
140 | }; | 138 | }; |
141 | 139 | ||
142 | enum qeth_arp_process_subcmds { | 140 | enum qeth_arp_process_subcmds { |
143 | IPA_CMD_ASS_ARP_SET_NO_ENTRIES = 0x0003, | 141 | IPA_CMD_ASS_ARP_SET_NO_ENTRIES = 0x0003, |
144 | IPA_CMD_ASS_ARP_QUERY_CACHE = 0x0004, | 142 | IPA_CMD_ASS_ARP_QUERY_CACHE = 0x0004, |
145 | IPA_CMD_ASS_ARP_ADD_ENTRY = 0x0005, | 143 | IPA_CMD_ASS_ARP_ADD_ENTRY = 0x0005, |
146 | IPA_CMD_ASS_ARP_REMOVE_ENTRY = 0x0006, | 144 | IPA_CMD_ASS_ARP_REMOVE_ENTRY = 0x0006, |
147 | IPA_CMD_ASS_ARP_FLUSH_CACHE = 0x0007, | 145 | IPA_CMD_ASS_ARP_FLUSH_CACHE = 0x0007, |
148 | IPA_CMD_ASS_ARP_QUERY_INFO = 0x0104, | 146 | IPA_CMD_ASS_ARP_QUERY_INFO = 0x0104, |
149 | IPA_CMD_ASS_ARP_QUERY_STATS = 0x0204, | 147 | IPA_CMD_ASS_ARP_QUERY_STATS = 0x0204, |
150 | }; | 148 | }; |
151 | 149 | ||
152 | /* Return Codes for IPA Commands */ | 150 | |
151 | /* Return Codes for IPA Commands | ||
152 | * according to OSA card Specs */ | ||
153 | |||
153 | enum qeth_ipa_return_codes { | 154 | enum qeth_ipa_return_codes { |
154 | IPA_RC_SUCCESS = 0x0000, | 155 | IPA_RC_SUCCESS = 0x0000, |
155 | IPA_RC_NOTSUPP = 0x0001, | 156 | IPA_RC_NOTSUPP = 0x0001, |
156 | IPA_RC_NO_ACCESS = 0x0002, | 157 | IPA_RC_IP_TABLE_FULL = 0x0002, |
157 | IPA_RC_FAILED = 0x0003, | 158 | IPA_RC_UNKNOWN_ERROR = 0x0003, |
158 | IPA_RC_DATA_MISMATCH = 0xe001, | 159 | IPA_RC_UNSUPPORTED_COMMAND = 0x0004, |
159 | IPA_RC_INVALID_LAN_TYPE = 0xe003, | 160 | IPA_RC_DUP_IPV6_REMOTE = 0x0008, |
160 | IPA_RC_INVALID_LAN_NO = 0xe004, | 161 | IPA_RC_DUP_IPV6_HOME = 0x0010, |
161 | IPA_RC_IPADDR_ALREADY_REG = 0xe005, | 162 | IPA_RC_UNREGISTERED_ADDR = 0x0011, |
162 | IPA_RC_IPADDR_TABLE_FULL = 0xe006, | 163 | IPA_RC_NO_ID_AVAILABLE = 0x0012, |
163 | IPA_RC_IPADDR_ALREADY_USED = 0xe00a, | 164 | IPA_RC_ID_NOT_FOUND = 0x0013, |
164 | IPA_RC_ASSNO_NOT_SUPP = 0xe00d, | 165 | IPA_RC_INVALID_IP_VERSION = 0x0020, |
165 | IPA_RC_ASSCMD_START_FAILED = 0xe00e, | 166 | IPA_RC_LAN_FRAME_MISMATCH = 0x0040, |
166 | IPA_RC_ASSCMD_PART_SUCCESS = 0xe00f, | 167 | IPA_RC_L2_UNSUPPORTED_CMD = 0x2003, |
167 | IPA_RC_IPADDR_NOT_DEFINED = 0xe010, | 168 | IPA_RC_L2_DUP_MAC = 0x2005, |
168 | IPA_RC_LAN_OFFLINE = 0xe080, | 169 | IPA_RC_L2_ADDR_TABLE_FULL = 0x2006, |
170 | IPA_RC_L2_DUP_LAYER3_MAC = 0x200a, | ||
171 | IPA_RC_L2_GMAC_NOT_FOUND = 0x200b, | ||
172 | IPA_RC_L2_MAC_NOT_FOUND = 0x2010, | ||
173 | IPA_RC_L2_INVALID_VLAN_ID = 0x2015, | ||
174 | IPA_RC_L2_DUP_VLAN_ID = 0x2016, | ||
175 | IPA_RC_L2_VLAN_ID_NOT_FOUND = 0x2017, | ||
176 | IPA_RC_DATA_MISMATCH = 0xe001, | ||
177 | IPA_RC_INVALID_MTU_SIZE = 0xe002, | ||
178 | IPA_RC_INVALID_LANTYPE = 0xe003, | ||
179 | IPA_RC_INVALID_LANNUM = 0xe004, | ||
180 | IPA_RC_DUPLICATE_IP_ADDRESS = 0xe005, | ||
181 | IPA_RC_IP_ADDR_TABLE_FULL = 0xe006, | ||
182 | IPA_RC_LAN_PORT_STATE_ERROR = 0xe007, | ||
183 | IPA_RC_SETIP_NO_STARTLAN = 0xe008, | ||
184 | IPA_RC_SETIP_ALREADY_RECEIVED = 0xe009, | ||
185 | IPA_RC_IP_ADDR_ALREADY_USED = 0xe00a, | ||
186 | IPA_RC_MULTICAST_FULL = 0xe00b, | ||
187 | IPA_RC_SETIP_INVALID_VERSION = 0xe00d, | ||
188 | IPA_RC_UNSUPPORTED_SUBCMD = 0xe00e, | ||
189 | IPA_RC_ARP_ASSIST_NO_ENABLE = 0xe00f, | ||
190 | IPA_RC_PRIMARY_ALREADY_DEFINED = 0xe010, | ||
191 | IPA_RC_SECOND_ALREADY_DEFINED = 0xe011, | ||
192 | IPA_RC_INVALID_SETRTG_INDICATOR = 0xe012, | ||
193 | IPA_RC_MC_ADDR_ALREADY_DEFINED = 0xe013, | ||
194 | IPA_RC_LAN_OFFLINE = 0xe080, | ||
195 | IPA_RC_INVALID_IP_VERSION2 = 0xf001, | ||
196 | IPA_RC_FFFF = 0xffff | ||
169 | }; | 197 | }; |
170 | 198 | ||
171 | /* IPA function flags; each flag marks availability of respective function */ | 199 | /* IPA function flags; each flag marks availability of respective function */ |
@@ -183,7 +211,9 @@ enum qeth_ipa_funcs { | |||
183 | IPA_SETADAPTERPARMS = 0x00000400L, | 211 | IPA_SETADAPTERPARMS = 0x00000400L, |
184 | IPA_VLAN_PRIO = 0x00000800L, | 212 | IPA_VLAN_PRIO = 0x00000800L, |
185 | IPA_PASSTHRU = 0x00001000L, | 213 | IPA_PASSTHRU = 0x00001000L, |
214 | IPA_FLUSH_ARP_SUPPORT = 0x00002000L, | ||
186 | IPA_FULL_VLAN = 0x00004000L, | 215 | IPA_FULL_VLAN = 0x00004000L, |
216 | IPA_INBOUND_PASSTHRU = 0x00008000L, | ||
187 | IPA_SOURCE_MAC = 0x00010000L, | 217 | IPA_SOURCE_MAC = 0x00010000L, |
188 | IPA_OSA_MC_ROUTER = 0x00020000L, | 218 | IPA_OSA_MC_ROUTER = 0x00020000L, |
189 | IPA_QUERY_ARP_ASSIST = 0x00040000L, | 219 | IPA_QUERY_ARP_ASSIST = 0x00040000L, |
@@ -204,31 +234,30 @@ enum qeth_ipa_setdelip_flags { | |||
204 | /* SETADAPTER IPA Command: ****************************************************/ | 234 | /* SETADAPTER IPA Command: ****************************************************/ |
205 | enum qeth_ipa_setadp_cmd { | 235 | enum qeth_ipa_setadp_cmd { |
206 | IPA_SETADP_QUERY_COMMANDS_SUPPORTED = 0x01, | 236 | IPA_SETADP_QUERY_COMMANDS_SUPPORTED = 0x01, |
207 | IPA_SETADP_ALTER_MAC_ADDRESS = 0x02, | 237 | IPA_SETADP_ALTER_MAC_ADDRESS = 0x02, |
208 | IPA_SETADP_ADD_DELETE_GROUP_ADDRESS = 0x04, | 238 | IPA_SETADP_ADD_DELETE_GROUP_ADDRESS = 0x04, |
209 | IPA_SETADP_ADD_DELETE_FUNCTIONAL_ADDR = 0x08, | 239 | IPA_SETADP_ADD_DELETE_FUNCTIONAL_ADDR = 0x08, |
210 | IPA_SETADP_SET_ADDRESSING_MODE = 0x10, | 240 | IPA_SETADP_SET_ADDRESSING_MODE = 0x10, |
211 | IPA_SETADP_SET_CONFIG_PARMS = 0x20, | 241 | IPA_SETADP_SET_CONFIG_PARMS = 0x20, |
212 | IPA_SETADP_SET_CONFIG_PARMS_EXTENDED = 0x40, | 242 | IPA_SETADP_SET_CONFIG_PARMS_EXTENDED = 0x40, |
213 | IPA_SETADP_SET_BROADCAST_MODE = 0x80, | 243 | IPA_SETADP_SET_BROADCAST_MODE = 0x80, |
214 | IPA_SETADP_SEND_OSA_MESSAGE = 0x0100, | 244 | IPA_SETADP_SEND_OSA_MESSAGE = 0x0100, |
215 | IPA_SETADP_SET_SNMP_CONTROL = 0x0200, | 245 | IPA_SETADP_SET_SNMP_CONTROL = 0x0200, |
216 | IPA_SETADP_READ_SNMP_PARMS = 0x0400, | 246 | IPA_SETADP_QUERY_CARD_INFO = 0x0400, |
217 | IPA_SETADP_SET_PROMISC_MODE = 0x0800, | 247 | IPA_SETADP_SET_PROMISC_MODE = 0x0800, |
218 | IPA_SETADP_QUERY_CARD_INFO = 0x1000, | ||
219 | }; | 248 | }; |
220 | enum qeth_ipa_mac_ops { | 249 | enum qeth_ipa_mac_ops { |
221 | CHANGE_ADDR_READ_MAC = 0, | 250 | CHANGE_ADDR_READ_MAC = 0, |
222 | CHANGE_ADDR_REPLACE_MAC = 1, | 251 | CHANGE_ADDR_REPLACE_MAC = 1, |
223 | CHANGE_ADDR_ADD_MAC = 2, | 252 | CHANGE_ADDR_ADD_MAC = 2, |
224 | CHANGE_ADDR_DEL_MAC = 4, | 253 | CHANGE_ADDR_DEL_MAC = 4, |
225 | CHANGE_ADDR_RESET_MAC = 8, | 254 | CHANGE_ADDR_RESET_MAC = 8, |
226 | }; | 255 | }; |
227 | enum qeth_ipa_addr_ops { | 256 | enum qeth_ipa_addr_ops { |
228 | CHANGE_ADDR_READ_ADDR = 0, | 257 | CHANGE_ADDR_READ_ADDR = 0, |
229 | CHANGE_ADDR_ADD_ADDR = 1, | 258 | CHANGE_ADDR_ADD_ADDR = 1, |
230 | CHANGE_ADDR_DEL_ADDR = 2, | 259 | CHANGE_ADDR_DEL_ADDR = 2, |
231 | CHANGE_ADDR_FLUSH_ADDR_TABLE = 4, | 260 | CHANGE_ADDR_FLUSH_ADDR_TABLE = 4, |
232 | }; | 261 | }; |
233 | enum qeth_ipa_promisc_modes { | 262 | enum qeth_ipa_promisc_modes { |
234 | SET_PROMISC_MODE_OFF = 0, | 263 | SET_PROMISC_MODE_OFF = 0, |
@@ -407,15 +436,15 @@ struct qeth_ipacmd_hdr { | |||
407 | struct qeth_ipa_cmd { | 436 | struct qeth_ipa_cmd { |
408 | struct qeth_ipacmd_hdr hdr; | 437 | struct qeth_ipacmd_hdr hdr; |
409 | union { | 438 | union { |
410 | struct qeth_ipacmd_setdelip4 setdelip4; | 439 | struct qeth_ipacmd_setdelip4 setdelip4; |
411 | struct qeth_ipacmd_setdelip6 setdelip6; | 440 | struct qeth_ipacmd_setdelip6 setdelip6; |
412 | struct qeth_ipacmd_setdelipm setdelipm; | 441 | struct qeth_ipacmd_setdelipm setdelipm; |
413 | struct qeth_ipacmd_setassparms setassparms; | 442 | struct qeth_ipacmd_setassparms setassparms; |
414 | struct qeth_ipacmd_layer2setdelmac setdelmac; | 443 | struct qeth_ipacmd_layer2setdelmac setdelmac; |
415 | struct qeth_ipacmd_layer2setdelvlan setdelvlan; | 444 | struct qeth_ipacmd_layer2setdelvlan setdelvlan; |
416 | struct qeth_create_destroy_address create_destroy_addr; | 445 | struct qeth_create_destroy_address create_destroy_addr; |
417 | struct qeth_ipacmd_setadpparms setadapterparms; | 446 | struct qeth_ipacmd_setadpparms setadapterparms; |
418 | struct qeth_set_routing setrtg; | 447 | struct qeth_set_routing setrtg; |
419 | } data; | 448 | } data; |
420 | } __attribute__ ((packed)); | 449 | } __attribute__ ((packed)); |
421 | 450 | ||
@@ -433,6 +462,12 @@ enum qeth_ipa_arp_return_codes { | |||
433 | QETH_IPA_ARP_RC_Q_NO_DATA = 0x0008, | 462 | QETH_IPA_ARP_RC_Q_NO_DATA = 0x0008, |
434 | }; | 463 | }; |
435 | 464 | ||
465 | |||
466 | extern char * | ||
467 | qeth_get_ipa_msg(enum qeth_ipa_return_codes rc); | ||
468 | extern char * | ||
469 | qeth_get_ipa_cmd_name(enum qeth_ipa_cmds cmd); | ||
470 | |||
436 | #define QETH_SETASS_BASE_LEN (sizeof(struct qeth_ipacmd_hdr) + \ | 471 | #define QETH_SETASS_BASE_LEN (sizeof(struct qeth_ipacmd_hdr) + \ |
437 | sizeof(struct qeth_ipacmd_setassparms_hdr)) | 472 | sizeof(struct qeth_ipacmd_setassparms_hdr)) |
438 | #define QETH_IPA_ARP_DATA_POS(buffer) (buffer + IPA_PDU_HEADER_SIZE + \ | 473 | #define QETH_IPA_ARP_DATA_POS(buffer) (buffer + IPA_PDU_HEADER_SIZE + \ |
@@ -521,7 +556,7 @@ extern unsigned char DM_ACT[]; | |||
521 | extern unsigned char IDX_ACTIVATE_READ[]; | 556 | extern unsigned char IDX_ACTIVATE_READ[]; |
522 | extern unsigned char IDX_ACTIVATE_WRITE[]; | 557 | extern unsigned char IDX_ACTIVATE_WRITE[]; |
523 | 558 | ||
524 | #define IDX_ACTIVATE_SIZE 0x22 | 559 | #define IDX_ACTIVATE_SIZE 0x22 |
525 | #define QETH_IDX_ACT_ISSUER_RM_TOKEN(buffer) (buffer+0x0c) | 560 | #define QETH_IDX_ACT_ISSUER_RM_TOKEN(buffer) (buffer+0x0c) |
526 | #define QETH_IDX_NO_PORTNAME_REQUIRED(buffer) ((buffer)[0x0b]&0x80) | 561 | #define QETH_IDX_NO_PORTNAME_REQUIRED(buffer) ((buffer)[0x0b]&0x80) |
527 | #define QETH_IDX_ACT_FUNC_LEVEL(buffer) (buffer+0x10) | 562 | #define QETH_IDX_ACT_FUNC_LEVEL(buffer) (buffer+0x10) |