Patent Description:
<CIT> discloses a method and apparatus selectively resetting a control plane in a network element. A network element with a selective reset controller resets the control plane of the network element without interrupting the data traffic processing of the data plane of the network element.

It is therefore the object of the present invention to provide an improved method for resetting a network device, a corresponding apparatus, and a corresponding computer program product.

A method for uninterrupted network communications is disclosed. The method detects a protected reset at a network device. In response to the protected reset, the method maintains communication functions of a communication module. The communication module communicates with other network devices using the communication functions. In response to the protected reset, the method resets the network device without resetting the communication module.

An apparatus for uninterrupted network communications is also disclosed. The apparatus includes hardware components, a memory, and/or a processor. The apparatus detects a protected reset at a network device. In response to the protected reset, the apparatus maintains communication functions of a communication module. The communication module communicates with other network devices using the communication functions. In response to the protected reset, the apparatus resets the network device without resetting the communication module.

A computer program product for uninterrupted network communications is disclosed. The computer program product includes a non-transitory computer readable storage medium having program code embodied thereon. The program code is readable/executable by a processor. The processor detects a protected reset at a network device. In response to the protected reset, the processor maintains communication functions of a communication module. The communication module communicates with other network devices using the communication functions. In response to the protected reset, the processor resets the network device without resetting the communication module.

In order that the advantages of the embodiments of the invention will be readily understood, a more particular description of the embodiments briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings.

The terms "including," "comprising," "having," and variations thereof mean "including but not limited to" unless expressly specified otherwise. An enumerated listing of items does not imply that any or all of the items are mutually exclusive and/or mutually inclusive, unless expressly specified otherwise. The term "and/or" indicates embodiments of one or more of the listed elements, with "A and/or B" indicating embodiments of element A alone, element B alone, or elements A and B taken together.

Furthermore, the described features, advantages, and characteristics of the embodiments may be combined in any suitable manner. One skilled in the relevant art will recognize that the embodiments may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments.

These features and advantages of the embodiments will become more fully apparent from the following description and appended claims or may be learned by the practice of embodiments as set forth hereinafter. As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, and/or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," "module," or "system. " Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having program code embodied thereon.

Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like.

Modules may also be implemented in software for execution by various types of processors. An identified module of program code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.

Indeed, a module of program code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network. Where a module or portions of a module are implemented in software, the program code may be stored and/or propagated on in one or more computer readable medium(s).

The computer readable medium may be a tangible computer readable storage medium storing the program code. The computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, holographic, micromechanical, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.

More specific examples of the computer readable storage medium may include but are not limited to a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), an optical storage device, a magnetic storage device, a holographic storage medium, a micromechanical storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, and/or store program code for use by and/or in connection with an instruction execution system, apparatus, or device.

The computer readable medium may also be a computer readable signal medium. A computer readable signal medium may include a propagated data signal with program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electrical, electro-magnetic, magnetic, optical, or any suitable combination thereof A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport program code for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireline, optical fiber, Radio Frequency (RF), or the like, or any suitable combination of the foregoing.

In one embodiment, the computer readable medium may comprise a combination of one or more computer readable storage mediums and one or more computer readable signal mediums. For example, program code may be both propagated as an electro-magnetic signal through a fiber optic cable for execution by a processor and stored on RAM storage device for execution by the processor.

Program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Python, Ruby, R, Java, Java Script, Smalltalk, C++, C sharp, Lisp, Clojure, PHP or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. The computer program product may be shared, simultaneously serving multiple customers in a flexible, automated fashion.

The computer program product may be integrated into a client, server, and network environment by providing for the computer program product to coexist with applications, operating systems, and network operating systems software and then installing the computer program product on the clients and servers in the environment where the computer program product will function. In one embodiment, software is identified on the clients and servers including the network operating system where the computer program product will be deployed that are required by the computer program product or that work in conjunction with the computer program product. This includes the network operating system that is software that enhances a basic operating system by adding networking features.

In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of an embodiment,.

The embodiments may transmit data between electronic devices. The embodiments may further convert the data from a first format to a second format, including converting the data from a non-standard format to a standard format and/or converting the data from the standard format to a non-standard format. The embodiments may modify, update, and/or process the data. The embodiments may store the received, converted, modified, updated, and/or processed data. The embodiments may provide remote access to the data including the updated data. The embodiments may make the data and/or updated data available in real time. The embodiments may generate and transmit a message based on the data and/or updated data in real time. The embodiments may securely communicate encrypted data. The embodiments may organize data for efficient validation. In addition, the embodiments may validate the data in response to an action and/or a lack of an action.

