RTNAL_INTERFACE

RTNAL_INTERFACE is a structure that specifies the configuration of a Network interface.

Syntax

typedef struct _RTNAL_INTERFACE{
	DWORD Version;
	CHAR DeviceName[RTN_MAX_DEVICE_NAME];
	CHAR DllName[MAX_PATH];
	CHAR PciBusLocationString[RTN_MAX_PCI_BUS_LOCATION_STRING];
	BYTE  MacAddress[RTN_MAC_ADDRESS_LENGTH];
	ULONG InterruptType;
	ULONG IntIdealProcessor;
	ULONG IntPriority;
	ULONG TxCompleteIdealProcessor;
	ULONG TxCompletePriority;
	BOOL  LinkStatus;
	ULONG LinkStatusIdealProcessor;
	ULONG LinkStatusPriority;
	ULONG NumRxBuffers;
	ULONG NumTxBuffers;
	ULONG MaxPacketSize;   
	ULONG NumberOfRxQueues;    
	ULONG DefaultRxQueue;  
	ULONG NumberOfTxQueues;
                       
}RTNAL_RTNAL_INTERFACE, *PRTNAL_RTNAL_INTERFACE;

Fields

Version

This field is set to RTNAL_INTERFACE_V42 by the NAL if the interface is configured to force link speed and duplex instead of auto-negotiate. Otherwise, it is set to RTNAL_INTERFACE V40.

The application shall not rely on the value of this field to take any decision at run time.

The NIC driver may use the value of this field in RtndInitializeInterface to determine the method to be used for link establishment. If Version is set to RTNAL_INTERFACE_V42 and if the NIC driver supports forcing link speed/duplex, then it must read an additional DWORD after the end of the RTNAL_INTERFACE structure. This additional DWORD is organized as follows:

If Version is set to RTNAL_INTERFACE_V42 and the NIC driver doesn’t support forcing link speed/duplex, or doesn’t support the combination requested in the additional DWORD, then it will fail initialization and return an error.

The following drivers support 10Mbps Half-Duplex, 10Mbps Full-Duplex, 100Mbps Half-Duplex and 100Mbps Full-Duplex:

DeviceName

The friendly name used to identify the interface.

CHAR DllName

The name of the device driver RtDll. This value can be a full path.

PciBusLocationString

The PCI bus location of the interface. For example: 2;0;1.

MacAddress

The physical address of the Ethernet interface.

InterruptType

The interrupt type: ATTACH_LINE_BASED, ATTACH_MESSAGE_BASED, or ATTACH_MESSAGE_BASED_PREFER_MSI.

Value Meaning
ATTACH_LINE_BASED Associates an IST and ISR with the device’s line-based interrupts. Use the LineBased member to provide the additional parameters for the operation.
ATTACH_MESSAGE_BASED Associates an IST and ISR with the device’s message-based single vector interrupts. Use the MessageBased member to provide the additional parameters for the operation. This value can be used by devices that support: MSI only MSI-X only MSI and MSI-X If the device supports both MSI and MSI-X, use of this value will adhere to Windows behavior that the device should default to MSI-X.
ATTACH_MESSAGE_BASED_PREFER_MSI Associates an IST and ISR with the device’s message-based single vector interrupts. Use the MessageBased member to provide the additional parameters for the operation. This value can be used by devices that support: MSI only MSI-X only MSI and MSI-X If the device supports both MSI and MSI-X, use of this value allows you to specify that the device should default to MSI. NOTE: ATTACH_MESSAGE_BASED_PREFER_MSI is not recommended unless an MSI/MSI-X capable device is found not to work correctly when using MSI-X. MSI-X is preferred because it allows for vector masking.

IntIdealProcessor

The RTSS processor number where the Interrupt Service Thread (IST) will run.

IntPriority

The priority of the Interrupt Service Thread (IST). This value can be between 0 and 127. By default, it is set to 64.

TxCompleteIdealProcessor

The RTSS processor number where the transmit complete thread will run.

TxCompletePriority

The priority of the transmit complete thread. This value can be between 0 and 127. By default, it is set to 62.

LinkStatus

The enabled/disabled status of link status monitoring for the device. This value can be true (enabled) or false (disabled). By default, it is set to the true (enabled).

LinkStatusIdealProcessor

The RTSS processor number where the link status thread will run.

LinkStatusPriority

The priority of the link status thread. This value can be between 0 and 127. By default, it is set to 0.

NumRxBuffers

The number of receive buffers. The value range is driver-specific. By default, it is set to 256.

NOTE: See the Supported NICs document available from the Customer Center for a list of the number of receive buffers available for supported devices.

NumTxBuffers

The number of transmit buffers. The value range is driver-specific. By default, it is set to 256.

NOTE: See the Supported NICs document available from the Customer Center for a list of the number of transmit buffers available for supported devices.

MaxPacketSize

The maximum packet size. This does not include FCS. The value range is driver-specific. By default, it is set to 1514.

NOTE: See the Supported NICs document available from the Customer Center for a list of the number of queues available for supported devices.

NumberOfRxQueues

The number of receive queues configured for the device. By default, it is set to 1.

NOTE: See the Supported NICs document available from the Customer Center for a list of the number of queues available for supported devices.

DefaultRxQueue

The queue index configured to receive unfiltered data.

NumberOfTxQueues

The number of transmit queues configured for the device. By default, it is set to 1.

NOTE: See the Supported NICs document available from the Customer Center for a list of the number of queues available for supported devices.

Remarks

The NAL initially populates this structure based on the parameters supplied by the user in the RTX64 Control Panel. Then, the NIC driver receives the structure in RtndInitializeInterface and has the possibility to adjust its content in order to reflect the actual configuration of the network interface. Finally, the application can query a copy of this structure with a call to RtNalEnumInterfaceInfo.

Requirements

Minimum Supported Version (RTX64)

RTX64 4.0

Header rtnapi.h, RtNalApi.h
Library RtNal.lib

See Also:

RtndInitializeInterface

RtNalEnumInterfaceInfo