nssphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/infiniband/opa_vnicmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/infiniband/opa_vnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/infiniband/opa_vnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/infiniband/opa_vnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/infiniband/opa_vnicmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/infiniband/opa_vnicmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hAIntel Omni-Path (OPA) Virtual Network Interface Controller (VNIC)h]hAIntel Omni-Path (OPA) Virtual Network Interface Controller (VNIC)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/infiniband/opa_vnic.rsthKubh paragraph)}(hIntel Omni-Path (OPA) Virtual Network Interface Controller (VNIC) feature supports Ethernet functionality over Omni-Path fabric by encapsulating the Ethernet packets between HFI nodes.h]hIntel Omni-Path (OPA) Virtual Network Interface Controller (VNIC) feature supports Ethernet functionality over Omni-Path fabric by encapsulating the Ethernet packets between HFI nodes.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h Architectureh]h Architecture}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hXThe patterns of exchanges of Omni-Path encapsulated Ethernet packets involves one or more virtual Ethernet switches overlaid on the Omni-Path fabric topology. A subset of HFI nodes on the Omni-Path fabric are permitted to exchange encapsulated Ethernet packets across a particular virtual Ethernet switch. The virtual Ethernet switches are logical abstractions achieved by configuring the HFI nodes on the fabric for header generation and processing. In the simplest configuration all HFI nodes across the fabric exchange encapsulated Ethernet packets over a single virtual Ethernet switch. A virtual Ethernet switch, is effectively an independent Ethernet network. The configuration is performed by an Ethernet Manager (EM) which is part of the trusted Fabric Manager (FM) application. HFI nodes can have multiple VNICs each connected to a different virtual Ethernet switch. The below diagram presents a case of two virtual Ethernet switches with two HFI nodes::h]hXThe patterns of exchanges of Omni-Path encapsulated Ethernet packets involves one or more virtual Ethernet switches overlaid on the Omni-Path fabric topology. A subset of HFI nodes on the Omni-Path fabric are permitted to exchange encapsulated Ethernet packets across a particular virtual Ethernet switch. The virtual Ethernet switches are logical abstractions achieved by configuring the HFI nodes on the fabric for header generation and processing. In the simplest configuration all HFI nodes across the fabric exchange encapsulated Ethernet packets over a single virtual Ethernet switch. A virtual Ethernet switch, is effectively an independent Ethernet network. The configuration is performed by an Ethernet Manager (EM) which is part of the trusted Fabric Manager (FM) application. HFI nodes can have multiple VNICs each connected to a different virtual Ethernet switch. The below diagram presents a case of two virtual Ethernet switches with two HFI nodes:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh literal_block)}(hX: +-------------------+ | Subnet/ | | Ethernet | | Manager | +-------------------+ / / / / / / / / +-----------------------------+ +------------------------------+ | Virtual Ethernet Switch | | Virtual Ethernet Switch | | +---------+ +---------+ | | +---------+ +---------+ | | | VPORT | | VPORT | | | | VPORT | | VPORT | | +--+---------+----+---------+-+ +-+---------+----+---------+---+ | \ / | | \ / | | \/ | | / \ | | / \ | +-----------+------------+ +-----------+------------+ | VNIC | VNIC | | VNIC | VNIC | +-----------+------------+ +-----------+------------+ | HFI | | HFI | +------------------------+ +------------------------+h]hX: +-------------------+ | Subnet/ | | Ethernet | | Manager | +-------------------+ / / / / / / / / +-----------------------------+ +------------------------------+ | Virtual Ethernet Switch | | Virtual Ethernet Switch | | +---------+ +---------+ | | +---------+ +---------+ | | | VPORT | | VPORT | | | | VPORT | | VPORT | | +--+---------+----+---------+-+ +-+---------+----+---------+---+ | \ / | | \ / | | \/ | | / \ | | / \ | +-----------+------------+ +-----------+------------+ | VNIC | VNIC | | VNIC | VNIC | +-----------+------------+ +-----------+------------+ | HFI | | HFI | +------------------------+ +------------------------+}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhKhhhhubh)}(hHThe Omni-Path encapsulated Ethernet packet format is as described below.h]hHThe Omni-Path encapsulated Ethernet packet format is as described below.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hhhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhj ubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK!uh1jhj ubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hBitsh]hBits}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj2ubah}(h]h ]h"]h$]h&]uh1j0hj-ubj1)}(hhh]h)}(hFieldh]hField}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjIubah}(h]h ]h"]h$]h&]uh1j0hj-ubeh}(h]h ]h"]h$]h&]uh1j+hj(ubah}(h]h ]h"]h$]h&]uh1j&hj ubhtbody)}(hhh](j,)}(hhh](j1)}(hhh]h)}(h Quad Word 0:h]h Quad Word 0:}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjtubah}(h]h ]h"]h$]h&]uh1j0hjqubj1)}(hhh]h}(h]h ]h"]h$]h&]uh1j0hjqubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h0-19h]h0-19}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hSLID (lower 20 bits)h]hSLID (lower 20 bits)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h20-30h]h20-30}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hLength (in Quad Words)h]hLength (in Quad Words)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h31h]h31}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjyubah}(h]h ]h"]h$]h&]uh1j0hjvubj1)}(hhh]h)}(hSC (Service Class)h]hSC (Service Class)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjubah}(h]h ]h"]h$]h&]uh1j0hjvubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h57-59h]h57-59}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hRC (Routing Control)h]hRC (Routing Control)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h60h]h60}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hFECN bith]hFECN bit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h61-62h]h61-62}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hL2 (=10, 16B format)h]hL2 (=10, 16B format)}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhj5ubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h63h]h63}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjUubah}(h]h ]h"]h$]h&]uh1j0hjRubj1)}(hhh]h)}(h LT (=1, Link Transfer Head Flit)h]h LT (=1, Link Transfer Head Flit)}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjlubah}(h]h ]h"]h$]h&]uh1j0hjRubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h Quad Word 1:h]h Quad Word 1:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h0-7h]h0-7}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hL4 type (=0x78 ETHERNET)h]hL4 type (=0x78 ETHERNET)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h8-11h]h8-11}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(h SLID[23:20]h]h SLID[23:20]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h12-15h]h12-15}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhj#ubah}(h]h ]h"]h$]h&]uh1j0hj ubj1)}(hhh]h)}(h DLID[23:20]h]h DLID[23:20]}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhj:ubah}(h]h ]h"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h16-31h]h16-31}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjZubah}(h]h ]h"]h$]h&]uh1j0hjWubj1)}(hhh]h)}(hPKEYh]hPKEY}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjqubah}(h]h ]h"]h$]h&]uh1j0hjWubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h32-47h]h32-47}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hEntropyh]hEntropy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h48-63h]h48-63}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hReservedh]hReserved}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h Quad Word 2:h]h Quad Word 2:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h0-15h]h0-15}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhj(ubah}(h]h ]h"]h$]h&]uh1j0hj%ubj1)}(hhh]h)}(hReservedh]hReserved}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhj?ubah}(h]h ]h"]h$]h&]uh1j0hj%ubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h16-31h]h16-31}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhj_ubah}(h]h ]h"]h$]h&]uh1j0hj\ubj1)}(hhh]h)}(h L4 headerh]h L4 header}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjvubah}(h]h ]h"]h$]h&]uh1j0hj\ubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h32-63h]h32-63}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hEthernet Packeth]hEthernet Packet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(hQuad Words 3 to N-1:h]hQuad Words 3 to N-1:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h0-63h]h0-63}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hEthernet packet (pad extended)h]hEthernet packet (pad extended)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhj ubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(hQuad Word N (last):h]hQuad Word N (last):}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThj-ubah}(h]h ]h"]h$]h&]uh1j0hj*ubj1)}(hhh]h}(h]h ]h"]h$]h&]uh1j0hj*ubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h0-23h]h0-23}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjVubah}(h]h ]h"]h$]h&]uh1j0hjSubj1)}(hhh]h)}(hEthernet packet (pad extended)h]hEthernet packet (pad extended)}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjmubah}(h]h ]h"]h$]h&]uh1j0hjSubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h24-55h]h24-55}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hICRCh]hICRC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h56-61h]h56-61}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(hTailh]hTail}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubj,)}(hhh](j1)}(hhh]h)}(h62-63h]h62-63}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjubah}(h]h ]h"]h$]h&]uh1j0hjubj1)}(hhh]h)}(h!LT (=01, Link Transfer Tail Flit)h]h!LT (=01, Link Transfer Tail Flit)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1j+hjnubeh}(h]h ]h"]h$]h&]uh1jlhj ubeh}(h]h ]h"]h$]h&]colsKuh1j hjubah}(h]h ]h"]h$]h&]uh1jhhhhhhhNubh)}(hX8Ethernet packet is padded on the transmit side to ensure that the VNIC OPA packet is quad word aligned. The 'Tail' field contains the number of bytes padded. On the receive side the 'Tail' field is read and the padding is removed (along with ICRC, Tail and OPA header) before passing packet up the network stack.h]hX@Ethernet packet is padded on the transmit side to ensure that the VNIC OPA packet is quad word aligned. The ‘Tail’ field contains the number of bytes padded. On the receive side the ‘Tail’ field is read and the padding is removed (along with ICRC, Tail and OPA header) before passing packet up the network stack.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hhhhubh)}(hThe L4 header field contains the virtual Ethernet switch id the VNIC port belongs to. On the receive side, this field is used to de-multiplex the received VNIC packets to different VNIC ports.h]hThe L4 header field contains the virtual Ethernet switch id the VNIC port belongs to. On the receive side, this field is used to de-multiplex the received VNIC packets to different VNIC ports.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahhhhubeh}(h] architectureah ]h"] architectureah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Driver Designh]h Driver Design}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhhhhhKfubh)}(hIntel OPA VNIC software design is presented in the below diagram. OPA VNIC functionality has a HW dependent component and a HW independent component.h]hIntel OPA VNIC software design is presented in the below diagram. OPA VNIC functionality has a HW dependent component and a HW independent component.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjfhhubh)}(hThe support has been added for IB device to allocate and free the RDMA netdev devices. The RDMA netdev supports interfacing with the network stack thus creating standard network interfaces. OPA_VNIC is an RDMA netdev device type.h]hThe support has been added for IB device to allocate and free the RDMA netdev devices. The RDMA netdev supports interfacing with the network stack thus creating standard network interfaces. OPA_VNIC is an RDMA netdev device type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjfhhubh)}(hX)The HW dependent VNIC functionality is part of the HFI1 driver. It implements the verbs to allocate and free the OPA_VNIC RDMA netdev. It involves HW resource allocation/management for VNIC functionality. It interfaces with the network stack and implements the required net_device_ops functions. It expects Omni-Path encapsulated Ethernet packets in the transmit path and provides HW access to them. It strips the Omni-Path header from the received packets before passing them up the network stack. It also implements the RDMA netdev control operations.h]hX)The HW dependent VNIC functionality is part of the HFI1 driver. It implements the verbs to allocate and free the OPA_VNIC RDMA netdev. It involves HW resource allocation/management for VNIC functionality. It interfaces with the network stack and implements the required net_device_ops functions. It expects Omni-Path encapsulated Ethernet packets in the transmit path and provides HW access to them. It strips the Omni-Path header from the received packets before passing them up the network stack. It also implements the RDMA netdev control operations.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjfhhubh)}(hXOThe OPA VNIC module implements the HW independent VNIC functionality. It consists of two parts. The VNIC Ethernet Management Agent (VEMA) registers itself with IB core as an IB client and interfaces with the IB MAD stack. It exchanges the management information with the Ethernet Manager (EM) and the VNIC netdev. The VNIC netdev part allocates and frees the OPA_VNIC RDMA netdev devices. It overrides the net_device_ops functions set by HW dependent VNIC driver where required to accommodate any control operation. It also handles the encapsulation of Ethernet packets with an Omni-Path header in the transmit path. For each VNIC interface, the information required for encapsulation is configured by the EM via VEMA MAD interface. It also passes any control information to the HW dependent driver by invoking the RDMA netdev control operations::h]hXNThe OPA VNIC module implements the HW independent VNIC functionality. It consists of two parts. The VNIC Ethernet Management Agent (VEMA) registers itself with IB core as an IB client and interfaces with the IB MAD stack. It exchanges the management information with the Ethernet Manager (EM) and the VNIC netdev. The VNIC netdev part allocates and frees the OPA_VNIC RDMA netdev devices. It overrides the net_device_ops functions set by HW dependent VNIC driver where required to accommodate any control operation. It also handles the encapsulation of Ethernet packets with an Omni-Path header in the transmit path. For each VNIC interface, the information required for encapsulation is configured by the EM via VEMA MAD interface. It also passes any control information to the HW dependent driver by invoking the RDMA netdev control operations:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjfhhubh)}(hX5+-------------------+ +----------------------+ | | | Linux | | IB MAD | | Network | | | | Stack | +-------------------+ +----------------------+ | | | | | | +----------------------------+ | | | | | OPA VNIC Module | | | (OPA VNIC RDMA Netdev | | | & EMA functions) | | | | | +----------------------------+ | | | | | +------------------+ | | IB core | | +------------------+ | | | | | +--------------------------------------------+ | | | HFI1 Driver with VNIC support | | | +--------------------------------------------+h]hX5+-------------------+ +----------------------+ | | | Linux | | IB MAD | | Network | | | | Stack | +-------------------+ +----------------------+ | | | | | | +----------------------------+ | | | | | OPA VNIC Module | | | (OPA VNIC RDMA Netdev | | | & EMA functions) | | | | | +----------------------------+ | | | | | +------------------+ | | IB core | | +------------------+ | | | | | +--------------------------------------------+ | | | HFI1 Driver with VNIC support | | | +--------------------------------------------+}hjsbah}(h]h ]h"]h$]h&]hhuh1hhhhKhjfhhubeh}(h] driver-designah ]h"] driver designah$]h&]uh1hhhhhhhhKfubeh}(h]=intel-omni-path-opa-virtual-network-interface-controller-vnicah ]h"]Aintel omni-path (opa) virtual network interface controller (vnic)ah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksj0footnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjcj`jju nametypes}(jjcjuh}(jhj`hjjfu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.