Patent ID: 8271716

Claim:
An input/output device for simultaneously supporting multiple hosts and multiple functions, the input/output device comprising: a communication port through which the input/output device receives communications for the multiple hosts and multiple functions; and a plurality of host assemblies, each host assembly corresponding to a single host and comprising: a buffer configured to store communications destined for all functions hosted by the single host if the communications destined for the functions match a set of criteria, wherein the buffer is further configured to store control information associated with the communications for the functions, wherein the control information is configured to facilitate transfer of the communications for the functions to at least one destination function of the single host; a set of ingress managers configured to accept into the buffer only communications identified by functions hosted by the single host, wherein each ingress manager is configured to apply the set of criteria to determine whether to accept communications into the buffer for the single host for transfer to one of the functions hosted by the single host; and a set of egress managers configured to transfer communications from the buffer to the functions hosted by the single host, wherein each egress manager is configured to transmit the communications from the buffer toward the at least destination function when the communications are transferred from the buffer.