From: leonidk Date: Wed, 24 Sep 2008 17:40:50 +0000 (+0000) Subject: [IPoIB] This patch adds support for new GUID type. [mlnx: 3213-3214] X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=f9f894a464ba2ee87e76c4536ad0fa296debb0a2;p=~shefty%2Frdma-win.git [IPoIB] This patch adds support for new GUID type. [mlnx: 3213-3214] Signed-off by: Alexander Naslednikov git-svn-id: svn://openib.tc.cornell.edu/gen1@1604 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/ulp/ipoib/kernel/ipoib_xfr_mgr.h b/trunk/ulp/ipoib/kernel/ipoib_xfr_mgr.h index 96c1373b..02baee27 100644 --- a/trunk/ulp/ipoib/kernel/ipoib_xfr_mgr.h +++ b/trunk/ulp/ipoib/kernel/ipoib_xfr_mgr.h @@ -231,6 +231,49 @@ ipoib_mac_from_mlx_guid( return IB_SUCCESS; } + +/****f* IPOIB/ipoib_mac_from_dell_guid +* NAME +* ipoib_mac_from_dell_guid +* +* DESCRIPTION +* Generates an ethernet MAC address given a DELL port GUID. +* +* SYNOPSIS +*/ +static inline ib_api_status_t +ipoib_mac_from_dell_guid( + IN const net64_t port_guid, + OUT mac_addr_t* const p_mac_addr ) +{ + const uint8_t *p_guid = (const uint8_t*)&port_guid; + + /* Port guid is in network byte order. OUI is in lower 3 bytes. */ + ASSERT( p_guid[0] == 0x00 && p_guid[1] == 0x18 && p_guid[2] == 0x8b ); + + p_mac_addr->addr[0] = p_guid[0]; + p_mac_addr->addr[1] = p_guid[1]; + p_mac_addr->addr[2] = p_guid[2]; + p_mac_addr->addr[3] = p_guid[5]; + p_mac_addr->addr[4] = p_guid[6]; + p_mac_addr->addr[5] = p_guid[7]; + + return IB_SUCCESS; +} +/* +* PARAMETERS +* port_guid +* The port GUID, in network byte order, for which to generate a +* MAC address. +* +* p_mac_addr +* Pointer to a mac address in which to store the results. +* +* RETURN VALUES +* IB_SUCCESS +* The MAC address was successfully converted. +* +*********/ /* * PARAMETERS * port_guid @@ -444,6 +487,12 @@ ipoib_mac_from_guid( if( status == IB_SUCCESS ) return IB_SUCCESS; } + else if( p_guid[1] == 0x18 && p_guid[2] == 0x8b ) + { + status = ipoib_mac_from_dell_guid( port_guid, p_mac_addr ); + if( status == IB_SUCCESS ) + return IB_SUCCESS; + } } /* Value of zero is reserved. */