2013-06-14 09:40:05 +02:00
|
|
|
/** @file
|
|
|
|
|
|
|
|
Helper functions used by at least two Simple Network Protocol methods.
|
|
|
|
|
|
|
|
Copyright (C) 2013, Red Hat, Inc.
|
|
|
|
|
|
|
|
This program and the accompanying materials are licensed and made available
|
|
|
|
under the terms and conditions of the BSD License which accompanies this
|
|
|
|
distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
|
|
|
|
WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#include <Library/MemoryAllocationLib.h>
|
|
|
|
|
|
|
|
#include "VirtioNet.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
Release RX and TX resources on the boundary of the
|
|
|
|
EfiSimpleNetworkInitialized state.
|
|
|
|
|
|
|
|
These functions contribute to rolling back a partial, failed initialization
|
|
|
|
of the virtio-net SNP driver instance, or to shutting down a fully
|
|
|
|
initialized, running instance.
|
|
|
|
|
|
|
|
They are only callable by the VirtioNetInitialize() and the
|
|
|
|
VirtioNetShutdown() SNP methods. See the state diagram in "VirtioNet.h".
|
|
|
|
|
|
|
|
@param[in,out] Dev The VNET_DEV driver instance being shut down, or whose
|
|
|
|
partial, failed initialization is being rolled back.
|
|
|
|
*/
|
|
|
|
|
|
|
|
VOID
|
|
|
|
EFIAPI
|
|
|
|
VirtioNetShutdownRx (
|
|
|
|
IN OUT VNET_DEV *Dev
|
|
|
|
)
|
|
|
|
{
|
|
|
|
FreePool (Dev->RxBuf);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
VOID
|
|
|
|
EFIAPI
|
|
|
|
VirtioNetShutdownTx (
|
|
|
|
IN OUT VNET_DEV *Dev
|
|
|
|
)
|
|
|
|
{
|
|
|
|
FreePool (Dev->TxFreeStack);
|
|
|
|
}
|
2017-09-14 23:22:40 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
Release TX and RX VRING resources.
|
|
|
|
|
2017-09-14 23:22:41 +02:00
|
|
|
@param[in,out] Dev The VNET_DEV driver instance which was using
|
|
|
|
the ring.
|
|
|
|
@param[in,out] Ring The virtio ring to clean up.
|
|
|
|
@param[in] RingMap A token return from the VirtioRingMap()
|
2017-09-14 23:22:40 +02:00
|
|
|
*/
|
|
|
|
VOID
|
|
|
|
EFIAPI
|
|
|
|
VirtioNetUninitRing (
|
|
|
|
IN OUT VNET_DEV *Dev,
|
2017-09-14 23:22:41 +02:00
|
|
|
IN OUT VRING *Ring,
|
|
|
|
IN VOID *RingMap
|
2017-09-14 23:22:40 +02:00
|
|
|
)
|
|
|
|
{
|
2017-09-14 23:22:41 +02:00
|
|
|
Dev->VirtIo->UnmapSharedBuffer (Dev->VirtIo, RingMap);
|
2017-09-14 23:22:40 +02:00
|
|
|
VirtioRingUninit (Dev->VirtIo, Ring);
|
|
|
|
}
|