i2o.h revision 1.5
1/* $NetBSD: i2o.h,v 1.5 2001/06/12 15:17:27 wiz Exp $ */ 2 3/*- 4 * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Andrew Doran. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. All advertising materials mentioning features or use of this software 19 * must display the following acknowledgement: 20 * This product includes software developed by the NetBSD 21 * Foundation, Inc. and its contributors. 22 * 4. Neither the name of The NetBSD Foundation nor the names of its 23 * contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 * POSSIBILITY OF SUCH DAMAGE. 37 */ 38 39/* 40 * Structures and constants, as presented by the I2O specification revision 41 * 1.5 (obtainable from http://www.intelligent-io.com/). Currently, only 42 * what's useful to us is defined in this file. 43 */ 44 45#ifndef _I2O_I2O_H_ 46#define _I2O_I2O_H_ 47 48/* 49 * ================= Miscellenous definitions ================= 50 */ 51 52/* Organisation IDs */ 53#define I2O_ORG_DPT 0x001b 54#define I2O_ORG_INTEL 0x0028 55#define I2O_ORG_AMI 0x1000 56 57/* Macros to assist in building message headers */ 58#define I2O_MSGFLAGS(s) (I2O_VERSION_11 | (sizeof(struct s) << 14)) 59#define I2O_MSGFUNC(t, f) ((t) | (I2O_TID_HOST << 12) | ((f) << 24)) 60 61/* Common message function codes with no payload or an undefined payload */ 62#define I2O_UTIL_NOP 0x00 63#define I2O_EXEC_IOP_CLEAR 0xbe 64#define I2O_EXEC_SYS_QUIESCE 0xc3 65#define I2O_EXEC_SYS_ENABLE 0xd1 66#define I2O_PRIVATE_MESSAGE 0xff 67 68/* Device class codes */ 69#define I2O_CLASS_EXECUTIVE 0x00 70#define I2O_CLASS_DDM 0x01 71#define I2O_CLASS_RANDOM_BLOCK_STORAGE 0x10 72#define I2O_CLASS_SEQUENTIAL_STORAGE 0x11 73#define I2O_CLASS_LAN 0x20 74#define I2O_CLASS_WAN 0x30 75#define I2O_CLASS_FIBRE_CHANNEL_PORT 0x40 76#define I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL 0x41 77#define I2O_CLASS_SCSI_PERIPHERAL 0x51 78#define I2O_CLASS_ATE_PORT 0x60 79#define I2O_CLASS_ATE_PERIPHERAL 0x61 80#define I2O_CLASS_FLOPPY_CONTROLLER 0x70 81#define I2O_CLASS_FLOPPY_DEVICE 0x71 82#define I2O_CLASS_BUS_ADAPTER_PORT 0x80 83 84#define I2O_CLASS_ANY 0xffffffff 85 86/* Reply status codes */ 87#define I2O_STATUS_SUCCESS 0x00 88#define I2O_STATUS_ABORT_DIRTY 0x01 89#define I2O_STATUS_ABORT_NO_DATA_XFER 0x02 90#define I2O_STATUS_ABORT_PARTIAL_XFER 0x03 91#define I2O_STATUS_ERROR_DIRTY 0x04 92#define I2O_STATUS_ERROR_NO_DATA_XFER 0x05 93#define I2O_STATUS_ERROR_PARTIAL_XFER 0x06 94#define I2O_STATUS_PROCESS_ABORT_DIRTY 0x08 95#define I2O_STATUS_PROCESS_ABORT_NO_DATA_XFER 0x09 96#define I2O_STATUS_PROCESS_ABORT_PARTIAL_XFER 0x0a 97#define I2O_STATUS_TRANSACTION_ERROR 0x0b 98#define I2O_STATUS_PROGRESS_REPORT 0x80 99 100/* Detailed status codes */ 101#define I2O_DSC_SUCCESS 0x00 102#define I2O_DSC_BAD_KEY 0x02 103#define I2O_DSC_TCL_ERROR 0x03 104#define I2O_DSC_REPLY_BUFFER_FULL 0x04 105#define I2O_DSC_NO_SUCH_PAGE 0x05 106#define I2O_DSC_INSUFFICIENT_RESOURCE_SOFT 0x06 107#define I2O_DSC_INSUFFICIENT_RESOURCE_HARD 0x07 108#define I2O_DSC_CHAIN_BUFFER_TOO_LARGE 0x09 109#define I2O_DSC_UNSUPPORTED_FUNCTION 0x0a 110#define I2O_DSC_DEVICE_LOCKED 0x0b 111#define I2O_DSC_DEVICE_RESET 0x0c 112#define I2O_DSC_INAPPROPRIATE_FUNCTION 0x0d 113#define I2O_DSC_INVALID_INITIATOR_ADDRESS 0x0e 114#define I2O_DSC_INVALID_MESSAGE_FLAGS 0x0f 115#define I2O_DSC_INVALID_OFFSET 0x10 116#define I2O_DSC_INVALID_PARAMETER 0x11 117#define I2O_DSC_INVALID_REQUEST 0x12 118#define I2O_DSC_INVALID_TARGET_ADDRESS 0x13 119#define I2O_DSC_MESSAGE_TOO_LARGE 0x14 120#define I2O_DSC_MESSAGE_TOO_SMALL 0x15 121#define I2O_DSC_MISSING_PARAMETER 0x16 122#define I2O_DSC_TIMEOUT 0x17 123#define I2O_DSC_UNKNOWN_ERROR 0x18 124#define I2O_DSC_UNKNOWN_FUNCTION 0x19 125#define I2O_DSC_UNSUPPORTED_VERSION 0x1a 126#define I2O_DSC_DEVICE_BUSY 0x1b 127#define I2O_DSC_DEVICE_NOT_AVAILABLE 0x1c 128 129/* Message versions */ 130#define I2O_VERSION_10 0x00 131#define I2O_VERSION_11 0x01 132#define I2O_VERSION_20 0x02 133 134/* Commonly used TIDs */ 135#define I2O_TID_IOP 0 136#define I2O_TID_HOST 1 137#define I2O_TID_NONE 4095 138 139/* SGL flags. This list covers only a fraction of the possibilities. */ 140#define I2O_SGL_IGNORE 0x00000000 141#define I2O_SGL_SIMPLE 0x10000000 142#define I2O_SGL_PAGE_LIST 0x20000000 143 144#define I2O_SGL_BC_32BIT 0x01000000 145#define I2O_SGL_BC_64BIT 0x02000000 146#define I2O_SGL_BC_96BIT 0x03000000 147#define I2O_SGL_DATA_OUT 0x04000000 148#define I2O_SGL_END_BUFFER 0x40000000 149#define I2O_SGL_END 0x80000000 150 151/* Serial number formats */ 152#define I2O_SNFMT_UNKNOWN 0 153#define I2O_SNFMT_BINARY 1 154#define I2O_SNFMT_ASCII 2 155#define I2O_SNFMT_UNICODE 3 156#define I2O_SNFMT_LAN_MAC 4 157#define I2O_SNFMT_WAN_MAC 5 158 159/* 160 * ================= Common structures ================= 161 */ 162 163/* 164 * Standard I2O message frame. All message frames begin with this. 165 * 166 * Bits Field Meaning 167 * ---- ------------- ---------------------------------------------------- 168 * 0-2 msgflags Message header version. Must be 001 (little endian). 169 * 3 msgflags Reserved. 170 * 4-7 msgflags Offset to SGLs expressed as # of 32-bit words. 171 * 8-15 msgflags Control flags. 172 * 16-31 msgflags Message frame size expressed as # of 32-bit words. 173 * 0-11 msgfunc TID of target. 174 * 12-23 msgfunc TID of initiator. 175 * 24-31 msgfunc Function (i.e., type of message). 176 */ 177struct i2o_msg { 178 u_int32_t msgflags; 179 u_int32_t msgfunc; 180 u_int32_t msgictx; /* Initiator context */ 181 u_int32_t msgtctx; /* Transaction context */ 182 183 /* Message payload */ 184 185} __attribute__ ((__packed__)); 186 187#define I2O_MSGFLAGS_STATICMF 0x0100 188#define I2O_MSGFLAGS_64BIT 0x0200 189#define I2O_MSGFLAGS_MULTI 0x1000 190#define I2O_MSGFLAGS_FAIL 0x2000 191#define I2O_MSGFLAGS_LAST_REPLY 0x4000 192#define I2O_MSGFLAGS_REPLY 0x8000 193 194/* 195 * Standard reply frame. msgflags, msgfunc, msgictx and msgtctx have the 196 * same meaning as in `struct i2o_msg'. 197 */ 198struct i2o_reply { 199 u_int32_t msgflags; 200 u_int32_t msgfunc; 201 u_int32_t msgictx; 202 u_int32_t msgtctx; 203 u_int16_t detail; /* Detailed status code */ 204 u_int8_t reserved; 205 u_int8_t reqstatus; /* Request status code */ 206 207 /* Reply payload */ 208 209} __attribute__ ((__packed__)); 210 211/* 212 * Fault notification reply, returned when a message frame can not be 213 * processed (i.e I2O_MSGFLAGS_FAIL is set in the reply). 214 */ 215struct i2o_fault_notify { 216 u_int32_t msgflags; 217 u_int32_t msgfunc; 218 u_int32_t msgictx; 219 u_int32_t msgtctx; /* Not valid! */ 220 u_int8_t lowestver; 221 u_int8_t highestver; 222 u_int8_t severity; 223 u_int8_t failurecode; 224 u_int16_t failingiop; /* Bits 0-12 only */ 225 u_int16_t failinghostunit; 226 u_int32_t agelimit; 227 u_int32_t lowmfa; 228 u_int32_t highmfa; 229}; 230 231/* 232 * Hardware resource table. Not documented here. 233 */ 234struct i2o_hrt_entry { 235 u_int32_t adapterid; 236 u_int16_t controllingtid; 237 u_int8_t busnumber; 238 u_int8_t bustype; 239 u_int8_t businfo[8]; 240} __attribute__ ((__packed__)); 241 242struct i2o_hrt { 243 u_int16_t numentries; 244 u_int8_t entrysize; 245 u_int8_t hrtversion; 246 u_int32_t changeindicator; 247 struct i2o_hrt_entry entry[1]; 248} __attribute__ ((__packed__)); 249 250/* 251 * Logical configuration table entry. Bitfields are broken down as follows: 252 * 253 * Bits Field Meaning 254 * ----- -------------- --------------------------------------------------- 255 * 0-11 classid Class ID. 256 * 12-15 classid Class version. 257 * 0-11 usertid User TID 258 * 12-23 usertid Parent TID. 259 * 24-31 usertid BIOS info. 260 */ 261struct i2o_lct_entry { 262 u_int16_t entrysize; 263 u_int16_t localtid; /* Bits 0-12 only */ 264 u_int32_t changeindicator; 265 u_int32_t deviceflags; 266 u_int16_t classid; 267 u_int16_t orgid; 268 u_int32_t subclassinfo; 269 u_int32_t usertid; 270 u_int8_t identitytag[8]; 271 u_int32_t eventcaps; 272} __attribute__ ((__packed__)); 273 274/* 275 * Logical configuration table header. 276 */ 277struct i2o_lct { 278 u_int16_t tablesize; 279 u_int16_t flags; 280 u_int32_t iopflags; 281 u_int32_t changeindicator; 282 struct i2o_lct_entry entry[1]; 283} __attribute__ ((__packed__)); 284 285/* 286 * IOP system table. Bitfields are broken down as follows: 287 * 288 * Bits Field Meaning 289 * ----- -------------- --------------------------------------------------- 290 * 0-11 iopid IOP ID. 291 * 12-31 iopid Reserved. 292 * 0-11 segnumber Segment number. 293 * 12-15 segnumber I2O version. 294 * 16-23 segnumber IOP state. 295 * 24-31 segnumber Messenger type. 296 */ 297struct i2o_systab_entry { 298 u_int16_t orgid; 299 u_int16_t reserved0; 300 u_int32_t iopid; 301 u_int32_t segnumber; 302 u_int16_t inboundmsgframesize; 303 u_int16_t reserved1; 304 u_int32_t lastchanged; 305 u_int32_t iopcaps; 306 u_int32_t inboundmsgportaddresslow; 307 u_int32_t inboundmsgportaddresshigh; 308} __attribute__ ((__packed__)); 309 310struct i2o_systab { 311 u_int8_t numentries; 312 u_int8_t version; 313 u_int16_t reserved0; 314 u_int32_t changeindicator; 315 u_int32_t reserved1[2]; 316 struct i2o_systab_entry entry[1]; 317} __attribute__ ((__packed__)); 318 319/* 320 * IOP status record. Bitfields are broken down as follows: 321 * 322 * Bits Field Meaning 323 * ----- -------------- --------------------------------------------------- 324 * 0-11 iopid IOP ID. 325 * 12-15 iopid Reserved. 326 * 16-31 iopid Host unit ID. 327 * 0-11 segnumber Segment number. 328 * 12-15 segnumber I2O version. 329 * 16-23 segnumber IOP state. 330 * 24-31 segnumber Messenger type. 331 */ 332struct i2o_status { 333 u_int16_t orgid; 334 u_int16_t reserved0; 335 u_int32_t iopid; 336 u_int32_t segnumber; 337 u_int16_t inboundmframesize; 338 u_int8_t initcode; 339 u_int8_t reserved1; 340 u_int32_t maxinboundmframes; 341 u_int32_t currentinboundmframes; 342 u_int32_t maxoutboundmframes; 343 u_int8_t productid[24]; 344 u_int32_t expectedlctsize; 345 u_int32_t iopcaps; 346 u_int32_t desiredprivmemsize; 347 u_int32_t currentprivmemsize; 348 u_int32_t currentprivmembase; 349 u_int32_t desiredpriviosize; 350 u_int32_t currentpriviosize; 351 u_int32_t currentpriviobase; 352 u_int8_t reserved2[3]; 353 u_int8_t syncbyte; 354} __attribute__ ((__packed__)); 355 356#define I2O_IOP_STATE_INITIALIZING 0x01 357#define I2O_IOP_STATE_RESET 0x02 358#define I2O_IOP_STATE_HOLD 0x04 359#define I2O_IOP_STATE_READY 0x05 360#define I2O_IOP_STATE_OPERATIONAL 0x08 361#define I2O_IOP_STATE_FAILED 0x10 362#define I2O_IOP_STATE_FAULTED 0x11 363 364/* 365 * ================= Executive class messages ================= 366 */ 367 368#define I2O_EXEC_STATUS_GET 0xa0 369struct i2o_exec_status_get { 370 u_int32_t msgflags; 371 u_int32_t msgfunc; 372 u_int32_t reserved[4]; 373 u_int32_t addrlow; 374 u_int32_t addrhigh; 375 u_int32_t length; 376} __attribute__ ((__packed__)); 377 378#define I2O_EXEC_OUTBOUND_INIT 0xa1 379struct i2o_exec_outbound_init { 380 u_int32_t msgflags; 381 u_int32_t msgfunc; 382 u_int32_t msgictx; 383 u_int32_t msgtctx; 384 u_int32_t pagesize; 385 u_int32_t flags; /* init code, outbound msg size */ 386} __attribute__ ((__packed__)); 387 388#define I2O_EXEC_OUTBOUND_INIT_IN_PROGRESS 1 389#define I2O_EXEC_OUTBOUND_INIT_REJECTED 2 390#define I2O_EXEC_OUTBOUND_INIT_FAILED 3 391#define I2O_EXEC_OUTBOUND_INIT_COMPLETE 4 392 393#define I2O_EXEC_LCT_NOTIFY 0xa2 394struct i2o_exec_lct_notify { 395 u_int32_t msgflags; 396 u_int32_t msgfunc; 397 u_int32_t msgictx; 398 u_int32_t msgtctx; 399 u_int32_t classid; 400 u_int32_t changeindicator; 401} __attribute__ ((__packed__)); 402 403#define I2O_EXEC_SYS_TAB_SET 0xa3 404struct i2o_exec_sys_tab_set { 405 u_int32_t msgflags; 406 u_int32_t msgfunc; 407 u_int32_t msgictx; 408 u_int32_t msgtctx; 409 u_int32_t iopid; 410 u_int32_t segnumber; 411} __attribute__ ((__packed__)); 412 413#define I2O_EXEC_HRT_GET 0xa8 414struct i2o_exec_hrt_get { 415 u_int32_t msgflags; 416 u_int32_t msgfunc; 417 u_int32_t msgictx; 418 u_int32_t msgtctx; 419} __attribute__ ((__packed__)); 420 421#define I2O_EXEC_IOP_RESET 0xbd 422struct i2o_exec_iop_reset { 423 u_int32_t msgflags; 424 u_int32_t msgfunc; 425 u_int32_t reserved[4]; 426 u_int32_t statuslow; 427 u_int32_t statushigh; 428} __attribute__ ((__packed__)); 429 430#define I2O_RESET_IN_PROGRESS 0x01 431#define I2O_RESET_REJECTED 0x02 432 433/* 434 * ================= Executive class parameter groups ================= 435 */ 436 437#define I2O_PARAM_EXEC_LCT_SCALAR 0x0101 438#define I2O_PARAM_EXEC_LCT_TABLE 0x0102 439 440/* 441 * ================= HBA class messages ================= 442 */ 443 444#define I2O_HBA_BUS_SCAN 0x89 445struct i2o_hba_bus_scan { 446 u_int32_t msgflags; 447 u_int32_t msgfunc; 448 u_int32_t msgictx; 449 u_int32_t msgtctx; 450} __attribute__ ((__packed__)); 451 452/* 453 * ================= HBA class parameter groups ================= 454 */ 455 456#define I2O_PARAM_HBA_CTLR_INFO 0x0000 457struct i2o_param_hba_ctlr_info { 458 u_int8_t bustype; 459 u_int8_t busstate; 460 u_int16_t reserved; 461 u_int8_t busname[12]; 462} __attribute__ ((__packed__)); 463 464#define I2O_HBA_BUS_GENERIC 0x00 465#define I2O_HBA_BUS_SCSI 0x01 466#define I2O_HBA_BUS_FCA 0x10 467 468#define I2O_PARAM_HBA_SCSI_PORT_INFO 0x0001 469struct i2o_param_hba_scsi_port_info { 470 u_int8_t physicalif; 471 u_int8_t electricalif; 472 u_int8_t isosynchonrous; 473 u_int8_t connectortype; 474 u_int8_t connectorgender; 475 u_int8_t reserved1; 476 u_int16_t reserved2; 477 u_int32_t maxnumberofdevices; 478} __attribute__ ((__packed__)); 479 480#define I2O_PARAM_HBA_SCSI_CTLR_INFO 0x0200 481struct i2o_param_hba_scsi_ctlr_info { 482 u_int8_t scsitype; 483 u_int8_t protection; 484 u_int8_t settings; 485 u_int8_t reserved; 486 u_int32_t initiatorid; 487 u_int64_t scanlun0only; 488 u_int16_t disabledevice; 489 u_int8_t maxoffset; 490 u_int8_t maxdatawidth; 491 u_int64_t maxsyncrate; 492} __attribute__ ((__packed__)); 493 494/* 495 * ================= Utility messages ================= 496 */ 497 498#define I2O_UTIL_ABORT 0x01 499struct i2o_util_abort { 500 u_int32_t msgflags; 501 u_int32_t msgfunc; 502 u_int32_t msgictx; 503 u_int32_t msgtctx; 504 u_int32_t flags; /* abort type and function type */ 505 u_int32_t tctxabort; 506} __attribute__ ((__packed__)); 507 508#define I2O_UTIL_ABORT_EXACT 0x00000000 509#define I2O_UTIL_ABORT_FUNCTION 0x00010000 510#define I2O_UTIL_ABORT_TRANSACTION 0x00020000 511#define I2O_UTIL_ABORT_WILD 0x00030000 512 513#define I2O_UTIL_ABORT_CLEAN 0x00040000 514 515struct i2o_util_abort_reply { 516 u_int32_t msgflags; 517 u_int32_t msgfunc; 518 u_int32_t msgictx; 519 u_int32_t msgtctx; 520 u_int32_t count; 521} __attribute__ ((__packed__)); 522 523#define I2O_UTIL_PARAMS_SET 0x05 524#define I2O_UTIL_PARAMS_GET 0x06 525struct i2o_util_params_op { 526 u_int32_t msgflags; 527 u_int32_t msgfunc; 528 u_int32_t msgictx; 529 u_int32_t msgtctx; 530 u_int32_t flags; 531} __attribute__ ((__packed__)); 532 533#define I2O_PARAMS_OP_FIELD_GET 1 534#define I2O_PARAMS_OP_LIST_GET 2 535#define I2O_PARAMS_OP_MORE_GET 3 536#define I2O_PARAMS_OP_SIZE_GET 4 537#define I2O_PARAMS_OP_TABLE_GET 5 538#define I2O_PARAMS_OP_FIELD_SET 6 539#define I2O_PARAMS_OP_LIST_SET 7 540#define I2O_PARAMS_OP_ROW_ADD 8 541#define I2O_PARAMS_OP_ROW_DELETE 9 542#define I2O_PARAMS_OP_TABLE_CLEAR 10 543 544struct i2o_param_op_list_header { 545 u_int16_t count; 546 u_int16_t reserved; 547} __attribute__ ((__packed__)); 548 549struct i2o_param_op_all_template { 550 u_int16_t operation; 551 u_int16_t group; 552 u_int16_t fieldcount; 553 u_int16_t fields[1]; 554} __attribute__ ((__packed__)); 555 556struct i2o_param_op_results { 557 u_int16_t count; 558 u_int16_t reserved; 559} __attribute__ ((__packed__)); 560 561struct i2o_param_read_results { 562 u_int16_t blocksize; 563 u_int8_t blockstatus; 564 u_int8_t errorinfosize; 565} __attribute__ ((__packed__)); 566 567struct i2o_param_table_results { 568 u_int16_t blocksize; 569 u_int8_t blockstatus; 570 u_int8_t errorinfosize; 571 u_int16_t rowcount; 572 u_int16_t moreflag; 573} __attribute__ ((__packed__)); 574 575#define I2O_UTIL_CLAIM 0x09 576struct i2o_util_claim { 577 u_int32_t msgflags; 578 u_int32_t msgfunc; 579 u_int32_t msgictx; 580 u_int32_t msgtctx; 581 u_int32_t flags; 582} __attribute__ ((__packed__)); 583 584#define I2O_UTIL_CLAIM_RESET_SENSITIVE 0x00000002 585#define I2O_UTIL_CLAIM_STATE_SENSITIVE 0x00000004 586#define I2O_UTIL_CLAIM_CAPACITY_SENSITIVE 0x00000008 587#define I2O_UTIL_CLAIM_NO_PEER_SERVICE 0x00000010 588#define I2O_UTIL_CLAIM_NO_MANAGEMENT_SERVICE 0x00000020 589 590#define I2O_UTIL_CLAIM_PRIMARY_USER 0x01000000 591#define I2O_UTIL_CLAIM_AUTHORIZED_USER 0x02000000 592#define I2O_UTIL_CLAIM_SECONDARY_USER 0x03000000 593#define I2O_UTIL_CLAIM_MANAGEMENT_USER 0x04000000 594 595#define I2O_UTIL_CLAIM_RELEASE 0x0b 596struct i2o_util_claim_release { 597 u_int32_t msgflags; 598 u_int32_t msgfunc; 599 u_int32_t msgictx; 600 u_int32_t msgtctx; 601 u_int32_t flags; /* User flags as per I2O_UTIL_CLAIM */ 602} __attribute__ ((__packed__)); 603 604#define I2O_UTIL_CLAIM_RELEASE_CONDITIONAL 0x00000001 605 606#define I2O_UTIL_CONFIG_DIALOG 0x10 607struct i2o_util_config_dialog { 608 u_int32_t msgflags; 609 u_int32_t msgfunc; 610 u_int32_t msgictx; 611 u_int32_t msgtctx; 612 u_int32_t pageno; 613} __attribute__ ((__packed__)); 614 615#define I2O_UTIL_EVENT_REGISTER 0x13 616struct i2o_util_event_register { 617 u_int32_t msgflags; 618 u_int32_t msgfunc; 619 u_int32_t msgictx; 620 u_int32_t msgtctx; 621 u_int32_t eventmask; 622} __attribute__ ((__packed__)); 623 624struct i2o_util_event_register_reply { 625 u_int32_t msgflags; 626 u_int32_t msgfunc; 627 u_int32_t msgictx; 628 u_int32_t msgtctx; 629 u_int32_t event; 630 u_int32_t eventdata[1]; 631} __attribute__ ((__packed__)); 632 633/* Generic events. */ 634#define I2O_EVENT_GEN_DEVICE_STATE 0x00400000 635#define I2O_EVENT_GEN_VENDOR_EVENT 0x00800000 636#define I2O_EVENT_GEN_FIELD_MODIFIED 0x01000000 637#define I2O_EVENT_GEN_EVENT_MASK_MODIFIED 0x02000000 638#define I2O_EVENT_GEN_DEVICE_RESET 0x04000000 639#define I2O_EVENT_GEN_CAPABILITY_CHANGE 0x08000000 640#define I2O_EVENT_GEN_LOCK_RELEASE 0x10000000 641#define I2O_EVENT_GEN_NEED_CONFIGURATION 0x20000000 642#define I2O_EVENT_GEN_GENERAL_WARNING 0x40000000 643#define I2O_EVENT_GEN_STATE_CHANGE 0x80000000 644 645/* Executive class events. */ 646#define I2O_EVENT_EXEC_RESOURCE_LIMITS 0x00000001 647#define I2O_EVENT_EXEC_CONNECTION_FAIL 0x00000002 648#define I2O_EVENT_EXEC_ADAPTER_FAULT 0x00000004 649#define I2O_EVENT_EXEC_POWER_FAIL 0x00000008 650#define I2O_EVENT_EXEC_RESET_PENDING 0x00000010 651#define I2O_EVENT_EXEC_RESET_IMMINENT 0x00000020 652#define I2O_EVENT_EXEC_HARDWARE_FAIL 0x00000040 653#define I2O_EVENT_EXEC_XCT_CHANGE 0x00000080 654#define I2O_EVENT_EXEC_NEW_LCT_ENTRY 0x00000100 655#define I2O_EVENT_EXEC_MODIFIED_LCT 0x00000200 656#define I2O_EVENT_EXEC_DDM_AVAILIBILITY 0x00000400 657 658/* LAN class events. */ 659#define I2O_EVENT_LAN_LINK_DOWN 0x00000001 660#define I2O_EVENT_LAN_LINK_UP 0x00000002 661#define I2O_EVENT_LAN_MEDIA_CHANGE 0x00000004 662 663/* 664 * ================= Utility parameter groups ================= 665 */ 666 667#define I2O_PARAM_DEVICE_IDENTITY 0xf100 668struct i2o_param_device_identity { 669 u_int32_t classid; 670 u_int16_t ownertid; 671 u_int16_t parenttid; 672 u_int8_t vendorinfo[16]; 673 u_int8_t productinfo[16]; 674 u_int8_t description[16]; 675 u_int8_t revlevel[8]; 676 u_int8_t snformat; 677 u_int8_t serialnumber[1]; 678} __attribute__ ((__packed__)); 679 680#define I2O_PARAM_DDM_IDENTITY 0xf101 681struct i2o_param_ddm_identity { 682 u_int16_t ddmtid; 683 u_int8_t name[24]; 684 u_int8_t revlevel[8]; 685 u_int8_t snformat; 686 u_int8_t serialnumber[12]; 687} __attribute__ ((__packed__)); 688 689/* 690 * ================= Block storage class messages ================= 691 */ 692 693#define I2O_RBS_BLOCK_READ 0x30 694struct i2o_rbs_block_read { 695 u_int32_t msgflags; 696 u_int32_t msgfunc; 697 u_int32_t msgictx; 698 u_int32_t msgtctx; 699 u_int32_t flags; /* flags, time multipler, read ahead */ 700 u_int32_t datasize; 701 u_int32_t lowoffset; 702 u_int32_t highoffset; 703} __attribute__ ((__packed__)); 704 705#define I2O_RBS_BLOCK_READ_NO_RETRY 0x01 706#define I2O_RBS_BLOCK_READ_SOLO 0x02 707#define I2O_RBS_BLOCK_READ_CACHE_READ 0x04 708#define I2O_RBS_BLOCK_READ_PREFETCH 0x08 709#define I2O_RBS_BLOCK_READ_CACHE_ONLY 0x10 710 711#define I2O_RBS_BLOCK_WRITE 0x31 712struct i2o_rbs_block_write { 713 u_int32_t msgflags; 714 u_int32_t msgfunc; 715 u_int32_t msgictx; 716 u_int32_t msgtctx; 717 u_int32_t flags; /* flags, time multipler */ 718 u_int32_t datasize; 719 u_int32_t lowoffset; 720 u_int32_t highoffset; 721} __attribute__ ((__packed__)); 722 723#define I2O_RBS_BLOCK_WRITE_NO_RETRY 0x01 724#define I2O_RBS_BLOCK_WRITE_SOLO 0x02 725#define I2O_RBS_BLOCK_WRITE_CACHE_NONE 0x04 726#define I2O_RBS_BLOCK_WRITE_CACHE_WT 0x08 727#define I2O_RBS_BLOCK_WRITE_CACHE_WB 0x10 728 729#define I2O_RBS_CACHE_FLUSH 0x37 730struct i2o_rbs_cache_flush { 731 u_int32_t msgflags; 732 u_int32_t msgfunc; 733 u_int32_t msgictx; 734 u_int32_t msgtctx; 735 u_int32_t flags; /* flags, time multipler */ 736} __attribute__ ((__packed__)); 737 738#define I2O_RBS_MEDIA_MOUNT 0x41 739struct i2o_rbs_media_mount { 740 u_int32_t msgflags; 741 u_int32_t msgfunc; 742 u_int32_t msgictx; 743 u_int32_t msgtctx; 744 u_int32_t mediaid; 745 u_int32_t loadflags; 746} __attribute__ ((__packed__)); 747 748#define I2O_RBS_MEDIA_EJECT 0x43 749struct i2o_rbs_media_eject { 750 u_int32_t msgflags; 751 u_int32_t msgfunc; 752 u_int32_t msgictx; 753 u_int32_t msgtctx; 754 u_int32_t mediaid; 755} __attribute__ ((__packed__)); 756 757#define I2O_RBS_MEDIA_LOCK 0x49 758struct i2o_rbs_media_lock { 759 u_int32_t msgflags; 760 u_int32_t msgfunc; 761 u_int32_t msgictx; 762 u_int32_t msgtctx; 763 u_int32_t mediaid; 764} __attribute__ ((__packed__)); 765 766#define I2O_RBS_MEDIA_UNLOCK 0x4b 767struct i2o_rbs_media_unlock { 768 u_int32_t msgflags; 769 u_int32_t msgfunc; 770 u_int32_t msgictx; 771 u_int32_t msgtctx; 772 u_int32_t mediaid; 773} __attribute__ ((__packed__)); 774 775/* Standard RBS reply frame. */ 776struct i2o_rbs_reply { 777 u_int32_t msgflags; 778 u_int32_t msgfunc; 779 u_int32_t msgictx; 780 u_int32_t msgtctx; 781 u_int16_t detail; 782 u_int8_t retrycount; 783 u_int8_t reqstatus; 784 u_int32_t transfercount; 785 u_int64_t offset; /* Error replies only */ 786} __attribute__ ((__packed__)); 787 788/* 789 * ================= Block storage class parameter groups ================= 790 */ 791 792#define I2O_PARAM_RBS_DEVICE_INFO 0x0000 793struct i2o_param_rbs_device_info { 794 u_int8_t type; 795 u_int8_t npaths; 796 u_int16_t powerstate; 797 u_int32_t blocksize; 798 u_int64_t capacity; 799 u_int32_t capabilities; 800 u_int32_t state; 801} __attribute__ ((__packed__)); 802 803#define I2O_RBS_TYPE_DIRECT 0x00 804#define I2O_RBS_TYPE_WORM 0x04 805#define I2O_RBS_TYPE_CDROM 0x05 806#define I2O_RBS_TYPE_OPTICAL 0x07 807 808#define I2O_RBS_CAP_CACHING 0x00000001 809#define I2O_RBS_CAP_MULTI_PATH 0x00000002 810#define I2O_RBS_CAP_DYNAMIC_CAPACITY 0x00000004 811#define I2O_RBS_CAP_REMOVEABLE_MEDIA 0x00000008 812#define I2O_RBS_CAP_REMOVEABLE_DEVICE 0x00000010 813#define I2O_RBS_CAP_READ_ONLY 0x00000020 814#define I2O_RBS_CAP_LOCKOUT 0x00000040 815#define I2O_RBS_CAP_BOOT_BYPASS 0x00000080 816#define I2O_RBS_CAP_COMPRESSION 0x00000100 817#define I2O_RBS_CAP_DATA_SECURITY 0x00000200 818#define I2O_RBS_CAP_RAID 0x00000400 819 820#define I2O_RBS_STATE_CACHING 0x00000001 821#define I2O_RBS_STATE_POWERED_ON 0x00000002 822#define I2O_RBS_STATE_READY 0x00000004 823#define I2O_RBS_STATE_MEDIA_LOADED 0x00000008 824#define I2O_RBS_STATE_DEVICE_LOADED 0x00000010 825#define I2O_RBS_STATE_READ_ONLY 0x00000020 826#define I2O_RBS_STATE_LOCKOUT 0x00000040 827#define I2O_RBS_STATE_BOOT_BYPASS 0x00000080 828#define I2O_RBS_STATE_COMPRESSION 0x00000100 829#define I2O_RBS_STATE_DATA_SECURITY 0x00000200 830#define I2O_RBS_STATE_RAID 0x00000400 831 832#define I2O_PARAM_RBS_OPERATION 0x0001 833struct i2o_param_rbs_operation { 834 u_int8_t autoreass; 835 u_int8_t reasstolerance; 836 u_int8_t numretries; 837 u_int8_t reserved0; 838 u_int32_t reasssize; 839 u_int32_t expectedtimeout; 840 u_int32_t rwvtimeout; 841 u_int32_t rwvtimeoutbase; 842 u_int32_t timeoutbase; 843 u_int32_t orderedreqdepth; 844 u_int32_t atomicwritesize; 845} __attribute__ ((__packed__)); 846 847#define I2O_PARAM_RBS_CACHE_CONTROL 0x0003 848struct i2o_param_rbs_cache_control { 849 u_int32_t totalcachesize; 850 u_int32_t readcachesize; 851 u_int32_t writecachesize; 852 u_int8_t writepolicy; 853 u_int8_t readpolicy; 854 u_int8_t errorcorrection; 855 u_int8_t reserved; 856} __attribute__ ((__packed__)); 857 858/* 859 * ================= SCSI peripheral class messages ================= 860 */ 861 862#define I2O_SCSI_DEVICE_RESET 0x27 863struct i2o_scsi_device_reset { 864 u_int32_t msgflags; 865 u_int32_t msgfunc; 866 u_int32_t msgictx; 867 u_int32_t msgtctx; 868} __attribute__ ((__packed__)); 869 870#define I2O_SCSI_SCB_EXEC 0x81 871struct i2o_scsi_scb_exec { 872 u_int32_t msgflags; 873 u_int32_t msgfunc; 874 u_int32_t msgictx; 875 u_int32_t msgtctx; 876 u_int32_t flags; /* CDB length and flags */ 877 u_int8_t cdb[16]; 878 u_int32_t datalen; 879} __attribute__ ((__packed__)); 880 881#define I2O_SCB_FLAG_SENSE_DATA_IN_MESSAGE 0x00200000 882#define I2O_SCB_FLAG_SENSE_DATA_IN_BUFFER 0x00600000 883#define I2O_SCB_FLAG_SIMPLE_QUEUE_TAG 0x00800000 884#define I2O_SCB_FLAG_HEAD_QUEUE_TAG 0x01000000 885#define I2O_SCB_FLAG_ORDERED_QUEUE_TAG 0x01800000 886#define I2O_SCB_FLAG_ACA_QUEUE_TAG 0x02000000 887#define I2O_SCB_FLAG_ENABLE_DISCONNECT 0x20000000 888#define I2O_SCB_FLAG_XFER_FROM_DEVICE 0x40000000 889#define I2O_SCB_FLAG_XFER_TO_DEVICE 0x80000000 890 891#define I2O_SCSI_SCB_ABORT 0x83 892struct i2o_scsi_scb_abort { 893 u_int32_t msgflags; 894 u_int32_t msgfunc; 895 u_int32_t msgictx; 896 u_int32_t msgtctx; 897 u_int32_t tctxabort; 898} __attribute__ ((__packed__)); 899 900struct i2o_scsi_reply { 901 u_int32_t msgflags; 902 u_int32_t msgfunc; 903 u_int32_t msgictx; 904 u_int32_t msgtctx; 905 u_int8_t scsistatus; 906 u_int8_t hbastatus; 907 u_int8_t reserved; 908 u_int8_t reqstatus; 909 u_int32_t datalen; 910 u_int32_t senselen; 911 u_int8_t sense[40]; 912} __attribute__ ((__packed__)); 913 914#define I2O_SCSI_DSC_SUCCESS 0x00 915#define I2O_SCSI_DSC_REQUEST_ABORTED 0x02 916#define I2O_SCSI_DSC_UNABLE_TO_ABORT 0x03 917#define I2O_SCSI_DSC_COMPLETE_WITH_ERROR 0x04 918#define I2O_SCSI_DSC_ADAPTER_BUSY 0x05 919#define I2O_SCSI_DSC_REQUEST_INVALID 0x06 920#define I2O_SCSI_DSC_PATH_INVALID 0x07 921#define I2O_SCSI_DSC_DEVICE_NOT_PRESENT 0x08 922#define I2O_SCSI_DSC_UNABLE_TO_TERMINATE 0x09 923#define I2O_SCSI_DSC_SELECTION_TIMEOUT 0x0a 924#define I2O_SCSI_DSC_COMMAND_TIMEOUT 0x0b 925#define I2O_SCSI_DSC_MR_MESSAGE_RECEIVED 0x0d 926#define I2O_SCSI_DSC_SCSI_BUS_RESET 0x0e 927#define I2O_SCSI_DSC_PARITY_ERROR_FAILURE 0x0f 928#define I2O_SCSI_DSC_AUTOSENSE_FAILED 0x10 929#define I2O_SCSI_DSC_NO_ADAPTER 0x11 930#define I2O_SCSI_DSC_DATA_OVERRUN 0x12 931#define I2O_SCSI_DSC_UNEXPECTED_BUS_FREE 0x13 932#define I2O_SCSI_DSC_SEQUENCE_FAILURE 0x14 933#define I2O_SCSI_DSC_REQUEST_LENGTH_ERROR 0x15 934#define I2O_SCSI_DSC_PROVIDE_FAILURE 0x16 935#define I2O_SCSI_DSC_BDR_MESSAGE_SENT 0x17 936#define I2O_SCSI_DSC_REQUEST_TERMINATED 0x18 937#define I2O_SCSI_DSC_IDE_MESSAGE_SENT 0x33 938#define I2O_SCSI_DSC_RESOURCE_UNAVAILABLE 0x34 939#define I2O_SCSI_DSC_UNACKNOWLEDGED_EVENT 0x35 940#define I2O_SCSI_DSC_MESSAGE_RECEIVED 0x36 941#define I2O_SCSI_DSC_INVALID_CDB 0x37 942#define I2O_SCSI_DSC_LUN_INVALID 0x38 943#define I2O_SCSI_DSC_SCSI_TID_INVALID 0x39 944#define I2O_SCSI_DSC_FUNCTION_UNAVAILABLE 0x3a 945#define I2O_SCSI_DSC_NO_NEXUS 0x3b 946#define I2O_SCSI_DSC_SCSI_IID_INVALID 0x3c 947#define I2O_SCSI_DSC_CDB_RECEIVED 0x3d 948#define I2O_SCSI_DSC_LUN_ALREADY_ENABLED 0x3e 949#define I2O_SCSI_DSC_BUS_BUSY 0x3f 950#define I2O_SCSI_DSC_QUEUE_FROZEN 0x40 951 952/* 953 * ================= SCSI peripheral class parameter groups ================= 954 */ 955 956#define I2O_PARAM_SCSI_DEVICE_INFO 0x0000 957struct i2o_param_scsi_device_info { 958 u_int8_t devicetype; 959 u_int8_t flags; 960 u_int16_t reserved0; 961 u_int32_t identifier; 962 u_int8_t luninfo[8]; 963 u_int32_t queuedepth; 964 u_int8_t reserved1; 965 u_int8_t negoffset; 966 u_int8_t negdatawidth; 967 u_int8_t reserved2; 968 u_int64_t negsyncrate; 969} __attribute__ ((__packed__)); 970 971/* 972 * ================= LAN class messages ================= 973 */ 974 975#define I2O_LAN_PACKET_SEND 0x3b 976struct i2o_lan_packet_send { 977 u_int32_t msgflags; 978 u_int32_t msgfunc; 979 u_int32_t msgictx; 980 u_int32_t tcw; 981 982 /* SGL follows */ 983}; 984 985#define I2O_LAN_TCW_ACCESS_PRI_MASK 0x00000007 986#define I2O_LAN_TCW_SUPPRESS_CRC 0x00000008 987#define I2O_LAN_TCW_SUPPRESS_LOOPBACK 0x00000010 988#define I2O_LAN_TCW_CKSUM_NETWORK 0x00000020 989#define I2O_LAN_TCW_CKSUM_TRANSPORT 0x00000040 990#define I2O_LAN_TCW_REPLY_BATCH 0x00000000 991#define I2O_LAN_TCW_REPLY_IMMEDIATELY 0x40000000 992#define I2O_LAN_TCW_REPLY_UNSUCCESSFUL 0x80000000 993#define I2O_LAN_TCW_REPLY_NONE 0xc0000000 994 995#define I2O_LAN_SDU_SEND 0x3d 996struct i2o_lan_sdu_send { 997 u_int32_t msgflags; 998 u_int32_t msgfunc; 999 u_int32_t msgictx; 1000 u_int32_t tcw; /* As per PACKET_SEND. */ 1001 1002 /* SGL follows */ 1003}; 1004 1005struct i2o_lan_send_reply { 1006 u_int32_t msgflags; 1007 u_int32_t msgfunc; 1008 u_int32_t msgictx; 1009 u_int32_t trl; 1010 u_int16_t detail; 1011 u_int8_t reserved; 1012 u_int8_t reqstatus; 1013 u_int32_t tctx[1]; 1014}; 1015 1016#define I2O_LAN_RECEIVE_POST 0x3e 1017struct i2o_lan_receive_post { 1018 u_int32_t msgflags; 1019 u_int32_t msgfunc; 1020 u_int32_t msgictx; 1021 u_int32_t bktcnt; 1022 1023 /* SGL follows */ 1024}; 1025 1026struct i2o_lan_pdb { 1027 u_int32_t bctx; 1028 u_int32_t pktoff; 1029 u_int32_t pktlen; 1030}; 1031 1032#define I2O_LAN_FRAG_VALID 0x00 1033#define I2O_LAN_FRAG_VALID_MASK foo 1034 1035struct i2o_lan_receive_reply { 1036 u_int32_t msgflags; 1037 u_int32_t msgfunc; 1038 u_int32_t msgictx; 1039 u_int8_t trlcount; 1040 u_int8_t trlesize; 1041 u_int8_t reserved; 1042 u_int8_t trlflags; 1043 u_int32_t bucketsleft; 1044 struct i2o_lan_pdb pdb[1]; 1045}; 1046 1047#define I2O_LAN_RESET 0x35 1048struct i2o_lan_reset { 1049 u_int32_t msgflags; 1050 u_int32_t msgfunc; 1051 u_int32_t msgictx; 1052 u_int16_t reserved; 1053 u_int16_t resrcflags; 1054}; 1055 1056#define I2O_LAN_RESRC_RETURN_BUCKETS 0x0001 1057#define I2O_LAN_RESRC_RETURN_XMITS 0x0002 1058 1059#define I2O_LAN_SUSPEND 0x37 1060struct i2o_lan_suspend { 1061 u_int32_t msgflags; 1062 u_int32_t msgfunc; 1063 u_int32_t msgictx; 1064 u_int16_t reserved; 1065 u_int16_t resrcflags; /* As per RESET. */ 1066}; 1067 1068#define I2O_LAN_DSC_SUCCESS 0x00 1069#define I2O_LAN_DSC_DEVICE_FAILURE 0x01 1070#define I2O_LAN_DSC_DESTINATION_NOT_FOUND 0x02 1071#define I2O_LAN_DSC_TRANSMIT_ERROR 0x03 1072#define I2O_LAN_DSC_TRANSMIT_ABORTED 0x04 1073#define I2O_LAN_DSC_RECEIVE_ERROR 0x05 1074#define I2O_LAN_DSC_RECEIVE_ABORTED 0x06 1075#define I2O_LAN_DSC_DMA_ERROR 0x07 1076#define I2O_LAN_DSC_BAD_PACKET_DETECTED 0x08 1077#define I2O_LAN_DSC_OUT_OF_MEMORY 0x09 1078#define I2O_LAN_DSC_BUCKET_OVERRUN 0x0a 1079#define I2O_LAN_DSC_IOP_INTERNAL_ERROR 0x0b 1080#define I2O_LAN_DSC_CANCELED 0x0c 1081#define I2O_LAN_DSC_INVALID_TRANSACTION_CONTEXT 0x0d 1082#define I2O_LAN_DSC_DEST_ADDRESS_DETECTED 0x0e 1083#define I2O_LAN_DSC_DEST_ADDRESS_OMITTED 0x0f 1084#define I2O_LAN_DSC_PARTIAL_PACKET_RETURNED 0x10 1085#define I2O_LAN_DSC_TEMP_SUSPENDED_STATE 0x11 1086 1087/* 1088 * ================= LAN class parameter groups ================= 1089 */ 1090 1091#define I2O_PARAM_LAN_DEVICE_INFO 0x0000 1092struct i2o_param_lan_device_info { 1093 u_int16_t lantype; 1094 u_int16_t flags; 1095 u_int8_t addrfmt; 1096 u_int8_t reserved1; 1097 u_int16_t reserved2; 1098 u_int32_t minpktsize; 1099 u_int32_t maxpktsize; 1100 u_int8_t hwaddr[8]; 1101 u_int64_t maxtxbps; 1102 u_int64_t maxrxbps; 1103}; 1104 1105#define I2O_LAN_TYPE_ETHERNET 0x0030 1106#define I2O_LAN_TYPE_100BASEVG 0x0040 1107#define I2O_LAN_TYPE_TOKEN_RING 0x0050 1108#define I2O_LAN_TYPE_FDDI 0x0060 1109#define I2O_LAN_TYPE_FIBRECHANNEL 0x0070 1110 1111#define I2O_PARAM_LAN_MAC_ADDRESS 0x0001 1112struct i2o_param_lan_mac_address { 1113 u_int8_t activeaddr[8]; 1114 u_int8_t localaddr[8]; 1115 u_int8_t addrmask[8]; 1116 u_int8_t filtermask[4]; 1117 u_int8_t hwfiltermask[4]; 1118 u_int32_t maxmcastaddr; 1119 u_int32_t maxfilterperfect; 1120 u_int32_t maxfilterimperfect; 1121}; 1122 1123#define I2O_PARAM_LAN_MCAST_MAC_ADDRESS 0x0002 1124/* 1125 * This one's a table, not a scalar. 1126 */ 1127 1128#define I2O_PARAM_LAN_BATCH_CONTROL 0x0003 1129struct i2o_param_lan_batch_control { 1130 u_int32_t batchflags; 1131 u_int32_t risingloaddly; 1132 u_int32_t risingloadthresh; 1133 u_int32_t fallingloaddly; 1134 u_int32_t fallingloadthresh; 1135 u_int32_t maxbatchcount; 1136 u_int32_t maxbatchdelay; 1137 u_int32_t transcompdelay; 1138}; 1139 1140#define I2O_PARAM_LAN_OPERATION 0x0004 1141struct i2o_param_lan_operation { 1142 u_int32_t pktprepad; 1143 u_int32_t userflags; 1144 u_int32_t pktorphanlimit; 1145}; 1146 1147#define I2O_PARAM_LAN_MEDIA_OPERATION 0x0005 1148struct i2o_param_lan_media_operation { 1149 u_int32_t connectortype; 1150 u_int32_t connectiontype; 1151 u_int32_t curtxbps; 1152 u_int32_t currxbps; 1153 u_int8_t fullduplex; 1154 u_int8_t linkstatus; 1155 u_int8_t badpkthandling; 1156}; 1157 1158#define I2O_LAN_CONNECTOR_OTHER 0x00 1159#define I2O_LAN_CONNECTOR_UNKNOWN 0x01 1160#define I2O_LAN_CONNECTOR_AUI 0x02 1161#define I2O_LAN_CONNECTOR_UTP 0x03 1162#define I2O_LAN_CONNECTOR_BNC 0x04 1163#define I2O_LAN_CONNECTOR_RJ45 0x05 1164#define I2O_LAN_CONNECTOR_STP_DB9 0x06 1165#define I2O_LAN_CONNECTOR_FIBER_MIC 0x07 1166#define I2O_LAN_CONNECTOR_APPLE_AUI 0x08 1167#define I2O_LAN_CONNECTOR_MII 0x09 1168#define I2O_LAN_CONNECTOR_COPPER_DB9 0x0a 1169#define I2O_LAN_CONNECTOR_COPPER_AW 0x0b 1170#define I2O_LAN_CONNECTOR_OPTICAL_LW 0x0c 1171#define I2O_LAN_CONNECTOR_SIP 0x0d 1172#define I2O_LAN_CONNECTOR_OPTICAL_SW 0x0e 1173 1174#define I2O_LAN_CONNECTION_UNKNOWN 0x0000 1175 1176#define I2O_LAN_CONNECTION_ETHERNET_AUI 0x0301 1177#define I2O_LAN_CONNECTION_ETHERNET_10BASE5 0x0302 1178#define I2O_LAN_CONNECTION_ETHERNET_FOIRL 0x0303 1179#define I2O_LAN_CONNECTION_ETHERNET_10BASE2 0x0304 1180#define I2O_LAN_CONNECTION_ETHERNET_10BROAD36 0x0305 1181#define I2O_LAN_CONNECTION_ETHERNET_10BASET 0x0306 1182#define I2O_LAN_CONNECTION_ETHERNET_10BASEFP 0x0307 1183#define I2O_LAN_CONNECTION_ETHERNET_10BASEFB 0x0308 1184#define I2O_LAN_CONNECTION_ETHERNET_10BASEFL 0x0309 1185#define I2O_LAN_CONNECTION_ETHERNET_100BASETX 0x030a 1186#define I2O_LAN_CONNECTION_ETHERNET_100BASEFX 0x030b 1187#define I2O_LAN_CONNECTION_ETHERNET_100BASET4 0x030c 1188 1189#define I2O_LAN_CONNECTION_100BASEVG_100BASEVG 0x0401 1190 1191#define I2O_LAN_CONNECTION_TOKEN_RING_4MBIT 0x0501 1192#define I2O_LAN_CONNECTION_TOKEN_RING_16MBIT 0x0502 1193 1194#define I2O_LAN_CONNECTION_FDDI_125MBIT 0x0601 1195 1196#define I2O_LAN_CONNECTION_FIBRECHANNEL_P2P 0x0701 1197#define I2O_LAN_CONNECTION_FIBRECHANNEL_AL 0x0702 1198#define I2O_LAN_CONNECTION_FIBRECHANNEL_PL 0x0703 1199#define I2O_LAN_CONNECTION_FIBRECHANNEL_F 0x0704 1200 1201#define I2O_LAN_CONNECTION_OTHER_EMULATED 0x0f00 1202#define I2O_LAN_CONNECTION_OTHER_OTHER 0x0f01 1203 1204#endif /* !defined _I2O_I2O_H_ */ 1205