]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[ipoib] here are the changes mistakenly made in the trunk rev. 1547-1549
authoraestrin <aestrin@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 5 Sep 2008 15:57:43 +0000 (15:57 +0000)
committeraestrin <aestrin@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 5 Sep 2008 15:57:43 +0000 (15:57 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1@1552 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/ipoib_cm/kernel/ipoib_driver.h
branches/ipoib_cm/kernel/ipoib_xfr_mgr.h

index 81f17f887695e2021d980f7c39fcf39bc0046b87..0660f59313ace95f057f7246d01721cd85b767bc 100644 (file)
@@ -47,8 +47,8 @@
  */\r
 #define MAX_BUNDLE_ID_LENGTH   32\r
 \r
-\r
-#define IB_MTU                 2048\r
+/* MLX4 supports 4K MTU */\r
+#define IB_MTU                 4096\r
 /*\r
  * Header length as defined by IPoIB spec:\r
  * http://www.ietf.org/internet-drafts/draft-ietf-ipoib-ip-over-infiniband-04.txt\r
@@ -143,4 +143,13 @@ void
 ipoib_resume_oids(\r
        IN                              ipoib_adapter_t* const          p_adapter );\r
 \r
+#define IPOIB_OFFSET(field)   ((UINT)FIELD_OFFSET(ipoib_params_t,field))\r
+#define IPOIB_SIZE(field)     sizeof(((ipoib_params_t*)0)->field)\r
+#define IPOIB_INIT_NDIS_STRING(str)                        \\r
+    (str)->Length = 0;                                  \\r
+    (str)->MaximumLength = 0;                           \\r
+    (str)->Buffer = NULL;\r
+\r
+\r
+\r
 #endif /* _IPOIB_DRIVER_H_ */\r
index 435894a3187c8c7536cb160054b35892fb32a92f..e47758147eb893f2fb6e277950841c97872e2f39 100644 (file)
@@ -47,6 +47,7 @@
 #include "ip_stats.h"\r
 #include <ip_packet.h>\r
 \r
+\r
 #include <complib/cl_packon.h>\r
 /****s* IPoIB Driver/ipoib_hw_addr_t\r
 * NAME\r
@@ -218,19 +219,22 @@ ipoib_mac_from_mlx_guid(
 {\r
        const uint8_t   *p_guid = (const uint8_t*)&port_guid;\r
        uint32_t                low24;\r
+       net16_t                 guid_middle;\r
 \r
        /* Port guid is in network byte order.  OUI is in lower 3 bytes. */\r
        ASSERT( p_guid[0] == 0x00 && p_guid[1] == 0x02 && p_guid[2] == 0xc9 );\r
 \r
-       if( (port_guid & CL_HTON64( 0x000000ffff000000 )) !=\r
-               CL_HTON64(0x0000000200000000))\r
-       {\r
+       guid_middle = (net16_t)((port_guid & CL_HTON64( 0x000000ffff000000 )) >>24);\r
+\r
+       if (guid_middle == 2) {\r
+                       p_mac_addr->addr[0] = 0;\r
+       } else if (guid_middle == 3) {\r
+                       p_mac_addr->addr[0] = 2;\r
+       } else {\r
                return IB_INVALID_GUID;\r
        }\r
-\r
        low24 = ((uint32_t)cl_ntoh64( port_guid ) & 0x00FFFFFF);\r
 \r
-       p_mac_addr->addr[0] = p_guid[0];\r
        p_mac_addr->addr[1] = p_guid[1];\r
        p_mac_addr->addr[2] = p_guid[2];\r
        p_mac_addr->addr[3] = (uint8_t)(low24 >> 16);\r
@@ -348,6 +352,34 @@ ipoib_mac_from_cisco_guid(
        return IB_SUCCESS;\r
 }\r
 \r
+/****f* IPOIB/ipoib_mac_from_hp_guid\r
+* NAME\r
+*      ipoib_mac_from_hp_guid\r
+*\r
+* DESCRIPTION\r
+*      Generates an ethernet MAC address given a HP port GUID.\r
+*\r
+* SYNOPSIS\r
+*/\r
+static inline ib_api_status_t\r
+ipoib_mac_from_hp_guid(\r
+       IN              const   net64_t                                         port_guid,\r
+               OUT                     mac_addr_t* const                       p_mac_addr )\r
+{\r
+       const uint8_t   *p_guid = (const uint8_t*)&port_guid;\r
+\r
+       /* Port guid is in network byte order.  OUI is in lower 3 bytes. */\r
+       ASSERT( p_guid[0] == 0x00 && p_guid[1] == 0x1a && p_guid[2] == 0x4b);\r
+\r
+       p_mac_addr->addr[0] = 0;\r
+       p_mac_addr->addr[1] = 0x1a;\r
+       p_mac_addr->addr[2] = 0x4b; \r
+       p_mac_addr->addr[3] = p_guid[5];\r
+       p_mac_addr->addr[4] = p_guid[6];\r
+       p_mac_addr->addr[5] = p_guid[7];\r
+\r
+       return IB_SUCCESS;\r
+}\r
 \r
 /*\r
 * PARAMETERS\r
@@ -418,8 +450,14 @@ ipoib_mac_from_guid(
                        if( status == IB_SUCCESS )\r
                                return IB_SUCCESS;\r
                }\r
-               \r
+               else if( p_guid[1] == 0x1a && p_guid[2] == 0x4b )\r
+               {\r
+                       status = ipoib_mac_from_hp_guid( port_guid, p_mac_addr );\r
+                       if( status == IB_SUCCESS )\r
+                               return IB_SUCCESS;\r
+               }\r
        }\r
+\r
        /* Value of zero is reserved. */\r
        laa = cl_atomic_inc( &g_ipoib.laa_idx );\r
 \r
@@ -616,6 +654,7 @@ ipoib_is_voltaire_router_gid(
                sizeof(VOLTAIRE_GUID_PREFIX) );\r
 }\r
 \r
+\r
 #ifdef __cplusplus\r
 }\r
 #endif\r