Method and apparatus for a shared I/O network interface controller
First Claim
1. A network interface controller (NIC) which provides an interface between a network and a plurality of operating system domains (OSDs), each OSD having a logically distinct load-store domain that uses a common memory map to address both random access memory (RAM) and input-output (I/O) devices, the controller existing within the load-store domain of each of the plurality of OSDs, the controller comprising:
- a bus interface between the plurality of OSDs and the controller, the bus interface enabling each OSD to directly access the controller from within its own logically distinct load-store domain using load-store instructions that address one or more memory-mapped addresses for the shareable NIC that are within the common memory map of the OSD'"'"'s load-store domain;
a network interface between the network and the controller; and
association logic, coupled to both said bus interface and said network interface to associate data coming from the network with at least one of the plurality of operating system domains.
6 Assignments
0 Petitions
Accused Products
Abstract
A shared network interface controller (NIC) interfaces a plurality of operating system domains as part of the load-store architecture of the operating system domains. A bus interface couples the NIC to a load-store domain bus (such as PCI-Express), using header information to associate data on the bus with an originating operating system domain. Transmit/receive logic connects the NIC to the network. Association logic allows the NIC to designate, and later lookup, which destination MAC address (on the Ethernet side) is associated with which operating system domain. Descriptor register files and Control Status Registers (CSR'"'"'s) specific to an operating system domain are duplicated and made available for each domain. Several direct memory access (DMA) engines are provided to improve throughput. Packet replication logic, filters (perfect and hash) and VLAN tables are used for looping back packets originating from one operating system domains to another and other operations.
-
Citations
83 Claims
-
1. A network interface controller (NIC) which provides an interface between a network and a plurality of operating system domains (OSDs), each OSD having a logically distinct load-store domain that uses a common memory map to address both random access memory (RAM) and input-output (I/O) devices, the controller existing within the load-store domain of each of the plurality of OSDs, the controller comprising:
-
a bus interface between the plurality of OSDs and the controller, the bus interface enabling each OSD to directly access the controller from within its own logically distinct load-store domain using load-store instructions that address one or more memory-mapped addresses for the shareable NIC that are within the common memory map of the OSD'"'"'s load-store domain; a network interface between the network and the controller; and association logic, coupled to both said bus interface and said network interface to associate data coming from the network with at least one of the plurality of operating system domains. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A shareable network interface controller (NIC) for a computing device having a plurality of operating system domains (OSDs), each OSD having a logically distinct load-store domain that uses a common memory map to address both random access memory (RAM) and input-output (I/O) devices, the shareable NIC comprising:
-
transmit/receive logic for coupling the controller to a network to transmit/receive network communication; bus interface and operating system domain identification logic, for interfacing the controller to the plurality of operating system domains (OSD'"'"'s), and for associating OSD communication to and from said bus interface with ones of the plurality of OSD'"'"'s; the bus interface enabling each OSD to directly access the shareable NIC from within its own logically distinct load-store domain using load-store instructions that address one or more memory-mapped addresses for the shareable NIC that are within the common memory map of the OSD'"'"'s load-store domain; association logic, coupled to said transmit/receive logic, for associating said network communication with ones of the plurality of OSD'"'"'s; wherein by associating said network communication with ones of the plurality of OSD'"'"'s, and associating said OSD communication with ones of the plurality of OSD'"'"'s, the shared controller provides communication between the plurality of OSD'"'"'s and said network. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83)
-
Specification