ixCheckTransmitDone
ixCheckTransmitDone - checks whether transmission is done on a group of ports
SYNOPSIS
ixCheckTransmitDone portList
DESCRIPTION
The ixCheckTransmitDone command polls the transmit rate statistic counter and returns when transmission is stopped. Note: This command should be called no earlier than one second after starting transmit with ixStartTransmit or ixStartPortTransmit.
Note: It should be preceded by an after 1000 statement following the previous command, to allow the effects of the previous command to have an effect on the port hardware.
ARGUMENTS
portList
(By reference) The list of ports in one of the following formats:
one2oneArray, one2manyArray, many2oneArray, many2manyArray
Or a reference to a list. For example, pl after
set pl {{1 1 1} {1 1 2} {1 1 3} {1 1 4}} -or-
set pl {1,1,1 1,1,2 1,1,3 1,1,4}
RETURNS
0
Success
1
Failure.
EXAMPLES
package require IxTclHal
set host galaxy
set username user
# Check if we're running on UNIX - connect to the TCL Server
# which must be running on the chassis
if [isUNIX] {
if [ixConnectToTclServer $host] {
ixPuts "Could not connect to $host"
return 1
}
}
# Now connect to the chassis
if [ixConnectToChassis $host] {
ixPuts $::ixErrorInfo
return 1
}
# Get the chassis ID to use in port lists
set chas [ixGetChassisID $host]
set cardA 1
set portA 1
set cardB 1
set portB 2
# Examples of four ways to make a port list
set portList1 [list $chas,$cardA,$portA]
set portList2 [list $chas,$cardA,$portA $chas,$cardB,$portB]
set portList3 [list [list $chas $cardA $portA] [list $chas $cardB $portB]]
set portList4 [list [list $chas,$cardA,$portA] [list $chas,$cardB,$portB]]
# Login before taking ownership
if [ixLogin $username] {
ixPuts $::ixErrorInfo
return 1
}
# Take ownership of the ports we'll use
if [ixTakeOwnership $portList2] {
ixPuts $::ixErrorInfo
return 1
}
map new -type one2one
map config -type one2one
map add $chas $cardA $portA $chas $cardB $portB
map add $chas $cardB $portB $chas $cardA $portA
port setDefault
port set $chas $cardA $portA
port set $chas $cardB $portB
stream setDefault
stream config -dma stopStream
stream config -numFrames 100000
stream set $chas $cardA $portA 1
stream config -numFrames 200000
stream set $chas $cardB $portB 1
ixWritePortsToHardware one2oneArray
after 1000
if {[ixCheckLinkState one2oneArray] != 0} {
ixPuts "Link is not up"
}
# Start transmit and wait a bit
ixStartTransmit one2oneArray
after 1000
# Check if the first port has stopped
ixCheckTransmitDone portList1
ixPuts "PortA Stopped transmitting"
# Check if both ports have stopped
ixCheckTransmitDone portList2
ixPuts "PortA & PortB Stopped transmitting"
ixStartTransmit one2oneArray
after 1000
# Check if both ports have stopped, a different way
ixCheckTransmitDone portList3
ixPuts "PortA & PortB Stopped transmitting"
ixStartTransmit one2oneArray
after 1000
# Check if both ports have stopped, yet another way
ixCheckTransmitDone portList4
ixPuts "PortA & PortB Stopped transmitting"
ixStartTransmit one2oneArray
after 1000
ixCheckTransmitDone one2oneArray
ixPuts "PortA & PortB Stopped transmitting"
# Let go of the ports that we reserved
ixClearOwnership $portList2
# Disconnect from the chassis we're using
ixDisconnectFromChassis $host
# If we're running on UNIX, disconnect from the TCL Server
if [isUNIX] {
ixDisconnectTclServer $host
}