<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16640" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=315522814-18012009>Several test were
failed on sending UDP packets with MTU-like sizes.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=315522814-18012009>Fragmented UDP
packets do not contain UDP header, except the first one.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=315522814-18012009>So, appropriate
check was inserted.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=315522814-18012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=315522814-18012009>This bug was shown
rarely (only when the last fragment was less than 8 bytes), because the
following check always worked (by mistake):</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=315522814-18012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=315522814-18012009>if(
(p_udp_hdr->src_port != DHCP_PORT_CLIENT
||<BR> p_udp_hdr->dst_port != DHCP_PORT_SERVER)
&&<BR> (p_udp_hdr->src_port != DHCP_PORT_SERVER
||<BR> p_udp_hdr->dst_port != DHCP_PORT_CLIENT)
)<BR> {<BR> /* Not a DHCP packet. */<BR> return
NDIS_STATUS_PENDING;<BR> }</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Index:
ipoib_port.c<BR>===================================================================<BR>---
ipoib_port.c (revision 3752)<BR>+++ ipoib_port.c (working copy)<BR>@@
-3763,6 +3763,15 @@<BR> p_udp_hdr =
(udp_hdr_t*)GetIpPayloadPtr(p_ip_hdr);<BR> }<BR> /* Get
the UDP header and check the destination port numbers.
*/<BR>+ <BR>+ if (p_ip_hdr->offset > 0) {<BR>+ /*
This is a fragmented part of UDP packet<BR>+ * Only first packet
will contain UDP header in such case<BR>+ * So, return if offset
> 0<BR>+ */<BR>+ return
NDIS_STATUS_PENDING;<BR>+ }<BR>+ <BR> if( buf_len
< sizeof(udp_hdr_t) )<BR> {<BR> IPOIB_PRINT_EXIT(
TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR</FONT></DIV></BODY></HTML>