MdeModulePkg: Do not use hard coded TTL/ToS in PXE driver.

EFI_PXE_BASE_CODE_PROTOCOL has interface to set the TTL and ToS value, but
not used by the UdpWrite() interface. The code always use a hard coded 16
for the TTL and 0 for ToS.
This patch update the UpdWrite() to use the TTL and ToS which have been set
by the SetParameters().

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-By: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-By: Samer El-Haj-Mahmoud <elhaj@hpe.com>
This commit is contained in:
Fu Siyuan 2016-04-29 15:09:20 +08:00
parent 6f2f4116eb
commit 60de3c19a7
3 changed files with 21 additions and 11 deletions

View File

@ -1,7 +1,7 @@
/** @file
Interface routines for PxeBc.
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
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
@ -1435,7 +1435,9 @@ EfiPxeBcUdpWrite (
&Private->StationIp.v4,
&Private->SubnetMask.v4,
&Private->GatewayIp.v4,
&Private->CurrentUdpSrcPort
&Private->CurrentUdpSrcPort,
Private->Mode.TTL,
Private->Mode.ToS
);
if (EFI_ERROR (Status)) {
Private->CurrentUdpSrcPort = 0;

View File

@ -1,7 +1,7 @@
/** @file
Support routines for PxeBc.
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
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
@ -42,6 +42,8 @@ PxeBcCommonNotify (
@param SubnetMask Pointer to the subnetmask of the station ip address.
@param Gateway Pointer to the gateway ip address.
@param SrcPort Pointer to the srouce port of the station.
@param TTL The time to live field of the IP header.
@param ToS The type of service field of the IP header.
@retval EFI_SUCCESS The configuration settings were set, changed, or reset successfully.
@retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
@ -65,7 +67,9 @@ PxeBcConfigureUdpWriteInstance (
IN EFI_IPv4_ADDRESS *StationIp,
IN EFI_IPv4_ADDRESS *SubnetMask,
IN EFI_IPv4_ADDRESS *Gateway,
IN OUT UINT16 *SrcPort
IN OUT UINT16 *SrcPort,
IN UINT8 TTL,
IN UINT8 ToS
)
{
EFI_UDP4_CONFIG_DATA Udp4CfgData;
@ -74,8 +78,8 @@ PxeBcConfigureUdpWriteInstance (
ZeroMem (&Udp4CfgData, sizeof (Udp4CfgData));
Udp4CfgData.ReceiveTimeout = PXEBC_DEFAULT_LIFETIME;
Udp4CfgData.TypeOfService = DEFAULT_ToS;
Udp4CfgData.TimeToLive = DEFAULT_TTL;
Udp4CfgData.TypeOfService = ToS;
Udp4CfgData.TimeToLive = TTL;
Udp4CfgData.AllowDuplicatePort = TRUE;
CopyMem (&Udp4CfgData.StationAddress, StationIp, sizeof (*StationIp));

View File

@ -1,6 +1,6 @@
/** @file
Support routines for PxeBc.
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
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
@ -32,13 +32,15 @@ PxeBcCommonNotify (
/**
This function initialize(or configure) the Udp4Write instance.
@param Udp4 Pointer to the EFI_UDP4_PROTOCOL instance.
@param StationIp Pointer to the station ip address.
@param SubnetMask Pointer to the subnetmask of the station ip address.
@param Gateway Pointer to the gateway ip address.
@param SrcPort Pointer to the srouce port of the station.
@param TTL The time to live field of the IP header.
@param ToS The type of service field of the IP header.
@retval EFI_SUCCESS The configuration settings were set, changed, or reset successfully.
@retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
RARP, etc.) is not finished yet.
@ -53,7 +55,7 @@ PxeBcCommonNotify (
@retval EFI_DEVICE_ERROR An unexpected network or system error occurred and this instance
was not opened.
@retval Others Please examine the function Udp4->Routes(Udp4, FALSE, &mZeroIp4Addr, &mZeroIp4Addr, Gateway) returns.
**/
EFI_STATUS
PxeBcConfigureUdpWriteInstance (
@ -61,7 +63,9 @@ PxeBcConfigureUdpWriteInstance (
IN EFI_IPv4_ADDRESS *StationIp,
IN EFI_IPv4_ADDRESS *SubnetMask,
IN EFI_IPv4_ADDRESS *Gateway,
IN OUT UINT16 *SrcPort
IN OUT UINT16 *SrcPort,
IN UINT8 TTL,
IN UINT8 ToS
);
/**
Convert number to ASCII value.