Abstract:
A first device detects whether a second device implements full duplex communication. When the first device begins receiving a network packet from the second device, the first device transmits a jam signal to the second device. When transmission of the network packet from the second device to the first device has been completed, the first device determines whether a check value within the network packet is valid. When the check value is valid, the first device recognizes that the second device implements full duplex communication. When the check value is not valid, the first device recognizes that the second device does not implement full duplex communication.

Description:
BACKGROUND 
     The present invention concerns data transfer over a network and pertains particularly to automatic detection of full or half duplex capability in a remote network legacy ethernet node. 
     Full duplex mode in networks that operate in accordance with the ethernet network protocol is a mode of data transmission that supports duplex transmission as defined in IEEE Std 610.7-1995. Full duplex allows simultaneous communication between two nodes over a point-to-point medium. Unlike half duplex transmission, where only one node transmits data at a time, full duplex operation does not require carrier sense to be monitored for any transmission. For full duplex transmission to happen, both nodes need to be capable of full duplex operation over a point-to-point link. 
     The IEEE 802.3 standard defines technology for carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications. The IEEE 802.3u standard defines technology for 100 megabits per second networking. Within the physical sublayer (PHY), as defined in Clauses 24 and 25 of the specification IEEE 802.3u-1995, there is a Physical Coding Sublayer (PCS), a Physical Media Access (PMA) sublayer, and a Physical Media Dependent (PMD) sublayer. The PCS defines how data is encoded and decoded, how the Carrier Sense (CS) and Collision Detection (CD) functions work, and the interface between higher and lower layers in the protocol specification. The PMA defines the mapping of code bits, generation of a control signal (link_status) which indicates the availability of the PMD, generation of control signals to the PCS that indicate Carrier Sense, Collision Detection and Physical Layer Errors, and clock recovery. The PMD defines the signaling method and the various physical parameters that are necessary to address the link&#39;s physical requirements. 
     IEEE standard 802.3u-1995 clause 28 defines a mechanism of auto-negotiation between two auto-negotiation capable nodes to detect the capabilities of each other. The capabilities are advertised by the nodes through link pulses. Once the nodes have auto-negotiated they can configure themselves to the highest common capability supported by both nodes. However, for nodes which do not support auto-negotiation, there is no other automatic mechanism for allowing nodes to detect the capabilities of each other and configure themselves to the highest common capability supported by both nodes. 
     As per the IEEE 802.3u standard, the minimum capability of any node is to support 10 Megabits data transfer in half duplex. Using auto-negotiation, the nodes configure themselves to operate in full duplex if both nodes know each other&#39;s capabilities. However, if a node does not support auto-negotiation through link pulses, the node may not have any knowledge of the other node&#39;s capability. Therefore, the node cannot auto-configure to run in full duplex mode even if both nodes have the ability to run in full duplex. In order to run the link between two full duplex capable nodes in full duplex mode, both nodes need to be set manually through a console. This requires a central processing unit (CPU) to be present within each node. However, if a node is built without a CPU or console interface, another mechanism is needed to manually set the node&#39;s duplex mode. This can be accomplished by a hardware switch provided at the front plane. However, use of such a switch can be tedious and not user friendly. 
     BRIEF SUMMARY OF THE INVENTION 
     In accordance with the preferred embodiment of the present invention, a first device detects whether a second device implements and is configured in full duplex communication. When the first device begins receiving a network packet from the second device, the first device transmits a jam signal to the second device. When transmission of the network packet from the second device to the first device has been completed, the first device determines whether a check value within the network packet is valid. When the check value is valid, the first device recognizes that the second device implements and is configured in full duplex communication. When the check value is not valid, the first device recognizes that the second device does not implement full duplex communication. 
     In the preferred embodiment, a state machine within the first device controls the process. The state machine includes various states. In a first (XMIT_JAM) state, a jam signal is transmitted from the first device to the second device. The XMIT_JAM state is entered when the first device is receiving a network packet from the second device. 
     A second (SET_MODE) state is entered from the XMIT_JAM state when transmission of the network packet from the second device to the first device has been completed. In the SET_MODE state, the state machine recognizes the second device implements full duplex communication when a check value within the network packet is valid. 
     In a third (WAIT) state, the first device waits to receive a network packet from the second device. The state machine transitions from the WAIT state to the XMIT_JAM state when the first device is receiving a network packet from the second device. 
     The state machine enters a fourth (XMIT) state from the WAIT state when the first device has a transmission packet to be sent to the second device. The first device transmits the transmission packet while the state machine is in the XMIT state. The state machine transitions from the XMIT state to the WAIT state when the transmission packet has been successfully sent to the second device. 
     The state machine enters a fifth (XMIT_TX_JAM) state from the XMIT state when the first device begins receiving a network packet from the second device. When the state machine is in the XMIT_TX_JAM state, the first device aborts the transmission packet and transmits a jam signal to the second device. 
     The state machine enters a sixth (SET_TX_MODE) state from the XMIT_TX_JAM state when transmission of the network packet from the second device to the first device has been completed. In the SET_MODE state, the state machine recognizes the second device implements full duplex communication when a check value within the network packet is valid. 
     The state machine enters a seventh (SEND_CURRENT) state from the SET_TX_MODE state. When the state machine is in the SEND_CURRENT state, the transmission which was aborted in the XMIT_TX_JAM state is performed. If the variable DUPLEX_Mode is equal to the constant HALF, transmission is done based on CSMA/CD. 
     The state machine enters a STOP state from the SET_MODE state or from the SEND_CURRENT state. In the STOP state the state machine detection is complete. 
     In an initial (START) state, before entering the WAIT state, the state machine initiates values which indicate the second device does implement half duplex communication and the state machine detection is not complete. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 shows, included within a network node, a state machine for providing the network node with the capability to automatically detect whether another shown node has full or half duplex capability, in accordance with a preferred embodiment of the present invention. 
     FIG. 2 is a simplified block diagram which shows auto-negotiation added to the organization of sublayers within a physical sublayer (PHY), as defined in Clause 28 of the specification IEEE 802.3u-1995. 
     FIG. 3 is a state diagram for the state machine shown in FIG. 1 in accordance with a preferred embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 shows a device (network node)  21  connected to a device (network node)  22  through a transmission medium  23 . Device  22  includes a state machine  24  which implements automatic detection of whether device  21  has full or half duplex capability. 
     FIG. 2 is a simplified block diagram which shows an auto-negotiation (AUTONEG) feature  17  added to the organization of sublayers within a physical sublayer (PHY), as defined in Clause 28 of the specification IEEE 802.3u-1995. 
     A Physical Coding Sublayer (PCS)  12  defines how data is encoded and decoded, how the Carrier Sense (CS) and Collision Detection (CD) functions work, and the interface between higher and lower layers in the protocol specification. A Physical Media Access (PMA) sublayer  14  defines the mapping of code bits, generation of a control signal (link_status) which indicates the availability of a Physical Media Dependent (PMD) sublayer  16 , generation of control signals to the PCS that indicate Carrier Sense, Collision Detection and Physical Layer Errors, and clock recovery. Physical Media Dependent (PMD) sublayer  16  defines the signaling method and parameters for the various physical parameters that are necessary to address the link&#39;s physical requirements. 
     Physical Coding Sublayer (PCS)  12  uses a media independent interface (MII)  11  as a service interface to transfer information to and from a media access control (MAC) (via a Reconciliation sublayer) or another PCS client, such as a repeater. Further definition of MII  11  is given in Clause 22 of the specification IEEE 802.3u-1995. 
     A Media Dependent Interface (MDI)  18  provides the actual attachment, including connectors, to transmission medium  23 , or other supported media. 
     PMA  14  communicates with PCS  12  through a PMA service interface  13 . PMD  16  communicates with PMA  14  through a PMD service interface  15 . 
     Auto-negotiating feature  17  communicates with PMA sublayer  14  through PMA service interface  13 . The specific messages used, PMA_LINK.request and PMA_LINK.indicate are further described in the specification IEEE 802.3u-1995. In the preferred embodiment of the present invention, state machine  24  resides in PMA  14 . 
     FIG. 3 shows a state diagram for state machine  24 . The operation of state machine  24  enables device  22  to set duplex mode automatically, without human intervention, even though one or both of device  21  and device  22  do not support auto-negotiation, or when auto-negotiation for one or both of device  21  and device  22  is disabled. State machine  24  monitors the response of device  21  to certain transmit activity and depends on the adherence of the operation of device  21  to the IEEE 802.3u standard. State machine  24  is activated only when normal auto-negotiation, as described in the IEEE 802.3u standard, is unused or unsuccessful. 
     When state machine  24  is activated, state machine  24  enters a START state  31  at the power up of device  22 . Also, when state machine  24  is activated, state machine  24  enters START state  31  whenever a link is lost between device  21  and device  22 . State machine  24  detects whether device  21  is able to operate in full duplex mode. 
     In START state  31 , state machine  24  sets the variable LINK_Mode to the constant NOT_DONE. State machine  24  also sets the variable DUPLEX_Mode to the constant HALF. 
     When device  22  receives link pulses, or detects receive activity from device  21 , state machine  24  transitions from START state  31  to a WAIT state  32 . 
     If while state machine  24  is in WAIT state  32 , receive activity continues (i.e., a network packet of data is sent from device  21  to device  22 ), state machine  24  transitions from WAIT state  32  to a transmit jam (XMIT_JAM) state  37 . In XMIT_JAM state  37 , device  22  transmits 96 bits of JAM signal as defined in the IEEE 802.3 standard, to device  21 . During transmission of the 96 bits of JAM signal, device  22  continues to receive the network packet from device  21 . 
     When the receive activity ceases (i.e., the network packet of data is no longer being sent from device  21  to device  22 ), state machine  24  transitions from XMIT_JAM state  37  to a SET_MODE state  38 . 
     In SET_MODE state  38 , if the network packet received by device  22  has a valid Cyclic Redundancy Check (CRC) which is in accordance with IEEE standard 802.3, state machine  24  sets the DUPLEX_Mode to the constant FULL. If the network packet received by device  22  does not have a valid Cyclic Redundancy Check (CRC) which is in accordance with IEEE standard 802.3, state machine  24  leaves the DUPLEX_Mode set to the constant HALF. State machine  24  than transitions from SET_MODE state  38  to a STOP state  39 . 
     In STOP state  39 , state machine  24  sets variable LINK_Mode to the constant DONE. Device  22  then starts executing the normal transmit and receive state machines as defined in the IEEE standard 802.3. If the variable DUPLEX_Mode is equal to the constant FULL, then device  22  transmits data as a full duplex node without regard to Carrier Sense or Collision signal. If the variable DUPLEX_Mode is equal to the constant HALF, then device  22  transmits data as a half duplex node by monitoring Carrier sense and Collision signal and implementing normal CSMA/CD protocol of the IEEE 802.3 standard. 
     While in WAIT state  32 , if there is a request from an upper network layer of device  21  to transmit a network packet, state machine  33  transitions from WAIT state  33  to a transmit (XMIT) state  33 . In XMIT state  33  device  22  starts transmitting the network packet to device  21 . If the network packet is fully transmitted and there is no receive activity, then state machine  24  transitions from XMIT state  33  back to WAIT state  32 . 
     If while state machine  24  is in XMIT state  33 , device  22  detects receive activity from device  21  (i.e., a network packet of data is sent from device  21  to device  22 ), state machine  24  transitions from XMIT state  33  to a transmit transmission jam (XMIT_TX_JAM) state  34 . In XMIT_TX_JAM state  34 , device  22  aborts transmission of the network packet being sent from device  22  to device  21 . Device  22  then transmits 96 bits of JAM signal as defined in the IEEE 802.3 standard, to device  21 . During transmission of the 96 bits of JAM signal, device  22  continues to receive the network packet from device  21 . 
     When the receive activity ceases (i.e., the network packet of data is no longer being sent from device  21  to device  22 ), state machine  24  transitions from XMIT_TX_JAM state  34  to a SET_TX_MODE state  35 . 
     In SET_TX_MODE state  35 , if the network packet received by device  22  has a valid Cyclic Redundancy Check (CRC) which is in accordance with IEEE standard 802.3, state machine  24  sets the DUPLEX_Mode to the constant FULL. If the network packet received by device  22  does not have a valid Cyclic Redundancy Check (CRC) which is in accordance with IEEE standard 802.3, state machine  24  leaves the DUPLEX_Mode set the constant HALF. State machine  24  than transitions from SET_TX_MODE state  35  to a SEND_CURRENT state  36 . 
     When state machine  24  is in SEND_CURRENT state  36 , device  22  transmits the network packet that was aborted in XMIT_TX_JAM state  34 . If the variable DUPLEX_Mode is equal to the constant FULL, then device  22  transmits the network packet as a full duplex node without regard to Carrier Sense or Collision signal. If the variable DUPLEX_Mode is equal to the constant HALF, then device  22  transmits the network packet as a half duplex node by monitoring Carrier sense and Collision signal and implementing normal CSMA/CD protocol of the IEEE 802.3 standard. When transmission of the network packet has been completed, state machine  24  transitions from SEND_CURRENT state  36  to STOP state  39 . 
     If when in WAIT state  32 , XMIT_JAM state, SET_MODE state, STOP state  39 , XMIT state  33 , XMIT_TX_JAM state  34 , SET_TX_MODE state  35  or SEND_CURRENT state  36  the link between device  21  and  22  is lost, state machine  24  returns to START state  31 . Also, within any state of the normal Receive state machine and the transmit state machine, as defined by the IEEE 802.3 standard, if the link between device  21  and  22  is lost, state machine  24  returns to START state  31 . 
     The foregoing discussion discloses and describes merely exemplary methods and embodiments of the present invention. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.