Commit Graph

26 Commits

Author SHA1 Message Date
Fu Siyuan 207b3d2b0b MdeModulePkg: Add wnd scale check before shrinking window.
Moving Right window edge to the left on sender side without additional check
can lead to the TCP deadlock, when receiver ACKs proper segment, while sender
discards it for future ACK. To prevent this add check if usable window (or
shrink amount in this case) is bigger then receiver's window scale factor.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Andrey Tepin <atepin@kraftway.ru>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
2017-05-09 08:45:33 +08:00
Zhang Lubo dea6914dac MdeModulePkg:TcpDriver need to use EFI_D_NET for DEBUG maessage.
Tcp driver need to use EFI_D_NET to log DEBUG message,
So it becomes easy to separate/filter out debug messages
from network stack versus generic EFI_D_INFO debugs.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Cc: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Cc: Subramanian Sriram <sriram-s@hpe.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Ye Ting <ting.ye@intel.com>
Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
2016-10-09 14:29:40 +08:00
Fu Siyuan 977528bad7 MdeModulePkg: Fix bug in TCP which not sending out ACK in certain circumstance.
Consider the situation as shown in below chart. The last ACK message has
acknowledged the Tcb->RcvWl2, and all the segments until Tcb->RcvNxt have
been received by TCP driver. The Tcb->RcvNxt is not acknowledged due to the
delayed ACK. In this case an incoming segment (Seg->Seq, Seg->End) should
not be accepted by TCP driver, and an immediate ACK is required.

Current TcpSeqAcceptable() thought it’s an acceptable segment incorrectly, it
continues the TcpInput() process instead of sending out an ACK and droping the
segment immediately.

Tcb->RcvWl2                       Tcb->RcvNxt        Tcb->RcvWl2 + Tcb->RcvWnd
        Seg->Seq       Seg->End         |                          |
    |     |               |             |                          |
 ---+-----+---------------+-------------+--------------------------+-----------
           <income segment>             <----Acceptable Range--- -->

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-By: Eugene Cohen <eugene@hp.com>
Reviewed-By: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-By: Ye Ting <ting.ye@intel.com>
2016-07-18 10:08:43 +08:00
Fu Siyuan 1b31acb66c MdeModulePkg: Check received packet size before use it.
Arbitrary length of packet may be received from network, including the
packets with zero payload data or malformed protocol header. So the code
much check the actually received data size before using it. For example, in
current edk2 network stack, an zero payload UDP packet may cause the
platform ASSERT in NetbufFromExt() because of the zero fragment number.
This patch update the IpIoLib and UdpIoLib to check and discard the zero
payload data packet to avoid above assert. Some other network drivers are
also updated to check the packet size to guarantee the minimum length of
protocol header is received from upper layer driver.

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: Wu Jiaxin <jiaxin.wu@intel.com>
2016-04-01 13:30:08 +08:00
BALATON Zoltan 49789216fa Fix some grammar and converge formatting of the two versions of TcpInput.c
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
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@17186 6f19259b-4bc3-4df7-8a09-765794883524
2015-04-17 02:25:05 +00:00
ydong10 a56b6e03e2 Add more check to make code more safely.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ouyang Qian  <ouyang.qian@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13903 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-01 02:10:31 +00:00
erictian 02bbc6ee99 MdeModulePkg:removes the unreachable ‘break’ instruction after a ‘return’ instruction in the switch().
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13778 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-29 02:44:33 +00:00
tye1 ac8cca2a4d The patch acknowledges the TCP zero window probe message, either the format with 1 byte new data, or no new data. It also increases exponentially the interval between successive probes when performing TCP zero window probe.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10831 6f19259b-4bc3-4df7-8a09-765794883524
2010-08-27 07:57:45 +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
xdu2 1204fe8319 Code clean up in NetLib:
1. Add GLOBAL_REMOVE_IF_UNREFERENCED to all globals
2. Update NTOHL and NTOHS to be BaseLib func SwapBytes32/SwapBytes16
3. Remove duplicate NET_SWAP_SHORT (to use NTOHS instead)

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9648 6f19259b-4bc3-4df7-8a09-765794883524
2009-12-30 13:44:11 +00:00
tye b45b45b2d2 1. Update the UdpIo to a combined UdpIo to support both v4 and v6 stack.
2. Update Dhcp4 and Mtftp4 driver to adopt the combined UdpIo.
3. Clean up coding style problems in combined IpIoLib/NetLib. Update Tcp4 and Udp4 to adopt the changes.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9382 6f19259b-4bc3-4df7-8a09-765794883524
2009-10-30 05:11:38 +00:00
tye fb115c6150 NetLib:
1. Add new interface Ip6IsValidUnicast 
2. Add new enum IP6_EXTENSION_HEADER_TYPE
3. Add new structure IP6_ICMP_* definitions
4. Update structure from EFI_UDP4_HEADER to EFI_UDP_HEADER
5. Add new macro EFI_IP6_EQUAL


IpIoLib:
1. Update the IpIoLib to a combined library for both v4 and v6 network stack 
2. Fix a bug in IpIoIcmpHandler() - for IPv6 packet, the header length is variable (basic header + extension) rathar than fixed length.
   The fix removes the IPv6 header fields and notify the user with the ICMPv6 packet only containing payload.

TcpDxe/UdpDxe:
1. Update to adapt the new combined IpIoLib
2. Add gEfiIp6ProtocolGuid/gEfiIp6ServiceBindingProtocolGuid to [Protocols] in INF file since the Ip6.h is included in IpIoLib and NetLib.
3. Pass the TCP4/UDP4 UEFI SCT test on NT32 platform.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9374 6f19259b-4bc3-4df7-8a09-765794883524
2009-10-26 10:15:40 +00:00
niry 52b2a30825 Fixing coding style issue.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7945 6f19259b-4bc3-4df7-8a09-765794883524
2009-03-25 05:43:16 +00:00
niry 77f00155e3 Fix the IN OUT modifier for parameters.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7147 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-29 12:58:38 +00:00
niry c191cdd1ff Remove a goto statement.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7131 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-26 03:40:27 +00:00
niry 276dcc1b14 Fixing function headers.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7114 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-24 08:14:19 +00:00
jljusten d0cca731c3 MdeModulePkg/Universal/Network/IScsiDxe/IScsiImpl.h:
* Fix #include filename case for building under Linux

MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Misc.c:
MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Input.c:
* Fix warning of 'unhandled' cases in switch statement generated
  by GCC.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7071 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-17 18:01:32 +00:00
qhuang8 dfa596b8f7 Fix several syntax issue to pass build.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7047 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-16 15:10:14 +00:00
niry dfc1f033ea Add comments for functions.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7039 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-16 02:57:53 +00:00
niry 120db52c6d Add comments for functions and fix some coding style issue.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6885 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-05 23:47:55 +00:00
niry 85511ddf72 Fix coding style issues for Tcp4Dxe driver.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6774 6f19259b-4bc3-4df7-8a09-765794883524
2008-11-28 08:32:24 +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
qwang12 0e549d5be5 Make use of correct format String:
1) UINT64 should use %lx
2) POINTER type should use %p
3) EFI_STATUS should use %r


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6253 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-27 10:13:00 +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 36ee91ca36 1. Add DPC protocol and DpcLib library in MdeModulePkg.
2. Add DpcDxe module and DxeDpcLib module in MdeModulePkg
3. Port network stack module to use DPC.
4. Use MIN, and MAX defined in MdePkg to replace NET_MIN and NET_MAX.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4307 6f19259b-4bc3-4df7-8a09-765794883524
2007-11-20 05:42:23 +00:00
vanjeff 8a67d61da4 Import SnpDxe, Tcp4Dxe, Udp4Dxe and MnpDxe.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3416 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-24 08:06:37 +00:00