Implementation of Managed Network Protocol public services.
Copyright (c) 2005 - 2016, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file MnpMain.c.
Aborts an asynchronous transmit or receive request.
The Cancel() function is used to abort a pending transmit or receive request. If the token is in the transmit or receive request queues, after calling this function, Token.Status will be set to EFI_ABORTED and then Token.Event will be signaled. If the token is not in one of the queues, which usually means that the asynchronous operation has completed, this function will not signal the token and EFI_NOT_FOUND is returned.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
[in] | Token | Pointer to a token that has been issued by EFI_MANAGED_NETWORK_PROTOCOL.Transmit() or EFI_MANAGED_NETWORK_PROTOCOL.Receive(). If NULL, all pending tokens are aborted. |
- Return values
-
EFI_SUCCESS | The asynchronous I/O request was aborted and Token.Event was signaled. When Token is NULL, all pending requests were aborted and their events were signaled. |
EFI_NOT_STARTED | This MNP child driver instance has not been configured. |
EFI_INVALID_PARAMETER | This is NULL. |
EFI_NOT_FOUND | When Token is not NULL, the asynchronous I/O request was not found in the transmit or receive queue. It has either completed or was not issued by Transmit() and Receive(). |
Definition at line 683 of file MnpMain.c.
Sets or clears the operational parameters for the MNP child driver.
The Configure() function is used to set, change, or reset the operational parameters for the MNP child driver instance. Until the operational parameters have been set, no network traffic can be sent or received by this MNP child driver instance. Once the operational parameters have been reset, no more traffic can be sent or received until the operational parameters have been set again. Each MNP child driver instance can be started and stopped independently of each other by setting or resetting their receive filter settings with the Configure() function. After any successful call to Configure(), the MNP child driver instance is started. The internal periodic timer (if supported) is enabled. Data can be transmitted and may be received if the receive filters have also been enabled. Note: If multiple MNP child driver instances will receive the same packet because of overlapping receive filter settings, then the first MNP child driver instance will receive the original packet and additional instances will receive copies of the original packet. Note: Warning: Receive filter settings that overlap will consume extra processor and/or DMA resources and degrade system and network performance.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
[in] | MnpConfigData | Pointer to configuration data that will be assigned to the MNP child driver instance. If NULL, the MNP child driver instance is reset to startup defaults and all pending transmit and receive requests are flushed. Type EFI_MANAGED_NETWORK_CONFIG_DATA is defined in EFI_MANAGED_NETWORK_PROTOCOL.GetModeData(). |
- Return values
-
EFI_SUCCESS | The operation completed successfully. |
EFI_INVALID_PARAMETER | One or more of the following conditions is TRUE: This is NULL. MnpConfigData.ProtocolTypeFilter is not valid. The operational data for the MNP child driver instance is unchanged. |
EFI_OUT_OF_RESOURCES | Required system resources (usually memory) could not be allocated. The MNP child driver instance has been reset to startup defaults. |
EFI_UNSUPPORTED | The requested feature is unsupported in this [MNP] implementation. The operational data for the MNP child driver instance is unchanged. |
EFI_DEVICE_ERROR | An unexpected network or system error occurred. The MNP child driver instance has been reset to startup defaults. |
Others | The MNP child driver instance has been reset to startup defaults. |
Definition at line 144 of file MnpMain.c.
Enables and disables receive filters for multicast address. This function may be unsupported in some MNP implementations.
The Groups() function only adds and removes multicast MAC addresses from the filter list. The MNP driver does not transmit or process Internet Group Management Protocol (IGMP) packets. If JoinFlag is FALSE and MacAddress is NULL, then all joined groups are left.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
[in] | JoinFlag | Set to TRUE to join this multicast group. Set to FALSE to leave this multicast group. |
[in] | MacAddress | Pointer to the multicast MAC group (address) to join or leave. |
- Return values
-
EFI_SUCCESS | The requested operation completed successfully. |
EFI_INVALID_PARAMETER | One or more of the following conditions is TRUE: This is NULL. JoinFlag is TRUE and MacAddress is NULL. MacAddress is not a valid multicast MAC address. The MNP multicast group settings are unchanged. |
EFI_NOT_STARTED | This MNP child driver instance has not been configured. |
EFI_ALREADY_STARTED | The supplied multicast group is already joined. |
EFI_NOT_FOUND | The supplied multicast group is not joined. |
EFI_DEVICE_ERROR | An unexpected network or system error occurred. The MNP child driver instance has been reset to startup defaults. |
EFI_UNSUPPORTED | The requested feature is unsupported in this MNP implementation. |
Others | The requested operation could not be completed. The MNP multicast group settings are unchanged. |
Definition at line 343 of file MnpMain.c.
Translates an IP multicast address to a hardware (MAC) multicast address. This function may be unsupported in some MNP implementations.
The McastIpToMac() function translates an IP multicast address to a hardware (MAC) multicast address. This function may be implemented by calling the underlying EFI_SIMPLE_NETWORK. MCastIpToMac() function, which may also be unsupported in some MNP implementations.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
[in] | Ipv6Flag | Set to TRUE to if IpAddress is an IPv6 multicast address. Set to FALSE if IpAddress is an IPv4 multicast address. |
[in] | IpAddress | Pointer to the multicast IP address (in network byte order) to convert. |
[out] | MacAddress | Pointer to the resulting multicast MAC address. |
- Return values
-
EFI_SUCCESS | The operation completed successfully. |
EFI_INVALID_PARAMETER | One of the following conditions is TRUE: This is NULL. IpAddress is NULL. IpAddress is not a valid multicast IP address. MacAddress is NULL. |
EFI_NOT_STARTED | This MNP child driver instance has not been configured. |
EFI_UNSUPPORTED | The requested feature is unsupported in this MNP implementation. |
EFI_DEVICE_ERROR | An unexpected network or system error occurred. |
Others | The address could not be converted. |
Definition at line 217 of file MnpMain.c.
Polls for incoming data packets and processes outgoing data packets.
The Poll() function can be used by network drivers and applications to increase the rate that data packets are moved between the communications device and the transmit and receive queues. Normally, a periodic timer event internally calls the Poll() function. But, in some systems, the periodic timer event may not call Poll() fast enough to transmit and/or receive all data packets without missing packets. Drivers and applications that are experiencing packet loss should try calling the Poll() function more often.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
- Return values
-
EFI_SUCCESS | Incoming or outgoing data was processed. |
EFI_NOT_STARTED | This MNP child driver instance has not been configured. |
EFI_DEVICE_ERROR | An unexpected system or network error occurred. The MNP child driver instance has been reset to startup defaults. |
EFI_NOT_READY | No incoming or outgoing data was processed. Consider increasing the polling rate. |
EFI_TIMEOUT | Data was dropped out of the transmit and/or receive queue. Consider increasing the polling rate. |
Definition at line 752 of file MnpMain.c.
Places an asynchronous receiving request into the receiving queue.
The Receive() function places a completion token into the receive packet queue. This function is always asynchronous. The caller must fill in the Token.Event field in the completion token, and this field cannot be NULL. When the receive operation completes, the MNP updates the Token.Status and Token.RxData fields and the Token.Event is signaled.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
[in] | Token | Pointer to a token associated with the receive data descriptor. Type EFI_MANAGED_NETWORK_COMPLETION_TOKEN is defined in EFI_MANAGED_NETWORK_PROTOCOL.Transmit(). |
- Return values
-
EFI_SUCCESS | The receive completion token was cached. |
EFI_NOT_STARTED | This MNP child driver instance has not been configured. |
EFI_INVALID_PARAMETER | One or more of the following conditions is TRUE: This is NULL. Token is NULL. Token.Event is NULL |
EFI_OUT_OF_RESOURCES | The transmit data could not be queued due to a lack of system resources (usually memory). |
EFI_DEVICE_ERROR | An unexpected system or network error occurred. The MNP child driver instance has been reset to startup defaults. |
EFI_ACCESS_DENIED | The receive completion token was already in the receive queue. |
EFI_NOT_READY | The receive request could not be queued because the receive queue is full. |
Definition at line 600 of file MnpMain.c.
Places asynchronous outgoing data packets into the transmit queue.
The Transmit() function places a completion token into the transmit packet queue. This function is always asynchronous. The caller must fill in the Token.Event and Token.TxData fields in the completion token, and these fields cannot be NULL. When the transmit operation completes, the MNP updates the Token.Status field and the Token.Event is signaled. Note: There may be a performance penalty if the packet needs to be defragmented before it can be transmitted by the network device. Systems in which performance is critical should review the requirements and features of the underlying communications device and drivers.
- Parameters
-
[in] | This | Pointer to the EFI_MANAGED_NETWORK_PROTOCOL instance. |
[in] | Token | Pointer to a token associated with the transmit data descriptor. Type EFI_MANAGED_NETWORK_COMPLETION_TOKEN is defined in "Related Definitions" below. |
- Return values
-
EFI_SUCCESS | The transmit completion token was cached. |
EFI_NOT_STARTED | This MNP child driver instance has not been configured. |
EFI_INVALID_PARAMETER | One or more of the following conditions is TRUE: This is NULL. Token is NULL. Token.Event is NULL. Token.TxData is NULL. Token.TxData.DestinationAddress is not NULL and Token.TxData.HeaderLength is zero. Token.TxData.FragmentCount is zero. (Token.TxData.HeaderLength + Token.TxData.DataLength) is not equal to the sum of the Token.TxData.FragmentTable[].FragmentLength fields. One or more of the Token.TxData.FragmentTable[].FragmentLength fields is zero. One or more of the Token.TxData.FragmentTable[].FragmentBufferfields is NULL. Token.TxData.DataLength is greater than MTU. |
EFI_ACCESS_DENIED | The transmit completion token is already in the transmit queue. |
EFI_OUT_OF_RESOURCES | The transmit data could not be queued due to a lack of system resources (usually memory). |
EFI_DEVICE_ERROR | An unexpected system or network error occurred. The MNP child driver instance has been reset to startup defaults. |
EFI_NOT_READY | The transmit request could not be queued because the transmit queue is full. |
Definition at line 508 of file MnpMain.c.