Aspects of the embodiments are described below with reference to schematic flowchart diagrams and/or schematic block diagrams of methods, apparatuses, systems, and computer program products according to embodiments of the invention. It will be understood that each block of the schematic flowchart diagrams and/or schematic block diagrams, and combinations of blocks in the schematic flowchart diagrams and/or schematic block diagrams, can be implemented by program code. The program code may be provided to a processor of a general purpose computer, special purpose computer, sequencer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the schematic flowchart diagrams and/or schematic block diagrams block or blocks.

The program code may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the schematic flowchart diagrams and/or schematic block diagrams block or blocks.

The program code may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the program code which executed on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

The schematic flowchart diagrams and/or schematic block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of apparatuses, systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the schematic flowchart diagrams and/or schematic block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions of the program code for implementing the specified logical function(s).

It will also be noted that each block of the block diagrams and/or flowchart diagrams, and combinations of blocks in the block diagrams and/or flowchart diagrams, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and program code.

The description of elements in each figure may refer to elements of preceding figures.

<FIG> is a schematic block diagram of a network <NUM>. In the depicted embodiment, the network <NUM> is organized as a linear network. The network <NUM> includes a host device <NUM> and a plurality of network devices <NUM>. The network <NUM> may provide communications for industrial automation. In one embodiment, the network <NUM> is an Ethernet network <NUM>.

Each network device <NUM> may include two or more ports. The two or more ports support the reduction of wiring costs for the network <NUM> as each network device <NUM> may be connected to a plurality of other devices <NUM>/<NUM>. The host device <NUM> may initiate a communication to a second network device 101b by communicating a message to a first network device 101a. The first network device 101a may communicate the message to the second network device 101b. In addition, the second network device 101b may respond to the message by communicating response to the first network device 101a. The first network device 101a may subsequently communicate the response to the host device <NUM>. As a result, communications between any two devices <NUM>/<NUM> requires the active participation of any intervening devices <NUM>/<NUM>.

Unfortunately, when a device <NUM>/<NUM> is resetting, is powered off, and/or is being powered on, hereafter referred to collectively as being reset, the device <NUM>/<NUM> is nonoperational and is unable to communicate messages for the network <NUM>. The embodiments described herein detect a protected reset at a network device <NUM>. In response to the protected reset, the embodiments maintain communication functions with other devices <NUM>/<NUM>. As a result, the function of the network <NUM> is not impaired. In addition, the embodiments reset the network device <NUM> without resetting and/or interrupting the communications functions as will be described hereafter. As a result, the functionality of the network <NUM> is enhanced.

<FIG> is a schematic block diagram of a network <NUM>. In the depicted embodiment, the network <NUM> is organized as a ring network. The network <NUM> includes the host device <NUM> and the plurality of network devices <NUM>. The network <NUM> may provide communications for industrial automation and may be an Ethernet network <NUM>.

As depicted in <FIG>, each network device <NUM> may include two or more ports and communications between devices <NUM>/<NUM> may be received and retransmitted by intervening devices <NUM>/<NUM>. As a result, communications between any two devices <NUM>/<NUM> requires the active participation of any intervening devices <NUM>/<NUM>.

<FIG> is a schematic block diagram of a network device <NUM>. In the depicted embodiment, the network device <NUM> includes at least one module <NUM>, a communication module <NUM>, a reset controller <NUM>, and at least one port <NUM>.

The modules <NUM> may perform specific functions for the network device <NUM>. In one exemplary embodiment, the first module 135a may be a control system and the second module 135b may be a configurable device such as a Field Programmable Gate Array (FPGA) and/or a memory. Although for simplicity two modules <NUM> are shown, any number of modules <NUM> may be employed.

The communication module <NUM> may communicate with the network <NUM>. The communication module <NUM> may communicate with other network devices <NUM> using communication functions. The communication functions may be Ethernet functions. In one embodiment, the Ethernet functions conform to at least one of the Institute of Electrical and Electronics Engineers (IEEE) <NUM> standards as of the filing date of the present application.

In one embodiment, the communication module <NUM> communicates via at least one port <NUM>. For example, the communication module <NUM> may receive a message via the first port 119a. The communication module <NUM> may further determine whether the network device <NUM> is the final destination for the message. If the network device <NUM> is the final destination for the message, the communication module <NUM> routes the message within the network device <NUM>. However, if the network device <NUM> is not the final destination for the message, the communication module <NUM> may route the message to downstream network device <NUM> via the second port 119b.

