summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/VirtioNetDxe/SnpReceive.c
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/VirtioNetDxe/SnpReceive.c')
-rw-r--r--OvmfPkg/VirtioNetDxe/SnpReceive.c79
1 files changed, 41 insertions, 38 deletions
diff --git a/OvmfPkg/VirtioNetDxe/SnpReceive.c b/OvmfPkg/VirtioNetDxe/SnpReceive.c
index cdee9a2aee..cc0e1da14f 100644
--- a/OvmfPkg/VirtioNetDxe/SnpReceive.c
+++ b/OvmfPkg/VirtioNetDxe/SnpReceive.c
@@ -52,47 +52,46 @@
interface.
**/
-
EFI_STATUS
EFIAPI
VirtioNetReceive (
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
- OUT UINTN *HeaderSize OPTIONAL,
- IN OUT UINTN *BufferSize,
- OUT VOID *Buffer,
- OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
- OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
- OUT UINT16 *Protocol OPTIONAL
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
+ OUT UINTN *HeaderSize OPTIONAL,
+ IN OUT UINTN *BufferSize,
+ OUT VOID *Buffer,
+ OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
+ OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
+ OUT UINT16 *Protocol OPTIONAL
)
{
- VNET_DEV *Dev;
- EFI_TPL OldTpl;
- EFI_STATUS Status;
- UINT16 RxCurUsed;
- UINT16 UsedElemIdx;
- UINT32 DescIdx;
- UINT32 RxLen;
- UINTN OrigBufferSize;
- UINT8 *RxPtr;
- UINT16 AvailIdx;
- EFI_STATUS NotifyStatus;
- UINTN RxBufOffset;
-
- if (This == NULL || BufferSize == NULL || Buffer == NULL) {
+ VNET_DEV *Dev;
+ EFI_TPL OldTpl;
+ EFI_STATUS Status;
+ UINT16 RxCurUsed;
+ UINT16 UsedElemIdx;
+ UINT32 DescIdx;
+ UINT32 RxLen;
+ UINTN OrigBufferSize;
+ UINT8 *RxPtr;
+ UINT16 AvailIdx;
+ EFI_STATUS NotifyStatus;
+ UINTN RxBufOffset;
+
+ if ((This == NULL) || (BufferSize == NULL) || (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
- Dev = VIRTIO_NET_FROM_SNP (This);
+ Dev = VIRTIO_NET_FROM_SNP (This);
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
switch (Dev->Snm.State) {
- case EfiSimpleNetworkStopped:
- Status = EFI_NOT_STARTED;
- goto Exit;
- case EfiSimpleNetworkStarted:
- Status = EFI_DEVICE_ERROR;
- goto Exit;
- default:
- break;
+ case EfiSimpleNetworkStopped:
+ Status = EFI_NOT_STARTED;
+ goto Exit;
+ case EfiSimpleNetworkStarted:
+ Status = EFI_DEVICE_ERROR;
+ goto Exit;
+ default:
+ break;
}
//
@@ -108,8 +107,8 @@ VirtioNetReceive (
}
UsedElemIdx = Dev->RxLastUsed % Dev->RxRing.QueueSize;
- DescIdx = Dev->RxRing.Used.UsedElem[UsedElemIdx].Id;
- RxLen = Dev->RxRing.Used.UsedElem[UsedElemIdx].Len;
+ DescIdx = Dev->RxRing.Used.UsedElem[UsedElemIdx].Id;
+ RxLen = Dev->RxRing.Used.UsedElem[UsedElemIdx].Len;
//
// the virtio-net request header must be complete; we skip it
@@ -122,7 +121,7 @@ VirtioNetReceive (
ASSERT (RxLen <= Dev->RxRing.Desc[DescIdx + 1].Len);
OrigBufferSize = *BufferSize;
- *BufferSize = RxLen;
+ *BufferSize = RxLen;
if (OrigBufferSize < RxLen) {
Status = EFI_BUFFER_TOO_SMALL;
@@ -146,16 +145,19 @@ VirtioNetReceive (
if (DestAddr != NULL) {
CopyMem (DestAddr, RxPtr, SIZE_OF_VNET (Mac));
}
+
RxPtr += SIZE_OF_VNET (Mac);
if (SrcAddr != NULL) {
CopyMem (SrcAddr, RxPtr, SIZE_OF_VNET (Mac));
}
+
RxPtr += SIZE_OF_VNET (Mac);
if (Protocol != NULL) {
- *Protocol = (UINT16) ((RxPtr[0] << 8) | RxPtr[1]);
+ *Protocol = (UINT16)((RxPtr[0] << 8) | RxPtr[1]);
}
+
RxPtr += sizeof (UINT16);
Status = EFI_SUCCESS;
@@ -166,16 +168,17 @@ RecycleDesc:
//
// virtio-0.9.5, 2.4.1 Supplying Buffers to The Device
//
- AvailIdx = *Dev->RxRing.Avail.Idx;
+ AvailIdx = *Dev->RxRing.Avail.Idx;
Dev->RxRing.Avail.Ring[AvailIdx++ % Dev->RxRing.QueueSize] =
- (UINT16) DescIdx;
+ (UINT16)DescIdx;
MemoryFence ();
*Dev->RxRing.Avail.Idx = AvailIdx;
MemoryFence ();
NotifyStatus = Dev->VirtIo->SetQueueNotify (Dev->VirtIo, VIRTIO_NET_Q_RX);
- if (!EFI_ERROR (Status)) { // earlier error takes precedence
+ if (!EFI_ERROR (Status)) {
+ // earlier error takes precedence
Status = NotifyStatus;
}