| Indicates the Token-Ring speed. The speed is set at 4 or16 megabits 
per second or autosense. | 4 | Specifies that the device driver will open the adapter with 4 Mbits. 
It will return an error if ring speed does not match the network speed. |  | 16 | Specifies that the device driver will open the adapter with 16 Mbits. 
It will return an error if ring speed does not match the network speed. |  | autosense | Specifies that the adapter will open with the speed used determined 
as follows: If it is an open on an existing network, the 
speed will be the ring speed of the network.If it is an open on a new network: 
If the adapter is a new adapter, 16 Mbits is 
used.If the adapter had successfully opened, the 
ring speed will be the ring speed of the last successful open.
 | 
 
| Software Transmit Queue | Specifies a transmit request pointer that can be set to store between 32 
and 2048 transmit request pointers. Each transmit request pointer corresponds to 
a transmit request which may be for several buffers of data. |  | Attention MAC frames | Indicates if attention MAC frames should be received. |  | Beacon MAC frames | Indicates if beacon MAC frames should be received. |  | Priority Data Transmission | Specifies a request priority transmission of the data packets. |  | Network Address | Specifies the use of the device's hardware address as the network 
address or an alternate network address configured through software. When an 
alternate address is used, any valid Individual Address can be used. The most 
significant bit of the address must be set to zero (definition of an Individual 
Address). |  Device Driver Configuration and UnconfigurationThe tok_config entry point performs 
configuration functions Token-Ring device driver. Device Driver OpenThe tok_open function is called to 
open the specified network device. The Token Ring device driver does a synchronous 
open. The device will be initialized at this time.  When the resources have been 
successfully allocated, the device will start the process of attaching the 
device to the network. If the connection is successful, the 
NDD_RUNNING flag will be set in the ndd_flags field and a NDD_CONNECTED status 
block will be sent.   If the device connection fails, the NDD_LIMBO 
flag will be set in the ndd_flags field and a NDD_LIMBO_ENTRY status block will 
be sent. If the device is eventually connected, the 
NDD_LIMBO flag will be turned off and the NDD_RUNNING flag will be set in the 
ndd_flags field. Both NDD_CONNECTED and NDD_LIMBO_EXIT status blocks will be 
set. Device Driver CloseThe tok_close function is called to 
close the specified network device. This function resets the device to a known 
state and frees system resources associated with the device. The device will not be detached from the 
network until the device's transmit queue is allowed to drain. Data TransmissionThe tok_output function transmits 
data using the network device. The device driver does not support mbufs 
from user memory (which have the M_EXT flag set). If the destination address in the packet is a 
broadcast address the M_BCAST flag in the p_mbuf->m_flags field should be 
set prior to entering this routine.  A broadcast address is defined as 0xFFFF 
FFFF FFFF or 0xC000 FFFF FFFF. If the destination address in the packet is a 
multicast address the M_MCAST flag in the p_mbuf->m_flags field should be 
set prior to entering this routine. A multicast address is defined as a 
non-individual address other than a broadcast address. The device driver will 
keep statistics based upon the M_BCAST and M_MCAST flags. If a packet is transmitted with a destination 
address which matches the adapter's address, the packet will be received. This 
is true for the adapter's physical address, broadcast addresses (0xC000 FFFF 
FFFF or 0xFFFF FFFF FFFF), enabled functional addresses, or an enabled group 
address. Data ReceptionWhen the Token-Ring device driver receives 
a valid packet from the network device, the Token-Ring device driver calls the 
nd_receive function that is specified in the ndd_t structure of the 
network device.  The nd_receive function is part of a CDLI network 
demuxer.  The packet is passed to the nd_receive function in mbufs. The Token-Ring device driver will only pass one 
packet to the nd_receive function at a time. The device driver will set the M_BCAST flag in 
the p_mbuf->m_flags field when a packet is received which has an all stations 
broadcast address. This address is defined as 0xFFFF FFFF FFFF or 0xC000 FFFF 
FFFF. The device driver will set the M_MCAST flag in 
the p_mbuf->m_flags field when a packet is received which has a non-individual 
address which is different than the all-stations broadcast address. The adapter will not pass invalid packets to 
the device driver. Asynchronous StatusWhen a status event occurs on the device, 
the Token-Ring device driver builds the appropriate status block and calls the 
nd_status function that is specified in the ndd_t structure of the 
network device.  The nd_status function is part of a CDLI network 
demuxer. The following Status Blocks are defined for the 
Token-Ring device driver. Hard FailureWhen a hard failure has occurred on the 
Token-Ring device, the following status blocks can be returned by the Token-Ring 
device driver.  One of these status blocks indicates that a fatal error occured. NDD_PIO_FAILIndicates that when a PIO error occurs, it 
is retried 3 times.  If the error persists, it is considered unrecoverable and 
the following status block is generated: | code | Set to NDD_HARD_FAIL |  | option[0] | Set to NDD_PIO_FAIL |  | option[] | The remainder of the status block is used to return additional status 
information. | 
 NDD_HARD_FAILIndicates that when a transmit error 
occurs it is retried. If the error is unrecoverable, the following status block 
is generated: | code | Set to NDD_HARD_FAIL |  | option[0] | Set to NDD_HARD_FAIL |  | option[] | The remainder of the status block is used to return additional status 
information. | 
 NDD_ADAP_CHECKIndicates that when an adapter check has 
occurred, the following status block is generated: | code | Set to NDD_ADAP_CHECK |  | option[] | The remainder of the status block is used to return additional status 
information. | 
 NDD_DUP_ADDRIndicates that the device detected a 
duplicated address in the network and the following status block is generated: | code | Set to NDD_DUP_ADDR |  | option[] | The remainder of the status block is used to return additional status 
information. | 
 NDD_CMD_FAILIndicates that the device detected an 
error in a command that the device driver issued. The following status block is 
generated: | code | Set to NDD_CMD_FAIL |  | option[0] | Set to the command code |  | option[] | Set to error information from the command. | 
 TOK_RING_SPEEDIndicates that when a ring speed error 
occurs while the device is being open, the following status block is generated: | code | Set to NDD_LIMBO_ENTER |  | option[] | Set to error information. | 
 Enter Network Recovery ModeIndicates that when the device driver has 
detected an error which requires initiating recovery logic that will make the 
device temporarily unavailable, the following status block is returned by the 
device driver. Note: While the device driver is 
in this recovery logic, the device may not be fully functional. The device 
driver will notify users when the device is fully functional by way of an 
NDD_LIMBO_EXIT asynchronous status block. | code | Set to NDD_LIMBO_ENTER |  | option[0] | Set to one of the following: NDD_CMD_FAILTOK_WIRE_FAULTNDD_BUS_ERRORNDD_ADAP_CHECKNDD_TX_TIMEOUTTOK_BEACONING
 |  | option[] | The remainder of the status block is used to return additional status 
information by the device driver. | 
 Exit Network Recovery ModeIndicates that when the device driver has 
successfully completed recovery logic from the error that made the device 
temporarily unavailable, the following status block is returned by the device 
driver. This status block indicates the device is now fully functional. | code | Set to NDD_LIMBO_EXIT |  | option[] | N/A | 
 Device ConnectedIndicates that when the device is 
successfully connected to the network the following status block is returned by 
the device driver: | code | Set to NDD_CONNECTED |  | option[] | N/A | 
 Device Control OperationsThe tok_ctl function is used to 
