€•†Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”ŒA/translations/zh_CN/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/zh_TW/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/it_IT/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/ja_JP/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/ko_KR/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/pt_BR/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”ŒA/translations/sp_SP/networking/device_drivers/ethernet/google/gve”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ!SPDX-License-Identifier: GPL-2.0+”h]”hŒ!SPDX-License-Identifier: GPL-2.0+”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/networking/device_drivers/ethernet/google/gve.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ>Linux kernel driver for Compute Engine Virtual Ethernet (gve):”h]”hŒ>Linux kernel driver for Compute Engine Virtual Ethernet (gve):”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSupported Hardware”h]”hŒSupported Hardware”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒtThe GVE driver binds to a single PCI device id used by the virtual Ethernet device found in some Compute Engine VMs.”h]”hŒtThe GVE driver binds to a single PCI device id used by the virtual Ethernet device found in some Compute Engine VMs.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jhjubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hï)�”}”(hŒField”h]”hŒField”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj/ubj3)�”}”(hhh]”hï)�”}”(hŒValue”h]”hŒValue”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj/ubj3)�”}”(hhh]”hï)�”}”(hŒComments”h]”hŒComments”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjubhŒtbody”“”)�”}”(hhh]”(j.)�”}”(hhh]”(j3)�”}”(hhh]”hï)�”}”(hŒ Vendor ID”h]”hŒ Vendor ID”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjŠubj3)�”}”(hhh]”hï)�”}”(hŒ`0x1AE0`”h]”hŒtitle_reference”“”)�”}”(hj©h]”hŒ0x1AE0”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjŠubj3)�”}”(hhh]”hï)�”}”(hŒGoogle”h]”hŒGoogle”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj‡ubj.)�”}”(hhh]”(j3)�”}”(hhh]”hï)�”}”(hŒ Device ID”h]”hŒ Device ID”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjãubj3)�”}”(hhh]”hï)�”}”(hŒ`0x0042`”h]”j¬)�”}”(hjh]”hŒ0x0042”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjãubj3)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j2hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj‡ubj.)�”}”(hhh]”(j3)�”}”(hhh]”hï)�”}”(hŒ Sub-vendor ID”h]”hŒ Sub-vendor ID”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj,ubj3)�”}”(hhh]”hï)�”}”(hŒ`0x1AE0`”h]”j¬)�”}”(hjKh]”hŒ0x1AE0”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj,ubj3)�”}”(hhh]”hï)�”}”(hŒGoogle”h]”hŒGoogle”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj‡ubj.)�”}”(hhh]”(j3)�”}”(hhh]”hï)�”}”(hŒ Sub-device ID”h]”hŒ Sub-device ID”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjƒubj3)�”}”(hhh]”hï)�”}”(hŒ`0x0058`”h]”j¬)�”}”(hj¢h]”hŒ0x0058”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjƒubj3)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j2hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj‡ubj.)�”}”(hhh]”(j3)�”}”(hhh]”hï)�”}”(hŒ Revision ID”h]”hŒ Revision ID”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÌubj3)�”}”(hhh]”hï)�”}”(hŒ`0x0`”h]”j¬)�”}”(hjëh]”hŒ0x0”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÌubj3)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj‡ubj.)�”}”(hhh]”(j3)�”}”(hhh]”hï)�”}”(hŒ Device Class”h]”hŒ Device Class”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjubj3)�”}”(hhh]”hï)�”}”(hŒ`0x200`”h]”j¬)�”}”(hj4h]”hŒ0x200”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjubj3)�”}”(hhh]”hï)�”}”(hŒEthernet”h]”hŒEthernet”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j-hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j…hjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhÝh²hh³hÇh´Nubeh}”(h]”Œsupported-hardware”ah ]”h"]”Œsupported hardware”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPCI Bars”h]”hŒPCI Bars”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‡h²hh³hÇh´Kubhï)�”}”(hŒ¨The gVNIC PCI device exposes three 32-bit memory BARS: - Bar0 - Device configuration and status registers. - Bar1 - MSI-X vector table - Bar2 - IRQ, RX and TX doorbells”h]”hŒ¨The gVNIC PCI device exposes three 32-bit memory BARS: - Bar0 - Device configuration and status registers. - Bar1 - MSI-X vector table - Bar2 - IRQ, RX and TX doorbells”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj‡h²hubeh}”(h]”Œpci-bars”ah ]”h"]”Œpci bars”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDevice Interactions”h]”hŒDevice Interactions”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj®h²hh³hÇh´K$ubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hXSThe driver interacts with the device in the following ways: - Registers - A block of MMIO registers - See gve_register.h for more detail - Admin Queue - See description below - Reset - At any time the device can be reset - Interrupts - See supported interrupts below - Transmit and Receive Queues - See description below ”h]”(hŒterm”“”)�”}”(hŒ;The driver interacts with the device in the following ways:”h]”hŒ;The driver interacts with the device in the following ways:”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÊh³hÇh´K0hjÆubhŒ definition”“”)�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒLRegisters - A block of MMIO registers - See gve_register.h for more detail”h]”jÀ)�”}”(hhh]”jÅ)�”}”(hŒJRegisters - A block of MMIO registers - See gve_register.h for more detail”h]”(jË)�”}”(hŒ Registers”h]”hŒ Registers”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÊh³hÇh´K'hjíubjÛ)�”}”(hhh]”jà)�”}”(hhh]”(jå)�”}”(hŒA block of MMIO registers”h]”hï)�”}”(hjh]”hŒA block of MMIO registers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K'hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjubjå)�”}”(hŒ"See gve_register.h for more detail”h]”hï)�”}”(hjh]”hŒ"See gve_register.h for more detail”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K(hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jßh³hÇh´K'hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄh³hÇh´K'hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjáubjå)�”}”(hŒ$Admin Queue - See description below”h]”jÀ)�”}”(hhh]”jÅ)�”}”(hŒ#Admin Queue - See description below”h]”(jË)�”}”(hŒ Admin Queue”h]”hŒ Admin Queue”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÊh³hÇh´K)hjZubjÛ)�”}”(hhh]”jà)�”}”(hhh]”jå)�”}”(hŒSee description below”h]”hï)�”}”(hjth]”hŒSee description below”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K*hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjoubah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1jßh³hÇh´K*hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄh³hÇh´K)hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjáubjå)�”}”(hŒ,Reset - At any time the device can be reset”h]”jÀ)�”}”(hhh]”jÅ)�”}”(hŒ+Reset - At any time the device can be reset”h]”(jË)�”}”(hŒReset”h]”hŒReset”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÊh³hÇh´K+hj®ubjÛ)�”}”(hhh]”jà)�”}”(hhh]”jå)�”}”(hŒ#At any time the device can be reset”h]”hï)�”}”(hjÈh]”hŒ#At any time the device can be reset”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K,hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjÃubah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1jßh³hÇh´K,hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄh³hÇh´K+hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjáubjå)�”}”(hŒ,Interrupts - See supported interrupts below”h]”jÀ)�”}”(hhh]”jÅ)�”}”(hŒ+Interrupts - See supported interrupts below”h]”(jË)�”}”(hŒ Interrupts”h]”hŒ Interrupts”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÊh³hÇh´K-hjubjÛ)�”}”(hhh]”jà)�”}”(hhh]”jå)�”}”(hŒSee supported interrupts below”h]”hï)�”}”(hjh]”hŒSee supported interrupts below”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K.hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjubah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1jßh³hÇh´K.hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄh³hÇh´K-hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjáubjå)�”}”(hŒ5Transmit and Receive Queues - See description below ”h]”jÀ)�”}”(hhh]”jÅ)�”}”(hŒ4Transmit and Receive Queues - See description below ”h]”(jË)�”}”(hŒTransmit and Receive Queues”h]”hŒTransmit and Receive Queues”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÊh³hÇh´K0hjVubjÛ)�”}”(hhh]”jà)�”}”(hhh]”jå)�”}”(hŒSee description below ”h]”hï)�”}”(hŒSee description below”h]”hŒSee description below”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K0hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjkubah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1jßh³hÇh´K0hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄh³hÇh´K0hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjáubeh}”(h]”h ]”h"]”h$]”h&]”j9j:uh1jßh³hÇh´K&hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÚhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÄh³hÇh´K0hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj®h²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDescriptor Formats”h]”hŒDescriptor Formats”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¼h²hh³hÇh´K3ubhï)�”}”(hŒ‡GVE supports two descriptor formats: GQI and DQO. These two formats have entirely different descriptors, which will be described below.”h]”hŒ‡GVE supports two descriptor formats: GQI and DQO. These two formats have entirely different descriptors, which will be described below.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K4hj¼h²hubeh}”(h]”Œdescriptor-formats”ah ]”h"]”Œdescriptor formats”ah$]”h&]”uh1hÈhj®h²hh³hÇh´K3ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAddressing Mode”h]”hŒAddressing Mode”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjãh²hh³hÇh´K8ubhï)�”}”(hŒ…GVE supports two addressing modes: QPL and RDA. QPL ("queue-page-list") mode communicates data through a set of pre-registered pages.”h]”hŒ‰GVE supports two addressing modes: QPL and RDA. QPL (“queue-page-listâ€�) mode communicates data through a set of pre-registered pages.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K9hjãh²hubhï)�”}”(hŒ€For RDA ("raw DMA addressing") mode, the set of pages is dynamic. Therefore, the packet buffers can be anywhere in guest memory.”h]”hŒ„For RDA (“raw DMA addressingâ€�) mode, the set of pages is dynamic. Therefore, the packet buffers can be anywhere in guest memory.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K=hjãh²hubeh}”(h]”Œaddressing-mode”ah ]”h"]”Œaddressing mode”ah$]”h&]”uh1hÈhj®h²hh³hÇh´K8ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Registers”h]”hŒ Registers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KAubhï)�”}”(hŒAll registers are MMIO.”h]”hŒAll registers are MMIO.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KBhjh²hubhï)�”}”(hŒŠThe registers are used for initializing and configuring the device as well as querying device status in response to management interrupts.”h]”hŒŠThe registers are used for initializing and configuring the device as well as querying device status in response to management interrupts.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KDhjh²hubeh}”(h]”Œ registers”ah ]”h"]”Œ registers”ah$]”h&]”uh1hÈhj®h²hh³hÇh´KAubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Endianness”h]”hŒ Endianness”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjMh²hh³hÇh´KHubjà)�”}”(hhh]”(jå)�”}”(hŒ6Admin Queue messages and registers are all Big Endian.”h]”hï)�”}”(hjch]”hŒ6Admin Queue messages and registers are all Big Endian.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KIhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jähj^h²hh³hÇh´Nubjå)�”}”(hŒ6GQI descriptors and datapath registers are Big Endian.”h]”hï)�”}”(hjzh]”hŒ6GQI descriptors and datapath registers are Big Endian.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KJhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jähj^h²hh³hÇh´Nubjå)�”}”(hŒ:DQO descriptors and datapath registers are Little Endian. ”h]”hï)�”}”(hŒ9DQO descriptors and datapath registers are Little Endian.”h]”hŒ9DQO descriptors and datapath registers are Little Endian.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KKhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jähj^h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j9j:uh1jßh³hÇh´KIhjMh²hubeh}”(h]”Œ endianness”ah ]”h"]”Œ endianness”ah$]”h&]”uh1hÈhj®h²hh³hÇh´KHubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAdmin Queue (AQ)”h]”hŒAdmin Queue (AQ)”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjµh²hh³hÇh´KNubhï)�”}”(hXHThe Admin Queue is a PAGE_SIZE memory block, treated as an array of AQ commands, used by the driver to issue commands to the device and set up resources.The driver and the device maintain a count of how many commands have been submitted and executed. To issue AQ commands, the driver must do the following (with proper locking):”h]”hXHThe Admin Queue is a PAGE_SIZE memory block, treated as an array of AQ commands, used by the driver to issue commands to the device and set up resources.The driver and the device maintain a count of how many commands have been submitted and executed. To issue AQ commands, the driver must do the following (with proper locking):”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KOhjµh²hubhŒenumerated_list”“”)�”}”(hhh]”(jå)�”}”(hŒ;Copy new commands into next available slots in the AQ array”h]”hï)�”}”(hjÛh]”hŒ;Copy new commands into next available slots in the AQ array”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KUhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjÖh²hh³hÇh´Nubjå)�”}”(hŒ2Increment its counter by he number of new commands”h]”hï)�”}”(hjòh]”hŒ2Increment its counter by he number of new commands”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KVhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jähjÖh²hh³hÇh´Nubjå)�”}”(hŒlinux kernel driver for compute engine virtual ethernet (gve):”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j2Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j¹ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j” j‘ j„j�j«j¨jŒ j‰ jàjÝjjjJjGj²j¯jTjQj{jxj j jÏjÌjjjžj›Œtransmit”NŒreceive”Nj„ j� uŒ nametypes”}”(j” ‰j„‰j«‰jŒ ‰jà‰j‰jJ‰j²‰jT‰j{‰j ‰jωj‰jž‰jý ‰jþ ‰j„ ‰uh}”(j‘ hÊj�hÝj¨j‡j‰ j®jÝj¼jjãjGjj¯jMjQjµjxjWj j~jÌj�jjÒj›jjkjJj“jrj� j¡jT j3 jz jY uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jÇ Ks…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hï)�”}”(hŒ+Duplicate implicit target name: "transmit".”h]”hŒ/Duplicate implicit target name: “transmitâ€�.”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhj ubah}”(h]”h ]”h"]”h$]”h&]”jT aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”K¨uh1j hj3 h²hh³hÇh´K¨ubj )�”}”(hhh]”hï)�”}”(hŒ*Duplicate implicit target name: "receive".”h]”hŒ.Duplicate implicit target name: “receiveâ€�.”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhj; ubah}”(h]”h ]”h"]”h$]”h&]”jz aŒlevel”KŒtype”j8 Œsource”hÇŒline”K­uh1j hjY h²hh³hÇh´K­ubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.