]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/VirtioNetDxe/VirtioNet.h
OvmfPkg/EnrollDefaultKeys: clean up acronym capitalization in identifiers
[mirror_edk2.git] / OvmfPkg / VirtioNetDxe / VirtioNet.h
index 31fca79b8485bed9e3eb7d821c66a15782642a56..711b7c4cfae8dc22e87877c58c7d6cf65b1050a2 100644 (file)
@@ -4,14 +4,9 @@
   Protocol instances for virtio-net devices.\r
 \r
   Copyright (C) 2013, Red Hat, Inc.\r
+  Copyright (c) 2017, AMD Inc, All rights reserved.<BR>\r
 \r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License which accompanies this\r
-  distribution. The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 **/\r
 \r
 #ifndef _VIRTIO_NET_DXE_H_\r
@@ -25,6 +20,7 @@
 #include <Protocol/DevicePath.h>\r
 #include <Protocol/DriverBinding.h>\r
 #include <Protocol/SimpleNetwork.h>\r
+#include <Library/OrderedCollectionLib.h>\r
 \r
 #define VNET_SIG SIGNATURE_32 ('V', 'N', 'E', 'T')\r
 \r
@@ -82,15 +78,24 @@ typedef struct {
   EFI_HANDLE                  MacHandle;         // VirtioNetDriverBindingStart\r
 \r
   VRING                       RxRing;            // VirtioNetInitRing\r
+  VOID                        *RxRingMap;        // VirtioRingMap and\r
+                                                 // VirtioNetInitRing\r
   UINT8                       *RxBuf;            // VirtioNetInitRx\r
   UINT16                      RxLastUsed;        // VirtioNetInitRx\r
+  UINTN                       RxBufNrPages;      // VirtioNetInitRx\r
+  EFI_PHYSICAL_ADDRESS        RxBufDeviceBase;   // VirtioNetInitRx\r
+  VOID                        *RxBufMap;         // VirtioNetInitRx\r
 \r
   VRING                       TxRing;            // VirtioNetInitRing\r
+  VOID                        *TxRingMap;        // VirtioRingMap and\r
+                                                 // VirtioNetInitRing\r
   UINT16                      TxMaxPending;      // VirtioNetInitTx\r
   UINT16                      TxCurPending;      // VirtioNetInitTx\r
   UINT16                      *TxFreeStack;      // VirtioNetInitTx\r
-  VIRTIO_NET_REQ              TxSharedReq;       // VirtioNetInitTx\r
+  VIRTIO_1_0_NET_REQ          *TxSharedReq;      // VirtioNetInitTx\r
+  VOID                        *TxSharedReqMap;   // VirtioNetInitTx\r
   UINT16                      TxLastUsed;        // VirtioNetInitTx\r
+  ORDERED_COLLECTION          *TxBufCollection;  // VirtioNetInitTx\r
 } VNET_DEV;\r
 \r
 \r
@@ -107,19 +112,19 @@ typedef struct {
 #define VIRTIO_NET_FROM_SNP(SnpPointer) \\r
         CR (SnpPointer, VNET_DEV, Snp, VNET_SIG)\r
 \r
-#define VIRTIO_CFG_WRITE(Dev, Field, Value)  (VirtioWriteDevice (       \\r
-                                                (Dev)->VirtIo,          \\r
-                                                OFFSET_OF_VNET (Field), \\r
-                                                SIZE_OF_VNET (Field),   \\r
-                                                (Value)                 \\r
+#define VIRTIO_CFG_WRITE(Dev, Field, Value)  ((Dev)->VirtIo->WriteDevice (  \\r
+                                                (Dev)->VirtIo,              \\r
+                                                OFFSET_OF_VNET (Field),     \\r
+                                                SIZE_OF_VNET (Field),       \\r
+                                                (Value)                     \\r
                                                 ))\r
 \r
-#define VIRTIO_CFG_READ(Dev, Field, Pointer) (VirtioReadDevice (        \\r
-                                                (Dev)->VirtIo,          \\r
-                                                OFFSET_OF_VNET (Field), \\r
-                                                SIZE_OF_VNET (Field),   \\r
-                                                sizeof *(Pointer),      \\r
-                                                (Pointer)               \\r
+#define VIRTIO_CFG_READ(Dev, Field, Pointer) ((Dev)->VirtIo->ReadDevice (   \\r
+                                                (Dev)->VirtIo,              \\r
+                                                OFFSET_OF_VNET (Field),     \\r
+                                                SIZE_OF_VNET (Field),       \\r
+                                                sizeof *(Pointer),          \\r
+                                                (Pointer)                   \\r
                                                 ))\r
 \r
 //\r
@@ -263,6 +268,50 @@ VirtioNetShutdownTx (
   IN OUT VNET_DEV *Dev\r
   );\r
 \r
+VOID\r
+EFIAPI\r
+VirtioNetUninitRing (\r
+  IN OUT VNET_DEV *Dev,\r
+  IN OUT VRING    *Ring,\r
+  IN     VOID     *RingMap\r
+  );\r
+\r
+//\r
+// utility functions to map caller-supplied Tx buffer system physical address\r
+// to a device address and vice versa\r
+//\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioNetMapTxBuf (\r
+  IN  VNET_DEV              *Dev,\r
+  IN  VOID                  *Buffer,\r
+  IN  UINTN                 NumberOfBytes,\r
+  OUT EFI_PHYSICAL_ADDRESS  *DeviceAddress\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioNetUnmapTxBuf (\r
+  IN  VNET_DEV              *Dev,\r
+  OUT VOID                  **Buffer,\r
+  IN  EFI_PHYSICAL_ADDRESS  DeviceAddress\r
+  );\r
+\r
+INTN\r
+EFIAPI\r
+VirtioNetTxBufMapInfoCompare (\r
+  IN CONST VOID *UserStruct1,\r
+  IN CONST VOID *UserStruct2\r
+  );\r
+\r
+INTN\r
+EFIAPI\r
+VirtioNetTxBufDeviceAddressCompare (\r
+  IN CONST VOID *StandaloneKey,\r
+  IN CONST VOID *UserStruct\r
+  );\r
+\r
+\r
 //\r
 // event callbacks\r
 //\r