The reset controller <NUM> detects the protected reset at the network device <NUM>. In addition, the reset controller <NUM> maintains the communication functions of the communication module <NUM>, so that the communication module <NUM> communicates to other network devices <NUM> using the communications functions. In addition, the reset controller <NUM> may reset the network device <NUM> without resetting the communication module <NUM> as will be described hereafter.

<FIG> is a schematic block diagram of the network device <NUM>. The reset controller <NUM> and communication module <NUM> of <FIG> are shown. The communication module <NUM> includes two physical layers 121a-b and an embedded Ethernet switch <NUM>. The first module 135a may be a controller and the second module 135b may be an FPGA. The reset controller <NUM> detects the protected reset and maintains the communication functions of the communication module <NUM> while resetting the network device <NUM>.

In the depicted embodiment, the reset controller <NUM> receives a communications active <NUM> and a reset <NUM> and generates a shutdown command <NUM>, a controller reset <NUM>, an FPGA reconfigure <NUM>, a physical system reset <NUM>, and a switch reset <NUM>. Power detection circuits <NUM> may generate one or more power good <NUM> signals. The network device <NUM> further includes logical AND gates <NUM> and resistors <NUM>. The resistors <NUM> may function as buffering resistors and/or pull-up/down resistors.

The embedded Ethernet switch <NUM> generates an interface active <NUM> if the embedded Ethernet switch <NUM> is actively communicating via the physical layers <NUM> with another device <NUM>/<NUM>. As used herein, actively communicating is exchanging packets between the physical layers <NUM>. The interface active <NUM> may be an interrupt. A first AND gate 123a monitors the physical interfaces 171a-b of the physical layers 121a-b. In a certain embodiment, the physical interfaces 171a-b are interrupts. The first AND gate 123a may monitor for an interrupt. Alternatively, the first AND gate 123a may monitor for active communications. The communications active <NUM> signal is asserted if any of the physical interfaces 171a-b and interface active <NUM> are asserted. Alternatively, the communications active <NUM> signal is asserted if all of the physical interfaces 171a-b and interface active <NUM> are asserted. The communications active <NUM> may indicate that the communication module <NUM> is communicating with other devices <NUM>/<NUM>.

In the depicted embodiment, the network device <NUM> includes power management <NUM>. The power management <NUM> generates the reset <NUM>. The reset <NUM> may indicate that the network device <NUM> is about to be reset. In one embodiment, the reset <NUM> is a power reset. In response to the reset <NUM>, the reset controller <NUM> determines whether the reset <NUM> is the protected reset as will be described hereafter.

If the reset is not a protected reset, the reset controller <NUM> may generate the shutdown command <NUM> and the power management <NUM> may reset the network device <NUM>. In addition, the reset controller <NUM> may selectively reset one or more of the first module 135a, the second module 135b, the physical layers 121a-b, and the embedded Ethernet switch <NUM> as will be described hereafter.

If the reset is a protected reset, the reset controller <NUM> may selectively reset one or more of the first module 135a and/or the second module 135b. In the depicted embodiment, the reset controller <NUM> resets the first module 135a by generating the controller reset <NUM>. A first module reset 159a is generated by a second AND gate 123b in response to the controller reset <NUM> and the reset <NUM>, resetting the first module 135a. In one alternate embodiment, the controller reset <NUM> asserted low generates a second module reset signal 159b. In addition, the reset controller <NUM> may reset the second module 135b by asserting the FPGA reconfigure <NUM>. A second module reset 159b may be generated by a third AND gate 123c in response to the FPGA reconfigure <NUM> and the first module reset 159a being asserted. In addition, the second module reset 159b may be generated in response to the FPGA reconfigure <NUM>, the first module reset 159a, and the power good 151a being asserted. The reset controller <NUM> may not assert the physical system reset <NUM> and the switch reset <NUM>. As a result, the physical layers 121a-b and the embedded Ethernet switch <NUM> maintain communication functions for the network device <NUM>.

In one embodiment, the reset controller <NUM> selectively resets the physical layers 121a-b. The reset controller <NUM> may assert the physical system reset <NUM>. The physical system reset <NUM> may generate via a fourth AND gate 123d a physical layer reset <NUM> that resets the physical layers 121a-b. In the depicted embodiment, the physical layer reset <NUM> is generated in response to asserting the physical system reset <NUM> and the power good 151b being asserted. In a certain embodiment, the physical system reset <NUM> is only asserted if communications active <NUM> is not asserted.

