- SysKonnect Gigabit Ethernet SK-98xx device driver
The sk98sol driver is a multi-threaded, loadable, clonable, STREAMS hardware driver supporting the connectionless Data Link Provider Interface (DLPI), over a SysKonnect Gigabit Ethernet adapter (SK-98xx series). The driver supports multiple installed SysKonnect SK-98xx adapters. Functions include chip initialization, frame transmit and receive, multicast and promiscuous support, and error recovery and reporting.
The driver provides the /dev/skge cloning character-special device as well as per-adapter character-special devices /dev/skgex, where x represents the device instance number.
The sk98sol driver is a Style 1 and Style 2 Data Link Service (DLS) provider. All M_PROTO and M_PCPROTO type messages are interpreted as DLPI primitives. Valid DLPI primitives are defined in <sys/dlpi.h>. See dlpi(7P).
An explicit DL_ATTACH_REQ message by the user is required to associate the opened stream with a particular device (ppa). This is unnecessary and invalid for DLPI Style 1. The ppa ID is interpreted as an unsigned long data type and indicates the corresponding device instance (unit) number. An error (DL_ERROR_ACK) is returned by the driver if the ppa field value does not correspond to a valid device instance number for the system.
The device is initialized on first attach and de-initialized (stopped) upon last detach. Valid device numbers for all detected adapters are displayed on the console at driver startup time and are written to the /var/adm/messages log file.
The values returned in the DL_INFO_ACK primitive in response to the DL_INFO_REQ request are:
Maximum SDU is 1500 (9000 if JumboFrames are enabled).
Minimum SDU is 0.
DLSAP address length is 8 bytes.
MAC type is DL_CSMACD.
SAP length value is –2, meaning the physical address component is followed immediately by a 2-byte SAP component within the DLSAP address.
Service mode is DL_CLDLS.
Optional quality of service (QOS) support is not included; as a result, the QOS field values are 0.
Provider style is DL_STYLE2.
Version is DL_VERSION_2.
Parameters are set in the /kernel/drv/sk98sol.conf configuration file, which is created during installation. See driver.conf(4). You can edit the /kernel/drv/sk98sol.conf file to reflect your settings and reboot the system to use the new parameter values. If the file exists prior to driver installation, the new parameter values will be used as soon as the driver is installed.
String parameter values must be surrounded with double quotes ("), while integer parameter values are not. Parameter names and values are case sensitive and you should use them exactly as shown.
Note - You can increase sk98sol performance by tuning certain TCP and UDP parameters. However, you should be aware that this act may adversely impact the performance of other network cards.
To tune specific parameters to increase sk98sol performance, do the following:
ndd -set /dev/tcp tcp_xmit_hiwat 65536 ndd -set /dev/tcp tcp_xmit_lowat 32768 ndd -set /dev/tcp tcp_recv_hiwat 65536 ndd -set /dev/udp udp_xmit_hiwat 65536 ndd -set /dev/udp udp_xmit_lowat 327 ndd -set /dev/udp udp_recv_hiwat 65536
The parameters discussed in this section can be set for each port on the adapter.
In each of the following descriptions, ? represents port A or B.
The Sense value automatically detects whether the link partner supports autonegotiation. If your link partner is configured to half duplex with autonegotiation turned off, set the AutoNegotiation_? and DuplexCapabilities_? parameters manually. Do not set the AutoNegotiation_? parameter value to Sense, as it will fail.
Do not use Sense for 1000Base-T (copper) adapters. If Sense is selected, it will be mapped to On automatically.
Set the DuplexCapabilities_? parameter only if the AutoNegotiation_? parameter is set to the On or Off values. If AutoNegotiation_? is set to On, all three AutoNegotiation_? values are possible; however, if set to Off, only the Full and Half values are allowed.
Use the DuplexCapabilities_? parameter if your link partner does not support all possible combinations.
Use the FlowControl_? parameter to set the flow control capabilities reported by the port during autonegotiation:
Symetric flow control, where both link partners are allowed to send PAUSE frames.
SymetricOrRemote flow control, where both link partners or only the remote partner are allowed to send PAUSE frames.
LocalSend flow control, where only the local link partner is allowed to send PAUSE frames.
No flow control, where no link partner is allowed to send PAUSE frames.
The FlowControl_? parameter is ignored if AutoNegotiation_? is set to "Off."
Use the Role_? parameter only for the SK-9821 and SK-9822 adapters.
1000Base-T communication between two ports requires one port to act as the master (and provide timing information) and the other as slave. Normally, this is negotiated between the two ports during link establishment. If this fails, use the Role_? parameter to force the master and slave roles on the ports. If AutoNegotiation_? is set to "Off," then the Role_? parameter must be set manually.
Use the PreferredPort parameter to force the preferred port to A or B (on two-port NICs). The preferred port is the port selected if both ports are detected as fully functional.
RLMT (Redundant Link Management Technology) provides three modes to determine if a port is available for use.
Check link state only: use the link state reported by the adapter hardware for each individual port.
Check other port: RLMT sends test frames from one port to another and checks if they are received. The ports must be connected to the network that allow LLC test frames to be exchanged (that is, networks without routers between the ports).
Check other port and segmentation: RLMT checks the other port and also requests information from the Gigabit Ethernet switch next to each port to determine if the network is segmented between the ports. Only use this mode if you have Gigabit Ethernet switches installed and configured to use the Spanning Tree protocol.
Note that modes 2 and 3 are meant to operate in configurations where a network path exists between the ports on a single adapter. They are not designed to work in networks where adapters are connected back-to-back.
To enable support for JumboFrames (frames with a length of up to 9014 bytes), set JumboFrames to "On." Because longer frames reduce operating system overhead, JumboFrames increases network throughput.
For full JumboFrames support, the maximum transfer unit (MTU) size used by TCP/IP must also be changed by using the ifconfig(1M) command. To do this, remove the comment sign (#) before the ifconfig line in the /etc/rcS.d/S50sk98sol file. You should also ensure that the adapter device number (skge0) matches the attach number displayed during system startup. The MTU must be set to 9000, not including the 14 bytes of MAC address header.
JumboFrames can only be used if all equipment in your subnetwork supports them; currently many switches do not support JumboFrames). Devices without Jumbo Support drop the longer frames (and might report them as error frames). If you experience problems with this, connect two SK-98xx adapters (with JumboFrames enabled) back-to-back.)
During transmit, the driver relies on the frame's physical memory address to tell the hardware where to find the frame data. Setting up the DMA address can take time on Solaris; it may be more convenient to copy the frame data to a buffer that you have set up in advance. All frames with a length less than or equal to the CopyThreshold parameter value are copied into buffers; for longer frames, the real DMA setup is done. By default (without JumboFrames support), all frames are copied. You can experiment with this parameter to find out if your system performs better with only smaller frames copied.
To use more complex syntax for setting different parameters on multiple adapters, see driver.conf(4). For example:
If multiple NICs are installed in the system, the following message may appear on the console and in the /var/adm/messages log file:
Allocation of descriptor memory failed
You can avoid this message by tuning the lomempages kernel parameter. By default, the value of this parameter is 36 pages. Each SK-98xx adapter requires a determined number of pages, so increase the value of the lomempages parameter in increments of ten pages until all NICs in the system run correctly.
To modify the value of this parameter to 46 pages, append the set lomempages=46 line to the /etc/system file and reboot the system.
Character special device
Per-adapter character special device, where x is the adapter ppa
ELF kernel module
64–bit ELF kernel module
Driver configuration file
See attributes(5) for descriptions of the following attributes:
sk98sol.txt driver README file — Included in the driver package; also available from www.syskonnect.com.