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 Unconfiguration
The tok_config entry point performs
configuration functions Token-Ring device driver.
Device Driver Open
The 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 Close
The 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 Transmission
The 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 Reception
When 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 Status
When 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 Failure
When 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_FAIL
Indicates 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_FAIL
Indicates 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_CHECK
Indicates 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_ADDR
Indicates 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_FAIL
Indicates 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_SPEED
Indicates 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 Mode
Indicates 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_FAIL
- TOK_WIRE_FAULT
- NDD_BUS_ERROR
- NDD_ADAP_CHECK
- NDD_TX_TIMEOUT
- TOK_BEACONING
|
option[] |
The remainder of the status block is used to return additional status
information by the device driver. |
Exit Network Recovery Mode
Indicates 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 Connected
Indicates 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 Operations
The tok_ctl function is used to
provide device control functions.
NDD_GET_STATS
The 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_ON
Setting 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_OFF
This 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_QUERY
The 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_GET
The 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_ADDRESS
This 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 Address
The 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 Address
The 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_ADDRESS
This 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 Address
The 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 Address
If 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_ADDRESS
The driver returns the address of the
device driver's priority transmit routine.
NDD_MIB_ADDR
The 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_STATS
The counters kept by the device are
zeroed.
NDD_GET_ALL_STATS
The 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. |
|