Abstract:
Techniques for configuring network interface cards include storing device information related to multiple network interface card, and configuring the network interface cards based on the stored device information using a device driver. Techniques for installing a peripheral device, include initiating a search of stored device information by a device driver, receiving in the device driver information about the peripheral device in response to the search, and configuring the device using the received information.

Description:
BACKGROUND 
     The invention relates to configuring computer components. 
     Computer systems commonly are connected to several different types of network systems which can be arranged according to many physical and logical topologies. Each network system topology uses a separate hardware interface adapter called a network interface card (NIC). Communications properties of each NIC, such as speed of transmission, must be individually configured. However, a single computer system is typically limited to one type of network topology and, thus, one type of NIC. 
     The hardware and software computer components of computer systems are often upgraded to keep their technology current. The upgrade procedure is often done by a system administrator or an individual with expertise in both computer operating systems (OS) and computer networks. The procedure can involve repetitive rebooting of the computer system and reconfiguring of the new computer components. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 illustrates a data processing system. 
     FIG. 2 is a block diagram of a computer system for configuring computer components according to the invention. 
     FIG. 3 is a block diagram illustrating one embodiment for configuring network interface cards according to the invention. 
     FIG. 4 is a flow chart of a method for configuring network interface cards according to the invention. 
     FIG. 5 is a block diagram illustrating another embodiment for configuring computer components according to the invention. 
     FIG. 6 is a flow chart of a method for configuring computer components according to the invention. 
    
    
     DETAILED DESCRIPTION 
     As shown in FIG. 1, a data processing system  1  includes multiple computer systems  12   a ,  12   n  connected to a network system  16 . The network system  16  can be configured, for example, as a local area network (LAN) or a wide area network (WAN). The network system  16  allows a computer system, such as the system  12   a , to exchange information with another computer system, such as system  12   b . Each computer system  12   a ,  12   n  is connected to the network system  16  through a respective communications medium  18  such as a wire, optical, or wireless medium. 
     As shown in FIG. 2, the computer system  12   a  includes a central processing unit (CPU)  38  which is responsible for executing programs and for processing data stored in main memory  37 . The main memory  37  can include dynamic random access memory (DRAM) or other memory. 
     Peripheral devices  28   a ,  28   n  can be attached to the computer system  12   a . Peripheral devices  28   a ,  28   n  are computer components or hardware devices that provide additional functionality and capability to the basic set of computer system functions. Examples of such peripheral devices  28   a ,  28   n  include a video terminal, keyboard, mass-storage device, and network interface cards (NICs). 
     The computer bus  20  is a data path on the computer system  12   a  that facilitates the interconnection of the CPU  38  with computer components, such as peripheral devices  28   a ,  28   n . In one embodiment, the computer bus  20  includes multiple slots  21   a ,  21   n  each of which is typically a hardware connector on the motherboard of the computer system  12   a  where peripheral devices  28   a ,  28   n  are attached. In one embodiment, each slot  21   a ,  21   n  is assigned a bus-number and slot-number. 
     Each peripheral device  28   a ,  28   n  is typically designed and manufactured with a set of identification marks  29   a ,  29   n . These identification marks are specific to each vendor/manufacturer and device type and enable programs to identify them. The CPU  38  communicates with each peripheral device  28  based on its unique memory base address  39   a ,  39   n  within the memory address space of main memory  37 . 
     The operating system (OS)  22  is the main program that manages other programs in the computer system  12   a . It is loaded onto the main memory  37  when the computer system  12   a  is booted. The OS  22  creates and maintains a resource and configuration file  26  in which it stores information related to installed peripheral devices  28   a ,  28   n . The OS  22  creates and maintains the configuration file  26  by creating a separate entry  41   a ,  41   n  in the file  26  for each device that it identifies. Once the OS  22  identifies a peripheral device  28   a ,  28   n , it acquires device information such as vendor and device-identification  29   a ,  29   n , bus and slot-number  21   a ,  21   n , and memory base address  39   a ,  39   n . The OS  22  stores the information it acquires from each device  28   a ,  28   n  in its own entry  41   a ,  41   n.    
     Programs called device drivers  24   a ,  24   n  are loaded onto the main memory  37  when the computer system  12   a  is turned on. Each device driver  24   a ,  24   n  is responsible for controlling a corresponding peripheral device  28   a ,  28   n . Some device drivers  24   a ,  24   n  can control and manage more than one peripheral device  28   a ,  28   n.    
     As illustrated in FIG. 3, the computer system  12   a  may have multiple NICS attached to computer bus  20 . In one embodiment, peripheral device  28   a , designated as NIC 1 , is attached to slot  21   a  and peripheral device  28   b , designated as NIC 2 , is attached to slot  21   b . Each NIC can be connected to a different network system (not shown), for example, NIC 1  can be configured to operate with a 10 Megabit-per-second (Mps) Ethernet network and NIC 2  can be configured to operate with a high-speed 100 Mps Ethernet network. 
     The OS  22  manages the computer system  12   a  including maintaining the computer file  26  and loading the device driver  24   a . As shown in FIG. 3, a device driver  24   a  controls and manages both NICs. The operational properties of each NIC are stored in the computer file  26  as a list of separate entries, for example, entry  41   a  corresponds to NIC 1  and entry  41   b  corresponds to NIC 2 . A special character  43 , such as a comma, is used to separate the entries  41   a  and  41   b . Each entry includes several fields. For example, entry  41   a  has a communication speed property field  41   a − 1  which is set, in the illustrated example, to the value 10 representing a speed of 10 Mps. Other fields can include communications properties such as flow control and duplex setting. 
     Operation of the system is now explained. As illustrated in FIG. 4, a user turns on  60  the computer system  12   a  causing the OS  22  to be loaded. Once the OS  22  is loaded and running, the operational and communications properties of each NIC are stored  61  in the special computer file  26  by a user or system administrator. For example, the user can store the properties for NIC 1  in entry  41   a . The user then enters the character  43  to separate the next entry  41   b  for NIC 2 . The user installs  62  device driver  24   a  which will control both NIC 1  and NIC 2 . After the driver  24   a  is installed, the computer system is turned off  63  and each NIC is installed  64  on the bus  20 . Once the device driver  24   a  and the NICs have been installed, the computer system  12   a  is turned on  65  causing the OS  22  to be loaded. As the OS  22  is loaded, it takes control of the computer system  12   a  and loads  66  the device driver  24   a . As the device driver  24   a  is loaded, it executes initialization procedures  67  for the corresponding NICs. These procedures may include ascertaining the physical location, such as the slot-number and bus-number, of each NIC installed on the computer bus  20 . 
     Once the OS  22  loads the device driver  24   a , it opens  68  the configuration file  26  and searches  69  for the entries  41   a - 41   b  in the file  26  corresponding to the NIC it is controlling. After the device driver  24   a  locates the particular entry  41   a - 41   b , it parses  70  the entry for the operational properties of the NIC it is controlling. This includes separating the sets of properties corresponding to the two NICs. For example, the driver  24   a  locates and then parses entry  41   a  for NIC 1  and then proceeds to process entry  41   b  for NIC 2 . In a Solaris™ OS environment, the device driver  24   a  issues a system call requesting the operational properties for the particular NIC. The system call executes the request and responds by returning the properties corresponding to the particular NIC. 
     Next, the device driver  24   a  configures  70  each NIC. For example, the driver  24   a  assigns the properties found in entry  41   a  to NIC  1  and assigns the properties found in entry  41   b  to NIC  2 . Communications properties such as speed flow control, and duplex mode also can be used to configure each NIC. 
     The foregoing techniques can enable a computer system  12   a  to be configured with multiple NICs using a device driver  24   a . Thus, a single computer system  12   a  can be capable of connecting to several different types of network systems  16 . 
     Occasionally, a user may have to install or replace peripheral devices if, for example, one of the devices was damaged or became obsolete. Often, when the device is replaced, it may not be installed in the same location on the computer bus  20  as the original device. In one embodiment, illustrated in FIG. 5, device  28   c  is a video device and is attached to slot  21   c  and device  29   d  is a mass-storage device and is attached to slot  21   d . Each device  28   c ,  28   d  has a corresponding memory base address  39   c ,  39   d , an entry  41   c ,  41   d  in the configuration file  26 , device/vendor identification mark  29   c ,  29   d , and a corresponding device driver  24   c ,  24   d.    
     As shown in FIG. 6, peripheral devices  28   c ,  28   d  are installed  71  in the computer system  12   a  when it is turned off. The computer system  12   a  is then turned on  72  to initiate the process of booting. This process includes loading the OS  22  onto the main memory  37  of the computer system  12   a . As the OS  22  is loaded, it scans  73  its hardware environment and identifies the peripheral devices  28   c ,  28   d  that are attached to the computer bus  20 . 
     For each device  28   c ,  28   d  the OS  22  identifies, it reads from the device any pertinent information and stores  74  it in the file  26 . In a UnixWare™ OS environment, the file  26  created by the OS  22  is called a resource manager file and is used to store a separate entry  41   c ,  41   d.    
     For example, as shown in FIG. 5, device  28   c  has a corresponding entry  41   c  containing pertinent information related to the device. Each entry  41   c ,  41   d  can contain multiple fields. For example, entry  41   c  is subdivided into field  41   c - 1 , representing the physical bus number, and field  41   c - 2 , representing the slot-number of device  28   c . It also may include information specific to the manufacturer of the device. For example, field  41   c - 3  of device  28   c , corresponding to the vendor-identification, is set to the vendor “ABC Corp,” and field  41   c - 4 , corresponding to the device-identification, is set to device type “Mass Storage”. This information corresponds to the device-identification mark  29   c - 1  and vendor-identification mark  29   c - 2  of device  28   c.    
     Other entry information may include the logical location of the device within the address space of the computer system  12   a . For example, device  28   c  has memory base address field  41   c - 5  set to the value 1000. This value represents the memory location  39   c  of the device  28   c  in main memory  37  which is used by the CPU  38  to access the device. The OS  22  loads  75  into main memory  37  the device drivers  24   c ,  24   d  for each peripheral device  28   c ,  28   d  that is installed on the computer system  12   a . That is, each device driver  24   c ,  24   d  is loaded one driver at a time. In other embodiments, a single driver may control multiple devices instead of single driver controlling a single device. 
     While each device driver  24   c ,  24   d  is being loaded, it opens  76  the resource manager file  26 . The drivers  24   c ,  24   d  then determine  77  the information related to each device such as vendor and device-identification and slot/bus-number. In a UnixWare™ environment, the drivers  24   c ,  24   d  issue a system call requesting the device information including memory base address of each peripheral device  28   c ,  28   d.    
     Each driver  24   c ,  24   d  then searches  78  the contents of the file  26  looking for an entry  41   c ,  41   d  for the device it is controlling. The criteria used to search the file  26  are based on the information the driver  24   c ,  24   d  acquired from the system call request, namely, base and slot-number, vendor and device-identification, and memory base address. The driver  24   c ,  24   d  searches the file  26  based on these criteria until it finds an entry  41   c ,  41   d  corresponding to the specified search criteria. The information in the entries  41   c ,  41   d  is matched against the information in the search criteria. 
     Once a match is found  79 , the device  28   c ,  28   d  is configured  80  using information based on the memory base address  39   c ,  39   d . As discussed above, the memory base address  39   c ,  39   d  represents the location of the device in the memory space of main memory  37 . This address enables the computer system  12   a  to communicate with the device  28   c ,  28   d . The process terminates by closing the information file  26 . In a UnixWare™ environment, the device driver  24   c ,  24   d  closes the resource manager file  26 . This process is repeated for each device driver  24   c ,  24   d  and corresponding device  28   c ,  28   d  that is installed on the computer system  12   a.    
     The foregoing techniques can enable a computer user or system administrator to upgrade and replace hardware computer components with minimal intervention. 
     Various features of the system can be implemented in hardware, software, or a combination of hardware and software. For example, some aspects of the system can be implemented in computer programs executing on programmable computers. Each program can be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. Furthermore, each such computer program can be stored on a storage medium, such as read-only-memory (ROM) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage medium is read by the computer to perform the functions described above. 
     Other implementations are within the scope of the following claims.