Abstract:
Techniques are provided for assigning a device to a desired network. In one embodiment, the device is connected via a network switch to the network. A value of a configurable parameter corresponds to a data speed that would be used to transfer the data between the device and the network. To assign the device to the network, the value of the parameter corresponding to a desired speed is set in the network circuitry of the device. The network switch, interfaces with the device, detects the speed, and, based on this speed, assigns the device to a corresponding network. Additionally, the switch can assign the data duplex based on a value of a configurable duplex parameter set in the network circuitry.

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to networks and, more specifically, to assigning a device to a network. 
     BACKGROUND OF THE INVENTION 
     Nowadays, it is very common for an electronic device such as a computer to be connected to a network including a local area network (LAN), which spans a relatively small area, e.g., a building, a group of buildings, etc. Typically, the computer includes a network card or network circuitry to be connected to a network switch, and thus a network. The computer, usually via the network card, includes speed options such as 10Base-T, 100Base-T, 1000Base-T, etc., to transfer data at different speeds. A 10Base-T system supports data speed at up to 10 megabits per second; a 100Base-T system supports data at up to 100 megabits per second; and a 1000Base-T system supports data at up to 1 gigabit per second. In some approaches, the switch sets the transfer rate to the highest speed advertised by the computer. For example, if the computer advertises that it can support both 10 and 100Base-T, and if the switch can support both 10 and 100Base-T, then the switch sets the speed to 100Base-T. However, in one approach, once the computer is set to a particular speed, it is assigned to a network of the same speed and cannot communicate with a computer or another device in another network of a different speed. For example, if the computer is set to 100Base-T, it is assigned to a “100BaseT” network and can only communicate with devices in this of 100Base-T network, but cannot communicate with devices in a different network, e.g., a “10Base-T” network. Similarly, when the computer is set to 10Base-T, it is assigned to a 10Base-T network and cannot communicate with other devices in the 100Base-T network. A bridge or similar mechanisms connecting two different networks can allow devices in the two different networks to communicate with one another. However, such a solution usually requires extra hardware and associated costs. 
     A full duplex system that transfers data between two parties allows both parties to concurrently transmit the data while a half duplex system allows only one party to transmit the data at a time. In many situations, the switch forces a default duplex to the computer, and the computer has no choice but to operate at such a forced duplex. For example, the switch forces a computer to be half-duplex and 10Base-T if the computer does not enable its auto-negotiate option. 
     Based on the foregoing, it is desirable that mechanisms be provided to solve the above deficiencies and related problems. 
     SUMMARY OF THE INVENTION 
     The present invention, in various embodiments, provides techniques for assigning a device to a desired network. In one embodiment, the device is connected via a network switch to the network. A value of a configurable parameter corresponds to a data speed to be used in transferring the data between the device and the network. To assign the device to the network, the value of the parameter corresponding to a desired speed is set in the network circuitry of the device. The network switch interfaces with the device, detects the speed, and, based on this speed, assigns the device to a corresponding network. Additionally, the switch can assign the data duplex based on a value of a configurable duplex parameter set in the network circuitry. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention is illustrated by way of example in the figures of the accompanying drawings in which like reference numerals refer to similar elements and in which: 
         FIG. 1  shows a system upon which embodiments of the invention may be implemented; 
         FIG. 2  shows a switch in accordance with one embodiment; 
         FIG. 3  is a flowchart illustrating a method for configuring a network parameter to a computer; and 
         FIG. 4  shows a block diagram of a computer upon which embodiments of the invention may be implemented. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid obscuring the invention. 
       FIG. 1  shows a system  100  connected to a network  130  upon which embodiments of the invention may be implemented. System  100  includes a service processor (GSP)  110  in the form of a card plugged in a PCI slot (not shown). GSP  110  includes a network connection  115  connected to a network switch  120 , and thus to network  130 . 
     The GSP 
     In one embodiment, system  100  is a Unix server, and, through appropriate hardware and software, communicates with service processor  110 . Similarly, service processor  110  includes hardware and software to provide administrative capabilities to system  100 , such as providing event monitor and notification, power management, and access to console of system  100 . Service processor  110  acts as a console and front panel display redirector, allowing a user via a console client to have the same set of functionalities and level of controls of system  100 . Service processor  110  allows interactions between a console client and program applications on system  100 . This console client may be connected to system  100  locally, e.g., through asynchronous links, or remotely, e.g., through a network. Those skilled in the art will recognize that a console is the means from which a user gets access to some specific functions of a computer system, including, for example, checking status of the system, performing system administration, updating system software, configuring system hardware, etc. Normally, a console, being used interchangeably with a terminal, includes a monitor and a keyboard or input device. Service processor  110  also provides system support and management functions for system  100 , including providing remote access over a network for managing system  100 &#39;s boot and reset, providing remote maintenance such as power management, event logs, and event filtering and notifications, etc. In one embodiment, each console client connected to service processor  110  may mirror system  100 &#39;s console. That is, operations in a console client can be observed in other console clients. Further, service processor  110  is integrated as an input/output (I/O) device to system  100 , and acts as an autonomous embedded device, which is powered independently and runs embedded applications independent of system  100 &#39;s state. System  100  may properly function with or without service processor  110  or with service processor  110  being inoperative. In one embodiment, service processor  110  is commercially available without a terminal, and service processor  110  is referred to as an embedded management processor or device because service processor  110  is part of system  100  and provides management services for system  100 . 
     Service processor  110  includes configurable parameters used to configure service processor  110  to operate with switch  120 , and thus with network  130 . These parameters include, for example, the desired data speed of network  130 , the duplex of network  130 , etc., whether the value of the network speed and/or the duplex are non-negotiable or auto-negotiable. Duplex refers to the directions of data being transferred between two devices at a particular point in time. In a full-duplex mode, two devices may concurrently transmit data while in a half-duplex mode, only one device may transmit data at a time. If service processor  110  turns off the auto-negotiate mode, then switch  120  is in a “forced” mode. That is, service processor  110  forces switch  120  to operate with service processor  110  in a specified mode, e.g., setting the speed and/or the duplex to a speed and/or duplex indicated by service processor  110 . In one embodiment, when in the forced mode, switch  120  sets the duplex to a default of half duplex. However, if service processor  110  turns on the auto-negotiate mode, then switch  120  may set the speed to the highest speed supported by both service processor  110  and switch  120 . In one embodiment, service processor  110  can support both the 10 and the 100Base-T speeds, and if service processor  110  does not advertise that it supports 100Base-T, then it is understood that service processor  110  supports 10Base-T. Service processor  110  includes options for selecting an appropriate duplex, e.g., full duplex, half duplex, etc. 
     In one embodiment, service processor  110  includes a text user interface that receives configuration commands from a user. These configuration commands are used to set the values for the configurable parameters. Upon receiving a configuration command, the user interface displays choices for the user to select options, including, for example, 10Base-T or 100Base-T, half-duplex or full duplex, non-negotiate or auto-negotiate, etc. Upon receiving the values of selected parameters, the user interface, via appropriate software packages, passes the selected parameters through the network driver that controls the network circuitry of service processor  110 . The network driver then passes the parameters to various network layers including the medium access control (MAC) layer and the physical (PHY) layer, which set the values in appropriate registers. Switch  120 , via connection  115 , may access these parameters as appropriate. 
     Service processor  110  operates in at least two modes. In the first mode commonly referred to as the console mode, service processor  110  serves as the console for system  110 , and while in the second mode or the handler mode, service processor  110 , via a control panel, accepts configuration commands. Alternatively, other mechanisms such programming may be used to set the configurable parameters. 
     Service processor  110  also includes a bootline, which is a segment of memory used to start service processor  110 . This bootline may be considered a data structure stored in service processor  10 &#39;s memory, which, in one embodiment, is non-volatile random access memory (NVRAM). In one embodiment, this bootline stores information related to the network, e.g., the LAN. Because NVRAM can retain data even when the power is turned off, the values of the parameters stored in the bootline may be invoked after each reboot or reset. In one embodiment, these values are invoked when the network driver is loaded, which normally occurs when service processor  110  boots. 
     In one embodiment, service processor  110  is assigned to network  130  based on the speed of the data transferred service processor  110  and network  130 , e.g., 10Base-T, 100Base-T, 1000Base-T, etc. 
     The Switch 
       FIG. 2  shows a switch  120 , in accordance with one embodiment. Switch  120  includes a plurality of ports  210 ( 1 ) to  210 (N), each of which connects a network device to a network. In the example of  FIG. 1 , a port  210  connects service processor  110  via connection  115  to network  130 . Switch  120 , via network  130 , may also route the data, usually in the form of packets, between devices. Depending on the situations, before a device can operate in network  130 , the device and switch  120  experience a negotiation process to determine the speed and/or the duplex at which the device operates in the network. 
     In one embodiment, switch  120  supports two networks of two speeds 10Base-T and 100Base-T. Switch  120  uses the data speed to assign a device, e.g., service processor  110 , to either the 10Base-T or the 100Base-T network. For example, if service processor  110  is to operate at the 10Base-T speed, then switch  120  assigns service processor  110  to the 10Base-T network. Similarly, if service processor  110  is to operate at the 100Base-T speed, then switch  120  assigns service processor  110  to the 100Base-T network. In one embodiment, once being assigned to a particular network of a particular speed, service processor  110  can only communicate with devices in the same network, but is not allowed to communicate with devices in a different network. 
     Switch  120  sets the network speed that can be supported by both service processor  110  and switch  120 . For illustration purposes, switch  120  can support all speeds supported by service processor  110 . Further, switch  120  includes an auto-negotiate option that sets the highest speed advertised by service processor  110 . As a result, if service processor  110  advertises that it can support up to 100Base-T, then switch  120  sets the speed to 100Base-T. Similarly, if service processor  110  advertises that it can support up to 1000Base-T, then switch  120  sets the speed to 1000Base-T, etc. 
     Switch  120  uses the speed desired by service processor  110  when switch  120  is in a forced mode, i.e., switch  120  cannot invoke the auto-negotiate process. For example, if service processor  110  desires a 10Base-T or a 100Base-T, then switch  120  sets the speed to 10Base-T or 100Base-T, respectively. In one embodiment, when in the forced mode, switch  120  does not detect the duplex and defaults to half duplex. In an alternative embodiment, switch  120  may be configured to match the duplex set by service processor  110 . Consequently, if service processor  110  desires a half duplex or a full duplex, then switch  120  can be configured to half duplex or full duplex, respectively. 
     Switch  120  is used as an example, other network controllers that connect a device to a network such as a wireless LAN switch is within the scope of the invention. 
     Method Steps 
       FIG. 3  is a flowchart illustrating a method for configuring parameters for a device, e.g., service processor  110 , to be connected to network  130 . 
     In step  304 , a user, via the control panel and the user interface of service processor  110 , enters a command to configure the network parameters for service processor  110 . 
     In step  308 , from the choices provided from the user interface, the user enters the desired value for the parameter, e.g., 10Base-T, 100Base-T, full duplex, half duplex, non-negotiate, auto negotiate, etc. For illustration purposes, the user selects, non-negotiate, 10Base-T, and full duplex, and it is assumed that the values received from the user are different from those stored in the bootline of service processor  110 . 
     In step  312 , service processor  110  updates the values stored in the bootline with the entered values. 
     In step  316 , service processor  110  stops the network and writes appropriate values to appropriate registers, e.g., 10Base-T to the speed register, full duplex to the duplex register, etc. 
     In step  320 , service processor  110  restarts the network with the network registers having the new parameter values. 
     In step  326 , based on the new parameter values set in the appropriate registers, switch  120  via connection  115  and other hardware mechanism, determines whether service processor  110  desires a non-negotiate mode or an auto-negotiate mode. 
     If service processor  110  desires the non-negotiate mode, then, in step  330 , switch  120 , based on the detected speed, assigns service processor  110  to the desired network, which, for illustration purposes, is a 10Base-T network. In one embodiment, because in the forced mode, switch  120 , in step  332 , sets to a default, e.g., of half duplex. In an alternative embodiment, a user manually sets the duplex to a value provided in step  308 . However, switch  120  may automatically set this value. 
     In step  334 , service processor  110  freely communicates with other devices in the assigned 10Base-T network. 
     However, if, in step  326 , service processor  110  desires the auto-negotiate mode, then, switch  120 , in step  340 , sets the speed to a highest speed supported by both service processor  110  and switch  120 . 
     In step  344 , in one embodiment, switch  120 , in conjunction with the auto-negotiate mode that sets to the highest speed, also sets to the highest duplex supported by both service processor  110  and switch  120 . In an alternative embodiment, switch  120  sets the duplex to a value provided in step  308 , and, in step  334 , service processor  110  is free to communicate with devices to the assigned network. 
     In the above example, the user had choices to configure network parameters for service processor  110 , which is advantageous over other approaches. The user can control which network and/or which duplex for a device, e.g., service processor  110 , to operate. This is greatly useful when switch  120  does not allow for setting the network parameters. For example, in one approach, if service processor  110  does not advertise that it can support the 100Base-T speed, then switch  120  forces service processor  110  to 10Base-T and half duplex. However, as seen above, using the configuration techniques of the invention, service processor  110  was set to operate at desired values, e.g., 10Base-T and full duplex, instead of half duplex. Further, during the testing phase of service processor  110 , service processor  110  may be configured to, and thus tested with, various combinations of parameter, e.g., auto-negotiate, speed, duplex, etc. 
     Computer System Overview 
       FIG. 4  is a block diagram showing a computer system  400  upon which embodiments of the invention may be implemented. For example, computer system  400  may be implemented to operate as a system  100 , to perform functions in accordance with the techniques described above, etc. In one embodiment, computer system  400  includes a central processing unit (CPU)  404 , random access memories (RAMs)  408 , read-only memories (ROMs)  412 , a storage device  416 , and a communication interface  420 , all of which are connected to a bus  424 . 
     CPU  404  controls logic, processes information, and coordinates activities within computer system  400 . In one embodiment, CPU  404  executes instructions stored in RAMs  408  and ROMs  412 , by, for example, coordinating the movement of data from input device  428  to display device  432 . CPU  404  may include one or a plurality of processors. 
     RAMs  408 , usually being referred to as main memory, temporarily store information and instructions to be executed by CPU  404 . Information in RAMs  408  may be obtained from input device  428  or generated by CPU  404  as part of the algorithmic processes required by the instructions that are executed by CPU  404 . 
     ROMs  412  store information and instructions that, once written in a ROM chip, are read-only and are not modified or removed. In one embodiment, ROMs  412  store commands for configurations and initial operations of computer system  400 . 
     Storage device  416 , such as floppy disks, disk drives, or tape drives, durably stores information for use by computer system  400 . 
     Communication interface  420  enables computer system  400  to interface with other computers or devices. Communication interface  420  may be, for example, a modem, an integrated services digital network (ISDN) card, a local area network (LAN) port, etc. Those skilled in the art will recognize that modems or ISDN cards provide data communications via telephone lines while a LAN port provides data communications via a LAN. Communication interface  420  may also allow wireless communications. 
     Bus  424  can be any communication mechanism for communicating information for use by computer system  400 . In the example of  FIG. 4 , bus  424  is a media for transferring data between CPU  404 , RAMs  408 , ROMs  412 , storage device  416 , communication interface  420 , etc. 
     Computer system  400  is typically coupled to an input device  428 , a display device  432 , and a cursor control  436 . Input device  428 , such as a keyboard including alphanumeric and other keys, communicates information and commands to CPU  404 . Display device  432 , such as a cathode ray tube (CRT), displays information to users of computer system  400 . Cursor control  436 , such as a mouse, a trackball, or cursor direction keys, communicates direction information and commands to CPU  404  and controls cursor movement on display device  432 . 
     Computer system  400  may communicate with other computers or devices through one or more networks. For example, computer system  400 , using communication interface  420 , communicates through a network  440  to another computer  444  connected to a printer  448 , or through the world wide web  452  to a server  456 . The world wide web  452  is commonly referred to as the “Internet.” Alternatively, computer system  400  may access the Internet  452  via network  440 . 
     Computer system  400  may be used to implement the techniques described above. In various embodiments, CPU  404  performs the steps of the techniques by executing instructions brought to RAMs  408 . In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the described techniques. Consequently, embodiments of the invention are not limited to any one or a combination of software, firmware, hardware, or circuitry. 
     Instructions executed by CPU  404  may be stored in and/or carried through one or more computer-readable media, which refer to any medium from which a computer reads information. Computer-readable media may be, for example, a floppy disk, a hard disk, a zip-drive cartridge, a magnetic tape, or any other magnetic medium, a CD-ROM, a CD-RAM, a DVD-ROM, a DVD-RAM, or any other optical medium, paper-tape, punch-cards, or any other physical medium having patterns of holes, a RAM, a ROM, an EPROM, or any other memory chip or cartridge. Computer-readable media may also be coaxial cables, copper wire, fiber optics, acoustic or electromagnetic waves, capacitive or inductive coupling, etc. As an example, the instructions to be executed by CPU  404  are in the form of one or more software programs and are initially stored in a CD-ROM being interfaced with computer system  400  via bus  424 . Computer system  400  loads these instructions in RAMs  408 , executes some instructions, and sends some instructions via communication interface  420 , a modem, and a telephone line to a network, e.g. network  440 , the Internet  452 , etc. A remote computer, receiving data through a network cable, executes the received instructions and sends the data to computer system  400  to be stored in storage device  416 . 
     In the foregoing specification, the invention has been described with reference to specific embodiments thereof. However, it will be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded as illustrative rather than as restrictive.