provide device control functions. NDD_GET_STATSThe user should pass in the 
tok_ndd_stats_t structure as defined in <sys/cdli_tokuser.h>.  
The driver will fail a call with a buffer smaller than the structure. The structure must be in a kernel heap so that 
the device driver can copy the statistics into it; and it must be pinned. NDD_PROMISCUOUS_ONSetting promiscuous mode will not 
cause non-LLC frames to be received by the driver unless the user also enables 
those filters (Attention MAC frames, Beacon MAC frames). The driver will maintain a counter of requests. NDD_PROMISCUOUS_OFFThis command will release a request from a 
user to PROMISCUOUS_ON; it will not exit the mode on the adapter if more 
requests are outstanding. NDD_MIB_QUERYThe arg parameter specifies the 
address of the token_ring_all_mib_t structure. This structure is defined 
in the /usr/include/sys/tokenring_mibs.h file. The device driver does not support any 
variables for read_write or write only.  If the syntax of a member of the 
structure is some integer type, the level of support flag will be stored in the 
whole field, regardless of the size of the field.  For those fields which are 
defined as character arrays, the value will be returned only in the first byte 
in the field. NDD_MIB_GETThe arg parameter specifies the 
address of the token_ring_all_mib_t structure. This structure is defined 
in the /usr/include/sys/tokenring_mibs.h file. NDD_ENABLE_ADDRESSThis command enables the receipt of 
packets with a functional or a group address.  The functional address indicator 
(bit 0 "the MSB" of byte 2) indicates whether the address is a functional 
address (the bit is a 0) or a group address (the bit is a 1). The length field 
is not used because the address must be 6 bytes in length. Functional AddressThe specified address is ORed with the 
currently specified functional addresses and the resultant address is set as the 
functional address for the device.  Functional addresses are encoded in a 
bit-significant format, thereby allowing multiple individual groups to be 
designated by a single address. The Token-Ring network architecture provides 
bit-specific functional addresses for widely used functions, such as 
configuration report server.  Ring stations use functional address "masks" to 
identify these functions.  For example, if function G is assigned a functional 
address of 0xC000 0008 0000, and function M is assigned a function address of 
0xC000 0000 0040, then ring station Y, whose node contains function G and M, 
would have a mask of 0xC000 0008 0040.  Ring station Y would receive packets 
addressed to either function G or M or to an address like 0xC000 0008 0048 since 
that address contains bits specified in the "mask". The NDD_ALTADDRS and TOK_RECEIVE_FUNC flags in 
the ndd_flags field are set. Since functional addresses are encoded in a 
bit-significant format, reference counts are kept on each of the 31 least 
significant bits of the address. Group AddressThe device support 256 general group 
addresses. The promiscuous mode will be turned on when the group address needed 
to be set are more than 256. The device driver will maintain a reference count 
on this operation. The NDD_ALTADDRS and TOK_RECEIVE_GROUP flags in 
the ndd_flags field are set. NDD_DISABLE_ADDRESSThis command disables the receipt of 
packets with a functional or a group address.  The functional address indicator 
(bit 0 "the MSB" of byte 2) indicates whether the address is a functional 
address (the bit is a 0) or  a group address (the bit is a 1).  The length field 
is not used because the address must be 6 bytes in length. Functional AddressThe reference counts are decremented for 
those bits in the functional address that are one (meaning on).  If the 
reference count for a bit goes to zero, the bit will be "turned off" in the 
functional address for the device. If no functional addresses are active after 
receipt of this command, the TOK_RECEIVE_FUNC flag in the ndd_flags field 
is reset.  If no functional or group addresses are active after receipt of this 
command, the NDD_ALTADDRS flag in the ndd_flags field is reset. Group AddressIf the number of group address enabled is 
less than 256, the driver sends a command to the device to disable the receipt 
of the packets with the specified group address. Otherwise, the driver just 
deletes the group address from the group address table. If there are less than 256 group addresses 
enabled after the receipt of this command, the promiscuous mode is turned off. If no group address is active after receipt of 
this command, the TOK_RECEIVE_GROUP flag in the ndd_flags field is reset. 
 If no functional or group addresses are active after receipt of this command, 
