Configuring the RTX64 NAL

You can configure the RTX64 NAL using RtNalConfig.exe, a command line utility that displays current values for the available NAL settings and allows you to modify global NAL settings and to modify and create new interfaces.

NOTE: If NAL settings are changed while the NAL is running, you must restart the NAL for the changes to take effect.

If an error occurs while you modify a configuration parameter, the utility reports the error using textual output, reverts the configuration to its previous state, and returns a non-zero exit status to the operating system.

To use RtNalConfig:

  1. Open a Command Prompt.
  2. Type RtNalConfig, and then type a parameter. For example:

RtNalConfig /help

 

See below for examples of how to create an interface and display help for a specific parameter.

Parameters

General Tool Parameters

/? or

/help

 

Display general help information. If you include a parameter you will receive additional information on that parameter. For example: RtNalConfig /verbose /?

/Log

Display the configuration data and write the output to a log file. The log file is saved to the desktop.

The file name follows the format <year.day.month.hours.minutes>RTNALConfigLogFile.txt

Usage:

RtNalConfig /Log

Global Parameters

/RtNal

 

 

 

 

 

Displays or modifies the specified RTX64 NAL global parameter.

Usage:

/RtNal { /Verbose [ 1 | 0 ] | /IdealProcessor [ procnumber ] }

See Global Parameters and Interface Parameters below for a listing of the available configuration parameters.

/RtNal /IdealProcessor

 

 

 

 

The processor for the thread that attaches to NAL applications. By default, the Ideal Processor is the first RTSS processor.

Usage:

/RtNal /IdealProcessor [ processorNumber ]

/RtNal /Verbose

 

 

 

 

 

Displays or modifies the RTX64 NAL's verbosity setting. The possible values are true (enabled) or false (disabled). Verbosity is enabled by default.

Usage:

/RtNal /Verbose [ verbosity ]

 

Interface Parameters

/Interface

 

 

 

 

 

Displays all created interfaces, and creates, deletes, or modifies a specific RTX64 NAL interface. Parameter name specifies the unique alphanumeric name of the interface within the NAL stack instance. All options following the name are mutually exclusive. If none of the options following the name are given, the currently configured state of the specified interface is displayed (if the interface exists).

Usage:

/Interface <friendlyName> { /Create /Delete /Disable /Driver /Enable /Interrupt /IntIdealProcessor /IntPriority /LinkStatus /LinkStatusIdealProcessor /LinkStatusPriority /RecvIdealProcessor /RecvPriority }

Note that <friendlyName> must only contain alphanumeric characters. It cannot include special characters or spaces. The <friendlyName> is limited to 14 characters.

IMPORTANT! You must restart the RTX64 NAL when an interface’s configuration is changed or when an interface is added or removed.

NOTE: Once you’ve configured a new interface, run RTX64Nal.rtss to configure the correct maximum number of receive and transmit queues for that interface, which can be printed by RtNalConfig.exe. RtNalConfig.exe can then be used to change the number of receive and transmit queues if needed.

/Enable

 

 

 

Enables the RTX64 NAL interface.

Usage:

/Interface {friendlyname} /Enable

This parameter cannot be used with /Disable

/Disable

 

 

 

Disables the RTX64 NAL interface.

Usage:

/Interface { friendlyname } /Disable

This parameter cannot be used with /Enable

/Create

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Creates an interface with the specified name (if unique) with the supplied mandatory driverpath parameter.

The location parameter is the PCI bus location.

To find the location value, begin adding a new interface via the RTX64 Control Panel:

  1. Launch the RTX64 Control Panel, and then navigate to Configure the RT-TCP/IP Stack > Manage Interfaces and Filters.
  2. Under Interfaces, click Add.

The Add Interface dialog appears.

 

  1. RTX64 devices are listed in the Device Name drop down menu. Select a Real-Time Network Device (RTND) from the drop down.
  2. The proper RTX64 driver should be selected for supported NIC cards. However, you can change the driver by clicking the Browse button to browse for a driver.
  3. Specify the required information. Once the PCI bus Location of the network interface card becomes populated, note it for NAL configuration.
  4. Click Cancel.

NOTE: The NAL driver name is similar to its equivalent displayed in the RTX64 Control Panel, with the exception that NAL drivers include the abbreviation “NAL”. For example, the RtIGB driver in RTX64 is called RtNalIGB in the RTX64 NAL.

When the maximum number of allowable interfaces is reached (50), an error is reported and no change is made to the state of RTX64 NAL.

Usage:

/Interface { friendlyname } /Create {driverpath} { location }

/Driver

 

 

 

Specifies the name of the device driver for the interface, which is either the file name, if the RTDLL location is in the search path, of the RTDLL implementing the driver (without the trailing ".rtdll" suffix) or the full path name to the RTDLL implementing the driver.

The NAL supports these drivers:

  • RtNalIPCH.rtdll
  • RtNalI10GB.rtdll
  • RtNalIGB.rtdll
  • RtNalE1000.rtdll

Usage:

/Interface { friendlyname } /Driver [ driverpath ]

/Location

 

 

The PCI bus location. You can use a location of 0;0;0 as long as there is one converted device. See /Create above for instructions on finding the location via the RTX64 Control Panel.

Usage:

/Interface { friendlyname } /Location [ location ]

/DeviceInstanceID

 

 

The device hardware ID as displayed in the Windows Device Manager.

Usage:

/Interface { friendlyname } /DeviceInstanceID [ instanceId ]

/Interrupt

 

 

 

 

 

 

Specifies the type of interrupt the interface should use. Valid values are:

  • 1 - LineBased
  • 2 - MSI
  • 3 - MSIX (default)

Usage:

/Interface { friendlyname } /Interrupt [ interruptType ]

/IntIdealProcessor

 

 

Specifies the ideal processor for the interface's Interrupt Service Thread (IST).

Usage:

/Interface {friendlyname} /IntIdealProcessor [ processorNumber ]

/IntPriority

 

 

Specifies the interrupt priority for the interface’s Interrupt Service Thread. This value must be within the range of 0-127. The default interrupt priority is 64.

Usage:

/Interface { friendlyname } /IntPriority { priority }

/LinkStatus

 

 

Choose whether to monitor the link status for a given interface. Use True or False.

Usage:

/Interface { friendlyname } /LinkStatus [ setStatus ]

/LinkStatusIdealProcessor

 

 

Specifies the ideal processor for the interface's link status monitoring thread.

Usage:

/Interface { friendlyname } /LinkStatusIdealProcessor [ processorNumber ]

/LinkStatusPriority

 

 

Specifies the ideal processor for the interface's link status monitoring thread. This value must be within the range 0 - 127.

Usage:

/Interface { friendlyname } /LinkStatusPriority [ priority ]

/MaxPacketSize

 

 

Specifies the maximum packet size configured by the driver for maximum packet to transmit. This value typically does not include Ethernet FCS. This value must be within the range of 1514-9198. The default is 1514.

Usage:

/Interface { friendlyname } /MaxPacketSize [ packetSize ]

/DefaultQ

 

 

Specifies the default receive queue.

Usage:

/Interface { friendlyname } /DefaultQ [ queue ]

/MaxRecvQs

 

 

Read Only. Specifies the maximum number of receive queues that can be supported by the NAL for each interface. This value is within the range 0-128. This feature is not currently supported. It is set to 1 by default.

Usage:

/Interface { friendlyname } /MaxRecvQs

/NumRecvQs

 

 

Specifies the number of receive queues that are allowed while the driver is running. This value must be within the range 0-128. This feature is not currently supported.

Usage:

/Interface { friendlyname } /NumRecvQs

/MaxXmitQs

Read Only. Specifies the maximum number of transmit queues that can be supported by the NAL for each interface. This value is within the range 0-128. This feature is not currently supported. It is set to 1 by default.

Usage:

/Interface { friendlyname } /MaxXmitQs

/NumXmitQs

Specifies the number of transmit queues that are allowed while the driver is running. This value must be within the range 0-128. This feature is not currently supported.

Usage:

/Interface { friendlyname } /NumXmitQs

/NumRecvBuffers

 

 

 

Specifies the number of receive buffers. This value must be greater than or equal to 64. The default is 256. The upper limit is determined by your CPU resources.

Usage:

/Interface { friendlyname } /NumRecvBuffers [ buffers ]

/NumXmitBuffers

 

 

Specifies the number of transmit buffers. This value must be greater than or equal to 64. The default is 256.

Usage:

/Interface { friendlyname } /NumXmitBuffers [ buffers ]

/XmitIdealProcessor

 

 

Specifies the ideal processor for the transmit complete thread.

Usage:

/Interface { friendlyname } /XmitCompleteIdealProcessor [ processor_number ]

/XmitPriority

 

 

Specifies the priority of the transmit complete threads. This value must be within the range of 0-127. The default is 63.

Usage:

/Interface { friendlyname } /XmitPriority [ priority ]

Examples

To create an interface:

  1. Open a Command Prompt.
  2. Type RtNalConfig /interface NalInt1 /create "C:\Program Files\IntervalZero\RTX64NAL Preview\Runtime\bin\<NAL driver name>.rtdll" 0;1;0

NOTE: Update the driver name and path in the example above to reference the actual driver and path.

NalInt1 : True

/Driver : C:\Program Files\IntervalZero\RTX64NAL Preview\Runtime\bin\NalDriver.rtdll

/Deviceinstanceid :

/Location : 0;1;0

/Intpriority : 64

/Linkstatus : True

/Linkstatuspriority : 0

/Linkstatusidealprocessor : 0

/Interrupt : 3

/Intidealprocessor : 0

/Xmitidealproc : 0

/Xmitpriority : 63

/Numrecvbuffers : 256

/Numxmitbuffers : 256

/Maxpacketsize : 1514

/MaxRecvQs : 1

/NumRecvQs : 1

/MaxXmitQs : 1

/NumXmitQs : 1

/DefaultQ : 0

To display Help on a specific interface parameter:

  1. Open a Command Prompt.
  2. Type RtNalConfig /interface NalInt1 /driver /?

Help for the /driver parameter is returned:

/Driver

Specifies the name of the device driver for the interface, which is either the file name of the RTDLL implementing the driver (without the trailing ".rtdll" suffix) or the full pathname to the RTDLL implementing the driver. Usage:

/Interface {friendlyname} /Driver {"Path_to_driver"}

See Also: