-
Notifications
You must be signed in to change notification settings - Fork 163
Description
The point of NetLibDetectMediaWaitTimeout() in DxeNetLib is to return whether network media is present. It returns a status code that is ignored in 14/15 calls throughout the codebase.
These are the possible return values defined for NetLibDetectMediaWaitTimeout():
mu_basecore/NetworkPkg/Library/DxeNetLib/DxeNetLib.c
Lines 2656 to 2687 in b09f1fd
| /** | |
| Detect media state for a network device. This routine will wait for a period of time at | |
| a specified checking interval when a certain network is under connecting until connection | |
| process finishs or timeout. If Aip protocol is supported by low layer drivers, three kinds | |
| of media states can be detected: EFI_SUCCESS, EFI_NOT_READY and EFI_NO_MEDIA, represents | |
| connected state, connecting state and no media state respectively. When function detects | |
| the current state is EFI_NOT_READY, it will loop to wait for next time's check until state | |
| turns to be EFI_SUCCESS or EFI_NO_MEDIA. If Aip protocol is not supported, function will | |
| call NetLibDetectMedia() and return state directly. | |
| @param[in] ServiceHandle The handle where network service binding protocols are | |
| installed on. | |
| @param[in] Timeout The maximum number of 100ns units to wait when network | |
| is connecting. Zero value means detect once and return | |
| immediately. | |
| @param[out] MediaState The pointer to the detected media state. | |
| @retval EFI_SUCCESS Media detection success. | |
| @retval EFI_INVALID_PARAMETER ServiceHandle is not a valid network device handle or | |
| MediaState pointer is NULL. | |
| @retval EFI_DEVICE_ERROR A device error occurred. | |
| @retval EFI_TIMEOUT Network is connecting but timeout. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| NetLibDetectMediaWaitTimeout ( | |
| IN EFI_HANDLE ServiceHandle, | |
| IN UINT64 Timeout, | |
| OUT EFI_STATUS *MediaState | |
| ) |
It would be intuitive to expect that if NetLibDetectMediaWaitTimeout() returns a non-EFI_SUCCESS code, the output pointer value in the *MediaState argument is invalid. That's not done today.
This issue tracks exploration of conditionally accepting *MediaState in combination with the function return value. That may require other work like #1635 being completed first.