In one embodiment, the reset controller <NUM> selectively resets the embedded Ethernet switch <NUM>. The reset controller <NUM> may assert the switch reset <NUM>. The switch reset <NUM> may generate via a fifth AND gate 123e a communications controller reset <NUM>. In the depicted embodiment, the communications controller reset <NUM> is generated in response to asserting the switch reset <NUM> and the power good 151b being asserted. In a certain embodiment, the switch reset <NUM> is only asserted if communications active <NUM> is not asserted.

<FIG> is a schematic block diagram of network data <NUM>. The network data <NUM> may be used to identify the protected reset <NUM>. In addition, the network data <NUM> may be used to selectively reset portions of the network device <NUM>. The network data <NUM> may be organized as a data structure in a memory. In the depicted embodiment, the network data <NUM> includes the protected reset <NUM>, a firmware download <NUM>, a configuration download <NUM>, a local reset <NUM>, the reset <NUM>, a power reset <NUM>, the shutdown command <NUM>, the interface active <NUM>, one or more power good <NUM>, one or more physical interface <NUM>, one or more module reset <NUM>, the physical layer reset <NUM>, and the communications controller reset <NUM>. The network data <NUM> may employ any or all of the protected reset <NUM>, the firmware download <NUM>, the configuration download <NUM>, the local reset <NUM>, the reset <NUM>, the power reset <NUM>, the shutdown command <NUM>, the interface active <NUM>, the one or more power good <NUM>, the one or more physical interface <NUM>, the one or more module reset <NUM>, the physical layer reset <NUM>, and the communications controller reset <NUM>.

The firmware download <NUM> may indicate that firmware was downloaded to the network device <NUM>. In addition, the firmware download <NUM> may be update code stored to a memory. In one embodiment, the firmware download <NUM> indicates that firmware was downloaded to the network device <NUM> since the last reset. The firmware download <NUM> may be set in response to downloading firmware to the network device <NUM>. In addition, the firmware download <NUM> may be cleared in response to resetting the network device <NUM> and/or a module <NUM> receiving the firmware.

The configuration download <NUM> may indicate that a configuration was downloaded to an FPGA module <NUM>, a configurable module <NUM>, the network device <NUM>, and the like. In addition, the configuration download <NUM> may be update code stored to a memory. In one embodiment, the configuration download <NUM> indicates that the configuration was downloaded to the network device <NUM> since the last reset. The configuration download <NUM> may be set in response to downloading the configuration to the network device <NUM>. In addition, the configuration download <NUM> may be cleared in response to resetting the network device <NUM> and/or a module <NUM> receiving the configuration.

The local reset <NUM> may indicate a soft reset for the network device <NUM>. The local reset <NUM> may be received by the network device <NUM>.

The reset <NUM> may be received by the reset controller <NUM>. The reset <NUM> may indicate a reset for the network device <NUM>. The interface active <NUM> may be received by the reset controller <NUM>.

The interface active <NUM> may indicate that the communication module <NUM> is actively communicating with other devices <NUM>/<NUM>. The power good <NUM> may be received by the reset controller <NUM> and indicate acceptable power for portions of the network device <NUM>.

The power reset <NUM> may be received by the reset controller <NUM>. In one embodiment, the power reset <NUM> is the reset <NUM>. In an alternative embodiment, the power reset <NUM> is separate from the reset <NUM>. In one embodiment, the module reset <NUM>, the physical layer reset <NUM>, and the communications controller reset <NUM> are each generated in response to the power reset <NUM>.

The physical interface <NUM> may be received by the reset controller <NUM>. The physical interface <NUM> may indicate that the corresponding physical layer <NUM> is actively communicating with other devices <NUM>/<NUM>.

The reset controller <NUM> may generate the shutdown command <NUM> when it is safe to reset and/or power down the network device <NUM>. In one embodiment, the shutdown command <NUM> is asserted if the interface active <NUM>, the physical interface <NUM>, and/or the communications active <NUM> are not asserted.

The protected reset <NUM> may be detected and/or asserted in response to a need to maintain the communication functions of the communication module <NUM>. In one embodiment, the protected reset <NUM> is detected in response to the reset <NUM> and the firmware download <NUM>. In a certain embodiment, the protected reset <NUM> is detected in response to the reset <NUM> and the configuration download <NUM>. In addition, the protected reset <NUM> may be detected in response to the local reset <NUM>. In one embodiment, the protected reset <NUM> is detected in response to the reset <NUM> and the local reset <NUM>.

Table <NUM> illustrates exemplary combinations of signals that may result in asserting and/or setting the protected reset <NUM>. A "<NUM>" indicates an asserted signal, '<NUM>' indicates a deasserted signal, and 'X' indicates a don't care. The combinations may be mutually exclusive.

The module resets <NUM>, physical layer reset <NUM>, and communications controller reset <NUM> may be generated in response to one or more of the protected reset <NUM>, the firmware download <NUM>, the configuration download <NUM>, the local reset <NUM>, the reset <NUM>, the shutdown command <NUM>, the interface active <NUM>, the power good <NUM>, and the physical interface <NUM>. Table <NUM> illustrates exemplary combinations of signals that may result in an asserting and/or setting module resets <NUM>, physical layer reset <NUM>, and communications controller reset <NUM>. The combinations may be mutually exclusive.

<FIG> is a schematic block diagram of a reset controller <NUM>. In the depicted embodiment, the reset controller <NUM> includes a processor <NUM>, a memory <NUM>, and communication hardware <NUM>. The memory <NUM> may store code and data. The processor <NUM> may execute the code and process the data. The communication hardware <NUM> may communicate with other devices and/or components. In the depicted embodiment, the communication hardware <NUM> receives one or more physical interfaces <NUM>, the reset <NUM>, the interface active <NUM>, one or more of the power good <NUM>, the power reset <NUM>, and the communications active <NUM>. The communication hardware <NUM> may generate one or more module resets <NUM>, the physical layer reset <NUM>, the communications controller reset <NUM>, and the shutdown command <NUM>. The communication hardware <NUM> may receive some or all of the depicted signals. In addition, the communication hardware <NUM> may generate some or all of the depicted signals.

<FIG> is a flow chart diagram of an uninterrupted communication method <NUM>. The method <NUM> may maintain uninterrupted communications in the network <NUM>. In response to the protected reset, the method <NUM> maintains communication functions while the host device <NUM> implements the reset. The communication module <NUM> continues to communicate with other network devices <NUM> using standard communication functions. In response to the protected reset, the method <NUM> functionally resets the network device <NUM> without resetting or affecting the physical communications. The method may be performed by the reset controller <NUM>.

The method <NUM> starts, and in one embodiment, the reset controller <NUM> detects <NUM> a reset. The reset may be the reset <NUM>. In addition, the reset may be the local reset <NUM>. In one embodiment, the reset is the power reset <NUM>.

The reset controller <NUM> further determines <NUM> if the reset is a protected reset <NUM>. The protected reset <NUM> may be a firmware update reset in response to the firmware download <NUM> for the network device <NUM>. In one embodiment, the reset is a protected reset <NUM> if the firmware download <NUM> is asserted. The reset may be a protected reset <NUM> if the firmware download <NUM> was asserted since the last reset. For example, the firmware download <NUM> may be cleared after each reset.

In addition, the protected reset <NUM> may be a configuration update reset in response to the configuration download <NUM> for the network device <NUM>. The reset may be a protected reset <NUM> if the configuration download <NUM> is asserted. The reset may be a protected reset <NUM> if the configuration download <NUM> was asserted since the last reset. For example, the configuration download <NUM> may be cleared after each reset.

In a certain embodiment, the protected reset <NUM> is the local reset <NUM>. The reset may be a protected reset <NUM> if the local reset <NUM> is asserted. For example, each local reset <NUM> may be a protected reset <NUM>.

In one embodiment, the reset is a protected reset <NUM> if the communications active <NUM> is asserted. In addition, the reset may be a protected reset <NUM> if the interface active <NUM> is asserted. The reset may be a protected reset <NUM> if the physical interface <NUM> is asserted.

If the protected reset <NUM> is not detected <NUM>, the reset controller <NUM> resets <NUM> the network device <NUM> with the communication module <NUM> and the method <NUM> ends. In one embodiment, the reset controller <NUM> asserts each of the module resets <NUM>, the physical layer reset <NUM>, the communications controller reset <NUM>, and the shutdown command <NUM>. The communication module <NUM> may be reset in response to the reset <NUM>.

