1d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek/** @file
2d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
3d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Empty implementation of the SNP methods that dependent protocols don't
4d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  absolutely need and the UEFI-2.3.1+errC specification allows us not to
5d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  support.
6d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
7d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Copyright (C) 2013, Red Hat, Inc.
8d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
9d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
10d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  This program and the accompanying materials are licensed and made available
11d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  under the terms and conditions of the BSD License which accompanies this
12d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  distribution. The full text of the license may be found at
13d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  http://opensource.org/licenses/bsd-license.php
14d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
15d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
16d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
18d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek**/
19d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
20d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek#include "VirtioNet.h"
21d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
22d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek/**
23d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Resets a network adapter and re-initializes it with the parameters that were
24d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  provided in the previous call to Initialize().
25d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
26d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  This                 The protocol instance pointer.
27d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  ExtendedVerification Indicates that the driver may perform a more
28d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                               exhaustive verification operation of the device
29d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                               during reset.
30d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
31d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_SUCCESS           The network interface was reset.
32d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_NOT_STARTED       The network interface has not been started.
33d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_INVALID_PARAMETER One or more of the parameters has an
34d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                unsupported value.
35d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_DEVICE_ERROR      The command could not be sent to the network
36d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
37d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_UNSUPPORTED       This function is not supported by the network
38d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
39d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
40d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek**/
41d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
42d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFI_STATUS
43d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFIAPI
44d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekVirtioNetReset (
45d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
46d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN BOOLEAN                     ExtendedVerification
47d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  )
48d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek{
49d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  return EFI_UNSUPPORTED;
50d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek}
51d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
52d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
53d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek/**
54d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Modifies or resets the current station address, if supported.
55d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
56d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  This  The protocol instance pointer.
57d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  Reset Flag used to reset the station address to the network
58d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                interfaces permanent address.
59d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  New   The new station address to be used for the network interface.
60d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
61d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_SUCCESS           The network interfaces station address was
62d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                updated.
63d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_NOT_STARTED       The network interface has not been started.
64d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_INVALID_PARAMETER One or more of the parameters has an
65d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                unsupported value.
66d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_DEVICE_ERROR      The command could not be sent to the network
67d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
68d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_UNSUPPORTED       This function is not supported by the network
69d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
70d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
71d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek**/
72d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
73d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFI_STATUS
74d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFIAPI
75d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekVirtioNetStationAddress (
76d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
77d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN BOOLEAN                     Reset,
78d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN EFI_MAC_ADDRESS             *New OPTIONAL
79d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  )
80d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek{
81d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  return EFI_UNSUPPORTED;
82d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek}
83d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
84d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
85d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek/**
86d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Resets or collects the statistics on a network interface.
87d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
88d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  This            Protocol instance pointer.
89d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  Reset           Set to TRUE to reset the statistics for the network
90d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                          interface.
91d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  StatisticsSize  On input the size, in bytes, of StatisticsTable. On
92d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                          output the size, in bytes, of the resulting table of
93d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                          statistics.
94d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  StatisticsTable A pointer to the EFI_NETWORK_STATISTICS structure
95d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                          that contains the statistics.
96d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
97d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_SUCCESS           The statistics were collected from the network
98d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
99d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_NOT_STARTED       The network interface has not been started.
100d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_BUFFER_TOO_SMALL  The Statistics buffer was too small. The
101d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                current buffer size needed to hold the
102d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                statistics is returned in StatisticsSize.
103d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_INVALID_PARAMETER One or more of the parameters has an
104d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                unsupported value.
105d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_DEVICE_ERROR      The command could not be sent to the network
106d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
107d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_UNSUPPORTED       This function is not supported by the network
108d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
109d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
110d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek**/
111d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
112d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFI_STATUS
113d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFIAPI
114d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekVirtioNetStatistics (
115d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
116d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN BOOLEAN                     Reset,
117d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN OUT UINTN                   *StatisticsSize   OPTIONAL,
118d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  OUT EFI_NETWORK_STATISTICS     *StatisticsTable  OPTIONAL
119d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  )
120d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek{
121d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  return EFI_UNSUPPORTED;
122d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek}
123d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
124d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
125d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek/**
126d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  Performs read and write operations on the NVRAM device attached to a  network
127d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  interface.
128d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
129d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  This       The protocol instance pointer.
130d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  ReadWrite  TRUE for read operations, FALSE for write operations.
131d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  Offset     Byte offset in the NVRAM device at which to start the read
132d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                     or write operation. This must be a multiple of
133d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                     NvRamAccessSize and less than NvRamSize.
134d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  BufferSize The number of bytes to read or write from the NVRAM
135d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                     device. This must also be a multiple of NvramAccessSize.
136d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @param  Buffer     A pointer to the data buffer.
137d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
138d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_SUCCESS           The NVRAM access was performed.
139d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_NOT_STARTED       The network interface has not been started.
140d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_INVALID_PARAMETER One or more of the parameters has an
141d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                unsupported value.
142d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_DEVICE_ERROR      The command could not be sent to the network
143d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
144d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  @retval EFI_UNSUPPORTED       This function is not supported by the network
145d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek                                interface.
146d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
147d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek**/
148d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek
149d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFI_STATUS
150d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekEFIAPI
151d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo ErsekVirtioNetNvData (
152d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
153d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN BOOLEAN                     ReadWrite,
154d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN UINTN                       Offset,
155d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN UINTN                       BufferSize,
156d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  IN OUT VOID                    *Buffer
157d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  )
158d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek{
159d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek  return EFI_UNSUPPORTED;
160d0e5ff0a0d7dfb78b87503c05dd3517930523d01Laszlo Ersek}
161