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

}

SEE ALSO

ixCheckPortTransmitDone