If the protected reset <NUM> is detected <NUM>, the reset controller <NUM> maintains the communication functions of the communication module <NUM>. The communication module <NUM> communicates with other network devices <NUM> using the communication functions. The reset controller <NUM> further resets the network device <NUM> without resetting the communication module <NUM>. In one embodiment, the reset controller <NUM> asserts each of the module resets <NUM>.

In one embodiment, a module <NUM> receiving the configuration download <NUM> is reset <NUM>. In a certain embodiment, only a module <NUM> receiving the configuration download <NUM> is reset <NUM>. For example, if an FPGA module <NUM> receives the configuration download <NUM>, only the FPGA module <NUM> is reset <NUM>.

In one embodiment, a module <NUM> receiving a firmware download <NUM> is reset <NUM>. In a certain embodiment, only a module <NUM> receiving the firmware download <NUM> is reset <NUM>. For example, if a controller module <NUM> receives the firmware download <NUM>, only the controller module <NUM> is reset <NUM>.

In a certain embodiment, one of the embedded Ethernet switch <NUM> and the at least two Ethernet physical layers <NUM> are reset in response to detecting the protected reset <NUM>.

<FIG> is a flow chart diagram of a protected reset detection method <NUM>. The method <NUM> may determine the protected reset <NUM> for step <NUM> of <FIG>. The method <NUM> may be performed by the reset controller <NUM>.

The method <NUM> starts, and in one embodiment, the reset controller <NUM> determines <NUM> whether the reset <NUM> is a power reset <NUM>. If the reset <NUM> is the power reset <NUM>, no protected reset <NUM> is detected <NUM> and the method <NUM> ends.

If the reset <NUM> is not the power reset <NUM>, the reset controller <NUM> determines <NUM> if the reset <NUM> is a firmware update reset. In one embodiment, the reset controller <NUM> checks the firmware download <NUM> to determine if the reset <NUM> is a firmware update reset. If the firmware download <NUM> is asserted and/or the firmware download <NUM> is received, the reset <NUM> is the firmware update reset and the protected reset <NUM> is detected <NUM>.

If the reset <NUM> is not a firmware update reset, the reset controller <NUM> determines <NUM> whether the reset <NUM> is a configuration update reset. In one embodiment, the reset controller <NUM> checks the configuration download <NUM> to determine if the reset <NUM> is the configuration update reset. If the configuration download <NUM> is asserted and/or the configuration download <NUM> is received, the reset <NUM> is the configuration update reset and the protected reset <NUM> is detected <NUM>.

If the reset <NUM> is not the configuration update reset, the reset controller <NUM> determines <NUM> whether the reset <NUM> is the local reset <NUM>. The local reset <NUM> may be received from the host device <NUM> via the network <NUM>. If the reset <NUM> is not the local reset <NUM>, no protected reset <NUM> is detected <NUM> and the method <NUM> ends. If the reset <NUM> is the local reset <NUM>, the protected reset <NUM> is detected <NUM> and the method <NUM> ends.

In the past, resetting the network device <NUM> resulted in the network <NUM> being unavailable for communications. As a result, other devices <NUM>/<NUM> are unable to communicate over the network <NUM>. However, some resets <NUM>, such as after a firmware download <NUM> and/or configuration download <NUM> do not require that the network device <NUM> terminate communication functions. The embodiments detect the protected reset <NUM> at the network device <NUM>. In response to the protected reset <NUM>, the embodiments maintain the communication functions of the network device <NUM>. As a result, the network device <NUM> communicates with other network devices <NUM> using the communication functions. The embodiments further reset the network device <NUM> and/or portions of the network device <NUM> while maintaining the communication functions. As a result, the operation of the network device <NUM> and the network <NUM> is enhanced.

Claim 1:
A method (<NUM>) comprising:
detecting (<NUM>), by use of a reset controller (<NUM>), a protected reset (<NUM>) at a network device (<NUM>);
in response to the protected reset, maintaining communication functions of a communication module (<NUM>), wherein the communication module communicates with other network devices using the communication functions, wherein the communication functions are Ethernet functions, and wherein the communication module comprises an embedded Ethernet switch (<NUM>) and at least two Ethernet physical layers (121a, 121b); and
in response to the protected reset, resetting (<NUM>) the network device without resetting the communication module,
wherein the embedded Ethernet switch is reset with a communications controller reset (<NUM>), and the at least two Ethernet physical layers are reset with a physical layer reset (<NUM>) distinct from the communications controller reset.