<!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.16587" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=076290012-08032009><FONT face=Arial color=#0000ff 
size=2>Applied on 2016.</FONT></SPAN></DIV>
<DIV><SPAN class=076290012-08032009><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=076290012-08032009><FONT face=Arial color=#0000ff 
size=2>Thanks</FONT></SPAN></DIV>
<DIV><SPAN class=076290012-08032009><FONT face=Arial color=#0000ff 
size=2>Tzachi</FONT></SPAN></DIV><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> ofw-bounces@lists.openfabrics.org 
  [mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Tzachi 
  Dar<BR><B>Sent:</B> Monday, March 02, 2009 4:03 PM<BR><B>To:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> [ofw] patch: allow dhcp to work 
  also when the guids are not matchedby the GUID to Mac 
  algorithm<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV><FONT face=Arial size=2><SPAN class=386545113-02032009>This patch allows 
  DHCP to also work with an arbitrary GUID.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN class=386545113-02032009>Please note that 
  this patch doesn't change the client identifier that is being transferred on 
  the wire.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN class=386545113-02032009>What it does is 
  change the client identifier that is being passed to windows. Instead of 
  passing the Mac address that we have been able to create from the GUID, it 
  passes the GUID itself (which is always unique). Please note that for guids 
  that didn't pass our algorithm we used to pass a number that could change from 
  time to time. Now we pass the GUID itself which remains after 
  reboots.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN class=386545113-02032009>Patch was tested 
  on 2003 and 2008.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN class=386545113-02032009>One thing that I 
  have found out was that in the function __send_mgr_filter_dhcp there was one 
  case in which windows was sending us a client id which is not in the format 
  that we have expected. I'm not sure if our handling of this is correct, and I 
  have marked this with an assert to see if it ever happens.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009>Thanks</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009>Tzachi</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=386545113-02032009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN class=386545113-02032009>Index: 
  ipoib_port.c<BR>===================================================================<BR>--- 
  ipoib_port.c (revision 4004)<BR>+++ ipoib_port.c (working 
  copy)<BR>@@ -2219,7 +2219,6 
  @@<BR>  dhcp_pkt_t   *p_dhcp;<BR>  uint8_t    *p_option;<BR>  uint8_t    *p_cid 
  = 
  NULL;<BR>- ib_gid_t   gid;<BR>  uint8_t    msg 
  = 0;<BR> <BR>  IPOIB_ENTER( IPOIB_DBG_RECV );<BR>@@ -2340,18 
  +2339,14 @@<BR>    * accesses to the 
  contents.<BR>    * Recover CID to standard 
  type.<BR>    */<BR>-  cl_memcpy( &gid, 
  &p_cid[7], sizeof(ib_gid_t) );<BR>-  p_cid[1] =  
  HW_ADDR_LEN +1;// CID length <BR>-  p_cid[2] =  
  DHCP_HW_TYPE_ETH;// CID type <BR>-  status = ipoib_mac_from_guid( 
  gid.unicast.interface_id, p_port->p_adapter->params.guid_mask, 
  (mac_addr_t*)&p_cid[3] );<BR>-  if (status == 
  IB_INVALID_GUID_MASK)<BR>-  {<BR>-   IPOIB_PRINT( 
  TRACE_LEVEL_WARNING, IPOIB_DBG_ERROR,<BR>-    ("Invalid 
  GUID mask received, rejecting it") 
  );<BR>-   ipoib_create_log(p_port->p_adapter->h_adapter, 
  GUID_MASK_LOG_INDEX, 
  EVENT_IPOIB_WRONG_PARAMETER_WRN);<BR>-   status = 
  IB_SUCCESS;<BR>-  }<BR>-  p_cid[HW_ADDR_LEN + 3] = 
  DHCP_OPT_END; //terminate 
  tag<BR>+<BR>+  CL_ASSERT(sizeof(ib_net64_t) == 
  8);<BR>+<BR>+  p_cid[1] =  sizeof (ib_net64_t) + 1;// CID 
  length <BR>+  p_cid[2] =  DHCP_HW_TYPE_ETH;// CID 
  type<BR>+  RtlMoveMemory( &p_cid[3], &p_cid[15], sizeof 
  (ib_net64_t) );<BR>+  RtlFillMemory(&p_cid[11], 12, 
  0);<BR>+  p_cid[sizeof (ib_net64_t) + 3] = DHCP_OPT_END; //terminate 
  tag <BR>  }<BR>  IPOIB_EXIT( IPOIB_DBG_RECV 
  );<BR>  return status;<BR>@@ -3613,6 +3608,7 
  @@<BR>    }<BR>    else<BR>    {<BR>+    ASSERT(FALSE); 
  // Do we ever reach here? does it work 
  correct?<BR>     p_cid[2] = 
  DHCP_HW_TYPE_IB;<BR>    }<BR>   }<BR></SPAN></FONT></DIV></BLOCKQUOTE></BODY></HTML>