fig2 is a functional block diagram of a network device 200 including a host 202 , a network interface 204 , and a plurality of networks 206 a through 206 n , according to one implementation . host 202 can be a computer , printer , personal digital assistant ( pda ), compact flash interface device , network appliance , or any other device capable of communicating with a network using a network interface 204 . host 202 includes a plurality of software applications 208 and a single device driver 210 . applications 208 communicate over one of networks 206 using a device driver 210 and a network interface 204 . network interface 204 includes a network interface controller 212 , a plurality of media access controllers ( mac ) 214 a through 214 n , filters 216 a through 216 n , a plurality of physical layer devices ( phy ) 218 a through 218 n , and a programmable read - only - memory ( prom ) 220 . a different mac address is permanently assigned to each network interface 204 during manufacture by programming a mac address into prom 220 . as is clear from fig2 , network interface 204 includes multiple phys 218 , each capable of communicating over a different network 206 . each phy 218 also communicates with a mac 114 . in network interface 204 , all of the macs 214 use the same single mac address . when network interface 204 is powered , network interface controller 212 retrieves the single mac address from prom 220 , and loads the single mac address into all of the macs 214 a through 214 n . each mac 214 uses this single mac address for sending data from host 202 to one of the networks 206 , and for sending data from one of the networks 206 to host 202 . fig3 is a flowchart depicting an operation of network device 200 according to one implementation . when network interface 204 is powered , each of its phys 218 determines the status of the network 206 to which it is connected ( step 302 ). phy 218 determines a status of available when a link has been established over its network 206 with another network device , such as a switch or the like , and determines a status of unavailable when no such link has been established . in a wireless network , phy 218 determines that a link has been established when the phy detects the presence of a beacon signal emitted by a base station or another network device within the wireless network , as is well - known in the relevant arts . each phy 218 communicates the status of its network 206 to network interface controller 212 . network interface controller 212 communicates the status of each network 206 to host 202 ( step 304 ). host 202 determines a preference among the networks 206 ( step 306 ). more specifically , device driver 210 within host 202 determines a preference among the networks 206 . in one implementation , device driver 210 obtains the preference by prompting the user to select one of the networks 206 . in another implementation , device driver 210 obtains the preference from a default setting or a setting previously established by a user . the preference can indicate one preferred network , or can indicate any number of preferred networks , in order of preference . in one implementation , a wired network is preferred over a wireless network by default . host 202 selects one of the networks 206 ( step 308 ). more specifically , device driver 210 within host 202 selects one of the networks 206 . in one implementation , device driver 210 selects one of the networks 206 based on the preference and the status of the networks . device driver 210 selects the network 206 indicated by the preference if the status of that network is available . but if the status of that network 206 is unavailable , device driver 210 attempts to select another of the networks . if multiple preferred networks 206 are specified in order of preference , device driver 210 checks each in order of preference , and selects the most preferred network having an available status . if none of the preferred networks have an available status , device driver 210 attempts to select a network 206 that is not preferred , if any . host 202 communicates the selection to network interface 204 ( step 310 ). network interface controller 212 receives the selection , and activates the path within the network interface 204 that serves the selected network 206 ( step 312 ). the selected path includes the phy 218 that is connected to the selected network 206 and the mac 214 that communicates with that phy . network interface controller 212 activates a path within network interface 204 according to the following method . network interface controller 212 includes a control register that includes a bit for each mac 214 . each bit in the control register controls the corresponding mac 214 to one of two states : active or standby . network interface controller 212 activates a path by setting the bit for the mac 214 in that path to control that mac to the active state . each mac 214 controls the state of the phy 218 in its path . when a mac 214 is in the active state , it controls the phy 218 in its path to the active state . when a mac 214 is in the standby state , it controls the phy 218 in its path to the standby state . when a mac 214 and phy 218 are in the active state , they communicate with the network connected to the phy . when a mac 214 and phy 218 are in the standby state , they do not communicate with the network connected to the phy . the network interface 204 then communicates data to and from host 202 over the selected network 206 using the single mac address loaded into all of the macs 214 from prom 220 ( step 314 ). network interface 204 sends data to the selected network 206 by inserting the mac address into the header of each frame of the data . network interface 204 uses filter 216 to examine the header of each frame of data on the selected network , and transfers those frames having the single mac address of the network interface 204 to the host 202 . different media can have different frame structures . in particular , the location of the destination address within the frame can differ for different media . each filter 216 includes a filter table that tells the corresponding phy 218 where to find the destination address in the frame for the medium that constitutes the network connected to that phy . in particular , the filter table usually specifies the offset in bits of the destination address from the start of the frame . in other implementations , filters 216 are implemented together as a single filter having a filter table containing the offsets for each type of media supported by the network interface 204 . fig4 is a flowchart depicting an operation of network device 200 according to another implementation . when network interface 204 is powered , each of its phys 218 determines the condition of the network 206 to which it is connected ( step 402 ). the condition of the network can include one or more measurements , including link status , network throughput , network traffic load , network congestion , received signal intensity , and the like . link status is a binary value that indicates the presence or absence of the network . in a wireless network , phy 218 determines that a link has been established when the phy detects the presence of a beacon signal emitted by a base station within the wireless network , as is well - known in the relevant arts . network throughput indicates the amount of data traversing the network interface 204 . in one implementation , network interface 204 determines network throughput by determining the number of bits that traverse the network interface in a predetermined period of time . network traffic load indicates the total amount of traffic traversing the network . in one implementation , network interface 204 determines network traffic load by counting the total number of frames it receives from the network , including frames destined for other network interfaces and devices . network congestion indicates the level of excess traffic on the network . in one implementation , network interface 204 determines network congestion by computing the ratio of unsuccessful transmissions to total transmission attempts . received signal intensity indicates the strength of the signal received from a base station in a wireless network . when multiple wireless networks are present , received signal intensity is used to select among them . in a wireless network , a network interface 204 often cannot receive signals from all of the other network devices communicating with the wireless network &# 39 ; s base station . in one implementation , the wireless base station determines the condition of the network , and broadcasts this condition . network interface 204 thus receives the network condition from the wireless base station . each phy 218 communicates the condition of its network 206 to network interface controller 212 . network interface controller 212 communicates the condition of each network 206 to host 202 ( step 404 ). host 202 determines a preference among the networks 206 ( step 406 ). more specifically , device driver 210 within host 202 determines a preference among the networks 206 . in one implementation , device driver 210 obtains the preference by prompting the user to select one of the networks 206 . in another implementation , device driver 210 obtains the preference from a default setting or a setting previously established by a user . the preference can indicate one preferred network , or can indicate any number of preferred networks , in order of preference . in one implementation , a wired network is preferred over a wireless network by default . host 202 selects one of the networks 206 ( step 408 ). more specifically , device driver 210 within host 202 selects one of the networks 206 . in one implementation , device driver 210 selects one of the networks 206 based on the preference and the condition of the networks . when multiple measurements are available for each network , device driver 210 applies weighting techniques to the measurements . host 202 communicates the selection to network interface 204 ( step 410 ). network interface controller 212 receives the selection , and activates the path within the network interface 204 that serves the selected network 206 ( step 412 ). the selected path includes the phy 218 that is connected to the selected network 206 and the mac 214 that communicates with that phy . network interface controller 212 activates a path within network interface 204 according to the following method . network interface controller 212 includes a control register that includes a bit for each mac 214 . each bit in the control register controls the corresponding mac 214 to one of two states : active or standby . network interface controller 212 activates a path by setting the bit for the mac 214 in that path to control that mac to the active state . each mac 214 controls the state of the phy 218 in its path . when a mac 214 is in the active state , it controls the phy 218 in its path to the active state . when a mac 214 is in the standby state , it controls the phy 218 in its path to the standby state . when a mac 214 and phy 218 are in the active state , they communicate with the network connected to the phy . when a mac 214 and phy 218 are in the standby state , they do not communicate with the network connected to the phy . the network interface 204 then communicates data to and from host 202 over the selected network 206 using the single mac address loaded into all of the macs 214 from prom 220 ( step 414 ). network interface 204 sends data to the selected network 206 by inserting the mac address into the header of each frame of the data . network interface 204 uses filter 216 to examine the header of each frame of data on the selected network , and transfers those frames having the single mac address of the network interface 204 to the host 202 . the invention can be implemented in digital electronic circuitry , or in computer hardware , firmware , software , or in combinations of them . apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine - readable storage device for execution by a programmable processor ; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output . the invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from , and to transmit data and instructions to , a data storage system , at least one input device , and at least one output device . each computer program can be implemented in a high - level procedural or object - oriented programming language , or in assembly or machine language if desired ; and in any case , the language can be a compiled or interpreted language . suitable processors include , by way of example , both general and special purpose microprocessors . generally , a processor will receive instructions and data from a read - only memory and / or a random access memory . generally , a computer will include one or more mass storage devices for storing data files ; such devices include magnetic disks , such as internal hard disks and removable disks ; magneto - optical disks ; and optical disks . storage devices suitable for tangibly embodying computer program instructions and data include all forms of non - volatile memory , including by way of example semiconductor memory devices , such as eprom , eeprom , and flash memory devices ; magnetic disks such as internal hard disks and removable disks ; magneto - optical disks ; and cd - rom disks . any of the foregoing can be supplemented by , or incorporated in , asics ( application - specific integrated circuits ). a number of implementations of the invention have been described . nevertheless , it will be understood that various modifications may be made without departing from the spirit and scope of the invention . accordingly , other implementations are within the scope of the following claims .