Commit Graph

50 Commits

Author SHA1 Message Date
Jiaxin Wu 5225084439 MdeModulePkg/UefiPxeBcDxe: Refine the PXE boot displayed information
This path is to refine the PXE boot displayed information so as to
in line with NetworkPkg/UefiPxeBcDxe driver.

Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
2017-06-05 16:28:51 +08:00
Jiaxin Wu d0e76ac5ce MdeModulePkg/Network: Fix potential ASSERT if NetIp4IsUnicast is called
Cc: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Cc: Subramanian Sriram <sriram-s@hpe.com>
Cc: Zhang Lubo <lubo.zhang@intel.com>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
2017-03-23 11:39:15 +08:00
Hao Wu 16f6922709 MdeModulePkg: Refine casting expression result to bigger size
There are cases that the operands of an expression are all with rank less
than UINT64/INT64 and the result of the expression is explicitly cast to
UINT64/INT64 to fit the target size.

An example will be:
UINT32 a,b;
// a and b can be any unsigned int type with rank less than UINT64, like
// UINT8, UINT16, etc.
UINT64 c;
c = (UINT64) (a + b);

Some static code checkers may warn that the expression result might
overflow within the rank of "int" (integer promotions) and the result is
then cast to a bigger size.

The commit refines codes by the following rules:
1). When the expression is possible to overflow the range of unsigned int/
int:
c = (UINT64)a + b;

2). When the expression will not overflow within the rank of "int", remove
the explicit type casts:
c = a + b;

3). When the expression will be cast to pointer of possible greater size:
UINT32 a,b;
VOID *c;
c = (VOID *)(UINTN)(a + b); --> c = (VOID *)((UINTN)a + b);

4). When one side of a comparison expression contains only operands with
rank less than UINT32:
UINT8 a;
UINT16 b;
UINTN c;
if ((UINTN)(a + b) > c) {...} --> if (((UINT32)a + b) > c) {...}

For rule 4), if we remove the 'UINTN' type cast like:
if (a + b > c) {...}
The VS compiler will complain with warning C4018 (signed/unsigned
mismatch, level 3 warning) due to promoting 'a + b' to type 'int'.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
2017-03-06 14:33:20 +08:00
Fu Siyuan e86f363564 MdeModulePkg: Check for NULL pointer before dereference it.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
2016-10-31 16:03:00 +08:00
Fu Siyuan 01b5ac880f MdeModulePkg: Update IP4 stack drivers for classless address unicast check.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
2016-10-28 14:20:10 +08:00
Fu Siyuan 60de3c19a7 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>
2016-05-05 09:08:26 +08:00
Fu Siyuan 30268f29bd MdeModulePkg: reset DHCP child when leaving PXE LoadFile.
The DHCP4 can have only one configured child instance so we need to reset
the DHCP4 child when leaving PXE driver's LoadFile() function, otherwise the
other programs which also need to use DHCP4 (like HTTP boot) will be impacted.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18615 6f19259b-4bc3-4df7-8a09-765794883524
2015-10-16 07:18:38 +00:00
Zhang Lubo 6758032da9 MdeModulePkg: PXE Driver's LoadFile protocol should check FilePath
PXE driver's LoadFile protocol should check the input parameter
FilePath to see whether it's a supported device path.If not,
it should return invalid parameter, do not continue PXE boot.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18435 6f19259b-4bc3-4df7-8a09-765794883524
2015-09-10 09:46:59 +00:00
Zhang Lubo 14e84fd888 MdeModulePkg: Fix the issue cannot boot to UEFI Network after reset
DHCP4 service allows only one of its children to be configured
in the active state,If the DHCP4 D.O.R.A started by IP4 auto
configuration and has not been completed, the Dhcp4 state machine
will not be in the right state for the PXE to start a new round
D.O.R.A., so we need to switch it's policy to static.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18107 6f19259b-4bc3-4df7-8a09-765794883524
2015-07-29 06:37:48 +00:00
Zhang Lubo cbfb9e5eaf MdeModulePkg: Fix the issue EfiPxeBcDhcp() may return wrong status.
if the instance of the DHCP4 protocol driver is in the Dhcp4Bound
status that is DHCP configuration has completed, so the Dhcp4->Start
FUNC in the EfiPxcBcDhcp() will return EFI_ALREADY_STARTED status
which lead to EfiPxeBcDhcp FUNC not in correspondence with UEFI spec.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
[lersek@redhat.com: updated copyright year as Siyuan asked]
Signed-off-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18050 6f19259b-4bc3-4df7-8a09-765794883524
2015-07-26 08:03:30 +00:00
sfu5 f402291bf9 Initialize DefaultInfo before using it.
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Ouyang Qian <qian.ouyang@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14168 6f19259b-4bc3-4df7-8a09-765794883524
2013-03-11 07:47:42 +00:00
sfu5 416211e0d8 Removes a useless condition in PxeBcImpl.c.
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
Reviewed-by: Ye Ting  <ting.ye@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14117 6f19259b-4bc3-4df7-8a09-765794883524
2013-02-01 04:50:28 +00:00
sfu5 357af28525 Reconfigure the UdpRead instance if an error occurred in Dhcp, Discover and Mtftp process.
Signed-off-by: sfu5
Reviewed-by: qianouyang
Reviewed-by: tye

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12884 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-16 09:00:47 +00:00
sfu5 c3cd46d421 1. Fix bug in PXE driver UdpRead function to handle the IP fragmentation.
Signed-off-by: sfu5
Reviewed-by: xdu2
Reviewed-by: hhuan13

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12309 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-09 08:31:37 +00:00
sfu5 0bc17488fe Fix bug for UefiPxeBcDxe driver to catch the return status.
Signed-off-by: sfu5
Reviewed-by: hhuan13
Reviewed-by: xdu2

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12252 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-01 08:48:51 +00:00
hhuan13 c82291bc31 1. Fix PXE performance issue : enhance EfiPxeBcSetIpFilter() to eliminate unnecessary re-configure Udp4Read operation.
Reviewed-by: xdu2
Signed-off-by: hhuan13


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11779 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-09 09:25:02 +00:00
ydong10 c9325700d0 Refine soma code to make code run safely.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10877 6f19259b-4bc3-4df7-8a09-765794883524
2010-09-15 07:48:11 +00:00
hhuan13 2e4c2a049b Improve PXE Over IPv4 performance:
1. Stop UdpWrite instance upon return from EfiPxeBcUdpWrite() to avoid mass pkgs enqueue to this useless instance in Udp layer.
2. Enhance Udp timeout logic to prevent the worst case happen, and set PxeUdp instance to 50ms to avoid enqueue mass pkgs in background.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10861 6f19259b-4bc3-4df7-8a09-765794883524
2010-09-09 09:30:19 +00:00
hhuan13 8730386e6d To comply w/ UEFI spec , In Dhcp(), Discover(), and Mtftp() interfaces, set the IP filter to use StationIp.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10829 6f19259b-4bc3-4df7-8a09-765794883524
2010-08-27 05:11:32 +00:00
hhuan13 cfbc1a7537 1. Introduce PcdTftpBlockSize to let platform DSC customize block size.
2. Roll back the default block size to handle all link layers.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10803 6f19259b-4bc3-4df7-8a09-765794883524
2010-08-18 00:47:26 +00:00
hhuan13 11fa4298d6 Roll back BlockSize to 0x8000 for PXE performance concern.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10798 6f19259b-4bc3-4df7-8a09-765794883524
2010-08-15 01:41:30 +00:00
hhuan13 29a4f92d81 Fix 3 K8 issues for PXE module
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10489 6f19259b-4bc3-4df7-8a09-765794883524
2010-05-14 07:47:29 +00:00
hhtian e5eed7d364 Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10418 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-24 09:33:45 +00:00
vanjeff ee6e8714a0 remove PxeBc->Stop () when EFI_BUFFER_TOO_SMALL, the calling PxeBc->Stop() in Driver Binding Stop() could make sure PXE functionality is stopped when disconnecting UefiPxeBcDxe module.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10318 6f19259b-4bc3-4df7-8a09-765794883524
2010-03-27 00:48:22 +00:00
hhuan13 4431fdc802 Fix an bug for PXE boot assert
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10291 6f19259b-4bc3-4df7-8a09-765794883524
2010-03-19 13:57:46 +00:00
xdu2 dd29f3edb9 For network dynamic media support:
1. add library function NetLibDetectMedia to NetLib for media detection
2. update MnpDxe to periodically poll for media status update and check for media status before packet transmit
3. update Ip4Dxe to return ModeData using Mnp->GetModeData()
4. update IScsiDxe to check for media status before try to do DHCP and session login
5. update UefiPxeBcDxe to check for media status before PXE start

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9919 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-03 04:37:53 +00:00
ljin6 fa6d3ee491 Get MaxPacketSize from IP4 mode data and reduce the head size of UDP and MTFTP, and take it as BlockSize to download.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9894 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-01 03:32:28 +00:00
vanjeff e285199897 refine the code and add more security check.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9691 6f19259b-4bc3-4df7-8a09-765794883524
2010-01-08 02:35:56 +00:00
vanjeff 6ee21b60a8 The functionality of PXE Base Code protocol will not be stopped, when downloading is successfully.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9512 6f19259b-4bc3-4df7-8a09-765794883524
2009-12-04 03:01:52 +00:00
vanjeff 8f8bfa5b85 Fixed the bug that not to stop PXE functionality when PXE meeting some failure. And enhanced DriverBindingStop() to stop PXE functionality if PXE was still alive.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9478 6f19259b-4bc3-4df7-8a09-765794883524
2009-11-25 01:36:54 +00:00
xdu2 766c7483c3 Update network drivers to use FreePool() instead of gBS->FreePool().
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9424 6f19259b-4bc3-4df7-8a09-765794883524
2009-11-13 06:13:59 +00:00
tye f6b7393ceb [Change summary]:
1. Update NetLib to a combined NetLib support dual network stack:
1) Add Network Debug facility for IPv4 stack.
2) Extend the library APIs to support IPv6 stack:
   a. NetIp6IsUnspecifiedAddr
   b. NetIp6IsLinkLocalAddr   
   c. NetIp6IsNetEqual
   d. NetLibCreateIPv6DPathNode.
   e. NetIp6PseudoHeadChecksum
   f. NetIp6IsValidUnicast
3) Update the structure definitions:
   a. Update NET_BUF to add EFI_IP6_HEADER and EFI_UDP_HEADER
   b. Add NET_IP6_PSEUDO_HDR
4) Update Ip4IsUnicast to NetIp4IsUnicast

2. Update the impacted modules to adopt the combined NetLib.

3. Clean up coding style errors in all network drivers and libraries.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9391 6f19259b-4bc3-4df7-8a09-765794883524
2009-11-04 08:18:34 +00:00
vanjeff 2ce5c88a7a Use siaddr in DHCP packet, if zero, use option 54 instead.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9066 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-14 02:37:23 +00:00
mdkinney d8d26fb207 Retire NetLibQueueDpc() and NetLibDispatchDpc() and use QueueDpc() and DispatchDpc() from the DpcLib instead.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8897 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-11 22:51:51 +00:00
vanjeff 890986ca2a add security check.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8819 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-08 09:42:16 +00:00
vanjeff 894d038a8d add security check.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8680 6f19259b-4bc3-4df7-8a09-765794883524
2009-06-29 09:19:25 +00:00
gikidy 39941daf90 Fix incorrect error handling when PXE boot timeout.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8675 6f19259b-4bc3-4df7-8a09-765794883524
2009-06-29 03:42:33 +00:00
vanjeff 434ce3feca sync tracker:PXE misused the parameter of second since boot in DHCP header.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8496 6f19259b-4bc3-4df7-8a09-765794883524
2009-06-08 02:13:36 +00:00
vanjeff 319075ff6e 1. sync PXE boot trackers for Windows 2008 server.
2. fixed one bug for SetIpfilter().

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7886 6f19259b-4bc3-4df7-8a09-765794883524
2009-03-16 06:45:46 +00:00
jgong5 f737cfb953 code scrub for UefiPxeBcDxe.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7452 6f19259b-4bc3-4df7-8a09-765794883524
2009-02-06 05:07:34 +00:00
xli24 555e76f83f Refine MdeModulePkg to pass GCC build.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6575 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-18 07:01:14 +00:00
jji4 fe1e36e550 Patch to remove STATIC modifier. This is on longer recommended by EFI Framework coding style. All duplicated symbols has been renamed accordingly.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6296 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-30 06:05:06 +00:00
vanjeff 05c0e3cb8a 1. Sync Bug:PXE Boot issue- UefiPxeBc driver currently does not follow PXE Spec
[Root Cause Analysis]
The PXE offer selection in the PXE driver is splitted into two passes and the two passes are required to follow the same flow. However, in current code, there is some difference between the two.
[Solution]
make the second offer selection pass exactly match the first one.

2. Fixed one bug when allocating pool for UDP transmit packet.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5932 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-19 07:12:23 +00:00
vanjeff 619eff3f29 clean EBC build.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5342 6f19259b-4bc3-4df7-8a09-765794883524
2008-06-12 06:51:09 +00:00
vanjeff 8792362f22 [Description]:
Problem with PXE boot to Windows Server 2008 install. The reason is that UdpRead and UdpWrite interfaces cannot work well with the same UDP instance.
[Solution]
 Use separate instances for UDP Read and UDP write in UefiPxeBC module.
[Impaction]:
 UefiPxeBcDxe and Udp4Dxe module.
[Reference Info]:
 EDK tracker 1133 - Problem with PXE boot to Windows Server 2008 install. 



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5303 6f19259b-4bc3-4df7-8a09-765794883524
2008-05-27 03:34:39 +00:00
vanjeff 5c88defe6d remove debug code.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4982 6f19259b-4bc3-4df7-8a09-765794883524
2008-04-02 09:00:43 +00:00
vanjeff 982a9eaea2 enhanced UefiPxeBcDxe to support
1. AutoArp. 2. SendGuid. 3 TftpError. 4. IcmpError. 5. RouteTable. 6. ArpCache.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4981 6f19259b-4bc3-4df7-8a09-765794883524
2008-04-02 08:45:36 +00:00
vanjeff 8d285ec0ce 1. Enabled SetIpFilter() in UefiPxeBcDxe module.
2. Ported Arp() in UefiPxeBcDxe module.
3. Sync tracker: enabled unload() for PxeBcDxe module.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4813 6f19259b-4bc3-4df7-8a09-765794883524
2008-03-10 06:55:15 +00:00
vanjeff e48e37fce2 Use Mde library and definition instead of some native definitions in NetLib, to simply network library.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4693 6f19259b-4bc3-4df7-8a09-765794883524
2008-02-14 09:40:22 +00:00
vanjeff dc361cc5a0 1. Import UEFI PxeBc module in MdeModulePkg
2. Remove some SMBIOS definitions defined in PxeBc module, use those who are defined in MdePkg.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4495 6f19259b-4bc3-4df7-8a09-765794883524
2008-01-04 02:29:30 +00:00