Question & Answer
Question
The Communications Server for Linux (CS Linux) query_partner_lu command shows the connection to the mainframe as half-duplex: duplex_support = HALF_DUPLEX However, DATMODE=FULL is coded on the PU in the SWNET major node. Why does the query_partner_lu display show the connection as half duplex? Is there a VTAM command that would confirm that the connection is running half duplex? Is there a requirement to code a parameter for full duplex somewhere else?
Cause
The terms half-duplex and full-duplex apply to two different layers of the SNA stack.
For the physical layer (SDLC, Ethernet) this is typically a restriction of the hardware. As the z/OS Communications Server: SNA Resource Definition Reference points out, the DATMODE keyword on the SWNET major node specifies whether the physical unit communicates in full-duplex mode or half-duplex mode. In this case the Ethernet TCP/IP connection between CS Linux and VTAM might be full-duplex, but that information is only known to the Ethernet switch and the Ethernet adapters. Both Ethernet adapters and their respective switch must support full-duplex.
The other layer of the SNA stack to which the term full-duplex applies is LU6.2. Communications Server for Linux (CS Linux) has API support for full-duplex APPC. That is an APPC application program which can do asynchronous sends and receives concurrently. If you have not written any CS Linux applications, you are using CS Linux as a gateway, so this use of full-duplex would not apply. When you issue a query_partner_lu command, you are checking the ability of that partner to participate in a full-duplex APPC transaction. The section on the query_partner_lu command in Chapter 2 (Administration Commands) of IBM Communications Server for Linux V6.4 Administration Command Reference (SC31-6770-03) points out that duplex support in this context refers specifically to the data mode supported by LU 6.2 conversations:
- duplex_support
Returns the conversation duplex support as negotiated on the BIND.
Answer
On the Linux side, depending on the Ethernet device driver being used by Linux, you can use a command such as mii-tool to see if that end of the physical link is full-duplex. For example:
- # mii-tool
eth0: negotiated 100baseTx-FD, link ok
Notice the FD which means full-duplex at the physical layer.
Another way to tell if the Linux Ethernet is running full-duplex is to use the ifconfig command. If ifconfig reports a data rate which is greater than the link speed, then you know it must be running full-duplex to send and receive at the same time. For example, if a 100Mbps Ethernet network interface is reported with a data rate of 100<x<200 then it is full-duplex. The converse is not true. For example, if the data rate is <2*link-speed you cannot be sure it is running half-duplex. The link might not be busy enough to show the up-to-2*link-speed rate.
Was this topic helpful?
Document Information
Modified date:
02 August 2018
UID
swg21220994