<!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=536562916-25122008><FONT face=Arial color=#0000ff 
size=2>applied on 1802.</FONT></SPAN></DIV>
<DIV><SPAN class=536562916-25122008><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=536562916-25122008><FONT face=Arial color=#0000ff 
size=2>Thanks</FONT></SPAN></DIV>
<DIV><SPAN class=536562916-25122008><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> Reuven Amitai <BR><B>Sent:</B> Sunday, 
  December 07, 2008 4:20 PM<BR><B>To:</B> Tzachi Dar<BR><B>Cc:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> [PATCH] IPoIB - add guid2mac 
  table<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2>Hi,</FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff size=2>The 
  following patch adds guid2mac table to ipoib_xfr_mgr 
files.</FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff size=2>The 
  idea is to have one table which holds all GUIDs with their guid mask used 
  in the GUID to MAC transformation.</FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff size=2>The 
  code will replace almost all if sections with one loop over the 
  table.</FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2>Another advantage is in future addition of GUIDs, one need only to add 
  a row in the table (The OUI bytes and the corresponding guid 
  mask)</FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2>Please note that Mellanox, SST and Voltaire GUIDs are not in the 
  table (the current transformation can't be represented by guid 
  mask)</FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2>SuperMicro, Cisco, HP and DELL GUIDs moved to the 
  table.</FONT></SPAN></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><EM><SPAN 
  class=285295713-07122008></SPAN></EM></FONT> </DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><EM>Thanks, 
  Reuven.</EM></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></FONT></SPAN></DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2></FONT></SPAN> </DIV>
  <DIV><SPAN class=285295713-07122008><FONT face=Arial color=#0000ff 
  size=2>Index: 
  ulp/ipoib/kernel/ipoib_xfr_mgr.c<BR>===================================================================<BR>--- 
  ulp/ipoib/kernel/ipoib_xfr_mgr.c (revision 0)<BR>+++ 
  ulp/ipoib/kernel/ipoib_xfr_mgr.c (revision 0)<BR>@@ -0,0 +1,52 
  @@<BR>+/*<BR>+ * Copyright (c) 2008 Mellanox Technologies.  All rights 
  reserved.<BR>+ *<BR>+ * This software is available to you under the OpenIB.org 
  BSD license<BR>+ * below:<BR>+ *<BR>+ *     Redistribution 
  and use in source and binary forms, with or<BR>+ *     
  without modification, are permitted provided that the following<BR>+ 
  *     conditions are met:<BR>+ *<BR>+ 
  *      - Redistributions of source code must retain 
  the above<BR>+ *        copyright notice, 
  this list of conditions and the following<BR>+ 
  *        disclaimer.<BR>+ *<BR>+ 
  *      - Redistributions in binary form must 
  reproduce the above<BR>+ *        copyright 
  notice, this list of conditions and the following<BR>+ 
  *        disclaimer in the documentation 
  and/or other materials<BR>+ *        
  provided with the distribution.<BR>+ *<BR>+ * THE SOFTWARE IS PROVIDED "AS 
  IS", WITHOUT WARRANTY OF ANY KIND,<BR>+ * EXPRESS OR IMPLIED, INCLUDING BUT 
  NOT LIMITED TO THE WARRANTIES OF<BR>+ * MERCHANTABILITY, FITNESS FOR A 
  PARTICULAR PURPOSE AND<BR>+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS 
  OR COPYRIGHT HOLDERS<BR>+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
  LIABILITY, WHETHER IN AN<BR>+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
  FROM, OUT OF OR IN<BR>+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  DEALINGS IN THE<BR>+ * SOFTWARE.<BR>+ *<BR>+ * $Id: ipoib_xfr_mgr.c 3459 
  2008-11-12 16:48:21Z tzachid $<BR>+ */<BR>+<BR>+<BR>+#include 
  "ipoib_xfr_mgr.h"<BR>+#if defined(EVENT_TRACING)<BR>+#ifdef 
  offsetof<BR>+#undef offsetof<BR>+#endif<BR>+#include 
  "ipoib_xfr_mgr.tmh"<BR>+#endif<BR>+<BR>+<BR>+const 
  ipoib_guid2mac_translation_t guid2mac_table[] = {<BR>+ {0x30, 0x48, 
  0xE7},<BR>+ {0x05, 0xAD, 0xE7},<BR>+ {0x18, 0x8B, 
  0xE7},<BR>+ {0x1A, 0x4B, 0xE7},<BR>+ {0x17, 0x08, 
  0xE7},<BR>+ {0x1E, 0x0B, 0xE7},<BR>+<BR>+ {0x00, 0x00, 
  0x00},<BR>+};<BR>+<BR>Index: 
  ulp/ipoib/kernel/ipoib_xfr_mgr.h<BR>===================================================================<BR>--- 
  ulp/ipoib/kernel/ipoib_xfr_mgr.h (revision 1777)<BR>+++ 
  ulp/ipoib/kernel/ipoib_xfr_mgr.h (working copy)<BR>@@ -81,7 +81,39 
  @@<BR> *********/<BR> #include 
  <complib/cl_packoff.h><BR> <BR>+/****s* IPoIB 
  Driver/ipoib_guid2mac_translation_t<BR>+* NAME<BR>+*   
  ipoib_guid2mac_translation_t<BR>+*<BR>+* DESCRIPTION<BR>+*   The 
  ipoib_guid2mac_translation_t structure defines a GUID to MAC 
  translation.<BR>+*   The structure holds map between known OUI to an 
  appropriate GUID mask.<BR>+*<BR>+* SYNOPSIS<BR>+*/<BR>+typedef struct 
  _ipoib_guid2mac_translation_<BR>+{<BR>+ uint8_t 
  second_byte;<BR>+ uint8_t third_byte;<BR>+ uint8_t 
  guid_mask;<BR>+ <BR>+} ipoib_guid2mac_translation_t;<BR>+/*<BR>+* 
  FIELDS<BR>+* second_byte<BR>+*  second byte of OUI (located in 
  lower three bytes of GUID).<BR>+*<BR>+* third_byte<BR>+*  third 
  byte of OUI (located in lower three bytes of 
  GUID).<BR>+*<BR>+* guid_mask<BR>+*  GUID mask that will be used 
  to generate MAC from the GUID.      <BR>+*<BR>+* SEE 
  ALSO<BR>+* IPoIB, 
  ipoib_mac_from_guid_mask<BR>+*********/<BR> <BR>+extern const 
  ipoib_guid2mac_translation_t guid2mac_table[];<BR> <BR> #ifdef 
  __cplusplus<BR> extern "C"<BR>@@ -363,10 +395,9 
  @@<BR>   OUT   mac_addr_t* 
  const   p_mac_addr<BR>   )<BR> {<BR>- static 
  const uint32_t guid_default_mask = 0xE7; //==0b 
  11100111<BR>  ib_api_status_t status = 
  IB_INVALID_GUID;<BR>  const uint8_t *p_guid = (const 
  uint8_t*)&port_guid;<BR>- uint32_t  laa;<BR>+ uint32_t  laa, 
  idx = 0;<BR> <BR>  /* Port guid is in network byte order.  
  OUI is in lower 3 bytes. */<BR>  if( p_guid[0] == 0 )<BR>@@ -379,33 
  +410,26 @@<BR>   {<BR>    status = 
  ipoib_mac_from_voltaire_guid( port_guid, p_mac_addr 
  );<BR>   }<BR>-  else if( p_guid[1] == 0x30 
  && p_guid[2] == 0x48 
  )<BR>-  {<BR>-   //Supermicro 
  GUID<BR>-   status =ipoib_mac_from_guid_mask( p_guid, 
  guid_default_mask, p_mac_addr );<BR>-  }<BR>-  else if( 
  p_guid[1] == 0x05 && p_guid[2] == 0xad 
  )<BR>-  {<BR>-   //Cisco 
  GUID<BR>-   status =ipoib_mac_from_guid_mask( p_guid, 
  guid_default_mask, p_mac_addr );<BR>-  }<BR>   else 
  if( p_guid[1] == 0x06 && p_guid[2] == 0x6a 
  )<BR>   {<BR>    status = 
  ipoib_mac_from_sst_guid( port_guid, p_mac_addr 
  );<BR>   }<BR>-  else if( p_guid[1] == 0x1a 
  && p_guid[2] == 0x4b ||<BR>-     p_guid[1] == 0x17 
  && p_guid[2] == 0x08 ||<BR>-     p_guid[1] == 0x1e 
  && p_guid[2] == 0x0b 
  )<BR>+  else<BR>   {<BR>-   //HP 
  GUID<BR>-   status =ipoib_mac_from_guid_mask( p_guid, 
  guid_default_mask, p_mac_addr );<BR>+   while( 
  guid2mac_table[idx].second_byte != 0x00 
  ||<BR>+       guid2mac_table[idx].third_byte != 
  0x00 )<BR>+   {<BR>+    if( p_guid[1] == 
  guid2mac_table[idx].second_byte 
  &&<BR>+     p_guid[2] == 
  guid2mac_table[idx].third_byte 
  )<BR>+    {<BR>+     status = 
  ipoib_mac_from_guid_mask(p_guid, 
  guid2mac_table[idx].guid_mask,<BR>+              p_mac_addr);<BR>+     break;<BR>+    }<BR>+    ++idx;<BR>+   }<BR>   }<BR>-  else 
  if( p_guid[1] == 0x18 && p_guid[2] == 0x8b 
  )<BR>-  {<BR>-   //DELL 
  GUID<BR>-   status =ipoib_mac_from_guid_mask( p_guid, 
  guid_default_mask, p_mac_addr 
  );<BR>-  }<BR>-  <BR>+<BR>   if( status == 
  IB_SUCCESS )<BR>    return 
  status;<BR>  }<BR>Index: 
  ulp/ipoib/kernel/SOURCES<BR>===================================================================<BR>--- 
  ulp/ipoib/kernel/SOURCES (revision 1777)<BR>+++ 
  ulp/ipoib/kernel/SOURCES (working copy)<BR>@@ -23,7 +23,8 
  @@<BR>   ipoib_adapter.c 
  \<BR>   ipoib_endpoint.c \<BR>   ipoib_port.c 
  \<BR>-  ipoib_ibat.c<BR>+  ipoib_ibat.c 
  \<BR>+  ipoib_xfr_mgr.c<BR> <BR> INCLUDES=..;..\..\..\inc;..\..\..\inc\kernel;<BR> <BR></FONT></SPAN></DIV></BLOCKQUOTE></BODY></HTML>