the NDD_ALTADDRS flag in the ndd_flags field is reset. NDD_PRIORITY_ADDRESSThe driver returns the address of the 
device driver's priority transmit routine. NDD_MIB_ADDRThe driver will return at least three 
addresses: device physical address (or alternate address specified by user) and 
two broadcast addresses (0xFFFF FFFF FFFF and 0xC000 FFFF FFFF).  Additional 
addresses specified by the user, such as functional address and group addresses, 
may also be returned. NDD_CLEAR_STATSThe counters kept by the device are 
zeroed. NDD_GET_ALL_STATSThe arg parameter specifies the 
address of the mon_all_stats_t structure. This structure is defined  in 
the /usr/include/sys/cdli_tokuser.h file. The statistics returned include statistics 
obtained from the device. If the device is inoperable, the statistics returned 
do not contain the current device statistics.  The copy of the ndd_flags 
field can be checked to determine the state of the device. Trace Points and Error Log Templates for 8fa2 
Token-Ring Device Driver
The Token-Ring device driver has four 
trace points.  The IDs are defined in the /usr/include/sys/cdli_tokuser.h 
file. The Token-Ring error log templates are : | ERRID_MPS_ADAP_CHECK | The microcode on the device performs a series of diagnostic checks 
when the device is idle. These checks can find errors and they are reported as 
adapter checks. If the device was connected to the network when this error 
occurred, the device driver goes into Network Recovery Mode to try to recover 
from the error. The device is temporarily unavailable during the recovery 
procedure. User intervention is not required unless the problem persists. |  | ERRID_MPS_ADAP_OPEN | The device driver was enable to open the device. The device driver 
goes into Network Recovery Mode to try to recover from the error. The device is 
temporarily unavailable during the recovery procedure.  User intervention is not 
required unless the problem persists. |  | ERRID_MPS_AUTO_RMV | An internal hardware error following the beacon automatic removal 
process has been detected. The device driver goes into Network Recovery Mode to 
try to recover from the error. The device is temporarily unavailable during the 
recovery procedure. User intervention is not required unless the problem 
persists. |  | ERRID_MPS_RING_SPEED | The ring speed (or ring data rate) is probably wrong. Contact the 
network administrator to determine the speed of the ring. The device driver only 
retries twice at 2 minute intervals when this error log entry is generated. |  | ERRID_MPS_DMAFAIL | The device detected an DMA error in a TX or RX operation. The device 
driver goes into Network Recovery Mode to try to recover from the error. The 
device is temporarily unavailable during the recovery procedure. User 
intervention is not required unless the problem persists. |  | ERRID_MPS_BUS_ERR | The device detected a Micro Channel bus error. The device driver goes 
into Network Recovery Mode to try to recover from the error. The device is 
temporarily unavailable during the recovery procedure. User intervention is not 
required unless the problem persists. |  | ERRID_MPS_DUP_ADDR | The device has detected that another station on the ring has an 
device address which is the same as the device address being tested. Contact the 
network administrator to determine why. |  | ERRID_MPS_MEM_ERR | An error occurred while allocating memory or timer control block 
structures. |  | ERRID_MPS_PERM_HW | The device driver could not reset the card. For example, it did not 
receive status from the adapter within the retry period. |  | ERRID_MPS_RCVRY_EXIT | The error which caused the device driver to go into error recovery 
mode has been corrected. |  | ERRID_MPS_RMV_ADAP | The device has received a remove ring station MAC frame indicating 
that a network management function has directed this device to get off the ring. 
 Contact the network administrator to determine why. |  | ERRID_MPS_WIRE_FAULT | There is probably a loose (or bad) cable between the device and the 
MAU. There is some chance that it might be a bad device. The device driver goes 
into Network Recovery Mode to try to recover from the error. The device is 
temporarily unavailable during the recovery procedure.  User intervention is 
required for this error. |  | ERRID_MPS_RX_ERR | The device detected a receive error. The device driver goes into 
Network Recovery Mode to try to recover from the error. The device is 
temporarily unavailable during the recovery procedure.  User intervention is not 
required unless the problem persists. |  | ERRID_MPS_TX_TIMEOUT | The transmit watchdog timer expired before transmitting a frame is 
complete. The device driver goes into Network Recovery Mode to try to recover 
from the error. The device is temporarily unavailable during the recovery 
procedure. User intervention is not required unless the problem persists. |  | ERRID_MPS_CTL_ERR | The IOCTL watchdog timer expired before the device driver received a 
response from the device. The device driver goes into Network Recovery Mode to 
try to recover from the error. The device is temporarily unavailable during the 
recovery procedure.  User intervention is not required unless the problem 
persists. | 
 |