]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[IPoIB]
authorAlex Naslednikov <alex@mellanox.co.il>
Tue, 14 Sep 2010 09:26:45 +0000 (09:26 +0000)
committerAlex Naslednikov <alex@mellanox.co.il>
Tue, 14 Sep 2010 09:26:45 +0000 (09:26 +0000)
Removing the patch for the bug when NDIS sends OID_GEN_NETWORK_LAYER_ADDRESSES with the list of new addresses with invalid formatting from IPoIB based on NDIS5.

This patch is relevant only for Windows 2008 R2

git-svn-id: svn://openib.tc.cornell.edu/gen1@2923 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

trunk/ulp/ipoib/kernel/ipoib_driver.c

index 5a27df6588e883369ac1f0b25c90209c32fb8494..826f5a52e2caa875ba6028e7a87376a96fa680d5 100644 (file)
@@ -2203,29 +2203,29 @@ __ipoib_set_net_addr(
                        cl_vector_get_ptr( &p_adapter->ip_vector, idx );\r
                p_net_addr_oid = (PNETWORK_ADDRESS)p_net_addrs->Address;\r
 \r
-               for( i = 0; i < p_net_addrs->AddressCount; ++i )\r
+               for( i = 0; i < p_net_addrs->AddressCount; ++i, p_net_addr_oid =\r
+                       (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
+                       FIELD_OFFSET(NETWORK_ADDRESS, Address) +\r
+                       p_net_addr_oid->AddressLength) )\r
                {\r
 \r
-                       // Here we check that the data stored at 'AddressLength' field is valid;\r
-                       // otherwise, it can lead to a memory violation (happened when AddressCount was > 1)\r
+                       if( p_net_addr_oid->AddressType != NDIS_PROTOCOL_ID_TCP_IP )\r
+                       {\r
+                               IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_OID,\r
+                                       ("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong type of 0x%.4X, "\r
+                                               "should be 0x%.4X\n", port_num, i, p_net_addr_oid->AddressType,\r
+                                               NDIS_PROTOCOL_ID_TCP_IP));\r
+                               continue;\r
+                       }\r
+\r
                        if( p_net_addr_oid->AddressLength != NETWORK_ADDRESS_LENGTH_IP)\r
                        {\r
-                               IPOIB_PRINT(TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,\r
+                               IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_OID,\r
                                        ("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong size of %d, "\r
                                                "should be %d\n", port_num, i, p_net_addr_oid->AddressLength,\r
                                                NETWORK_ADDRESS_LENGTH_IP));\r
-                               ASSERT ( p_net_addr_oid->AddressLength == NETWORK_ADDRESS_LENGTH_IPX );\r
-                               break;\r
+                               continue;\r
                        }\r
-\r
-                       ASSERT( p_net_addr_oid->AddressType == NDIS_PROTOCOL_ID_TCP_IP );\r
-                       \r
-                       p_net_addr_oid = (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
-                                                               FIELD_OFFSET(NETWORK_ADDRESS, Address) +\r
-                                                               p_net_addr_oid->AddressLength) ;\r
-\r
-                       \r
-\r
                        p_ip_addr = (PNETWORK_ADDRESS_IP)p_net_addr_oid->Address;\r
                        if( !cl_memcmp( &p_ip_addr->in_addr,\r
                                &p_addr_item->address.as_ulong, sizeof(ULONG) ) )\r
@@ -2265,37 +2265,36 @@ __ipoib_set_net_addr(
        /* Now look for new addresses */\r
        p_net_addr_oid = (NETWORK_ADDRESS *)p_net_addrs->Address;\r
        idx = 0;\r
-       \r
-       for( i = 0; i < p_net_addrs->AddressCount; ++i )\r
+       for( i = 0; i < p_net_addrs->AddressCount; i++, p_net_addr_oid =\r
+               (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
+               FIELD_OFFSET(NETWORK_ADDRESS, Address) + p_net_addr_oid->AddressLength) )\r
        {\r
 \r
-               // Here we check that the data stored at 'AddressLength' field is valid;\r
-               // otherwise, it can lead to a memory violation (happened when AddressCount was > 1)\r
+               if( p_net_addr_oid->AddressType != NDIS_PROTOCOL_ID_TCP_IP )\r
+               {\r
+                       IPOIB_PRINT(TRACE_LEVEL_INFORMATION, IPOIB_DBG_OID,\r
+                               ("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong type of 0x%.4X, "\r
+                                       "should be 0x%.4X\n", port_num, i, p_net_addr_oid->AddressType,\r
+                                       NDIS_PROTOCOL_ID_TCP_IP));\r
+                       continue;\r
+               }\r
+\r
                if( p_net_addr_oid->AddressLength != NETWORK_ADDRESS_LENGTH_IP)\r
                {\r
-                       IPOIB_PRINT(TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,\r
+                       IPOIB_PRINT(TRACE_LEVEL_INFORMATION, IPOIB_DBG_OID,\r
                                ("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong size of %d, "\r
                                        "should be %d\n", port_num, i, p_net_addr_oid->AddressLength,\r
                                        NETWORK_ADDRESS_LENGTH_IP));\r
-                       ASSERT ( p_net_addr_oid->AddressLength == NETWORK_ADDRESS_LENGTH_IPX );\r
-                       break;\r
-                       \r
+                       continue;\r
                }\r
-               \r
-               ASSERT( p_net_addr_oid->AddressType == NDIS_PROTOCOL_ID_TCP_IP );\r
-               \r
-               p_net_addr_oid = (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
-                                                       FIELD_OFFSET(NETWORK_ADDRESS, Address) +\r
-                                                       p_net_addr_oid->AddressLength) ;\r
-               \r
-               \r
+\r
                p_ip_addr = (PNETWORK_ADDRESS_IP)p_net_addr_oid->Address;\r
 \r
                /* Size the vector as needed. */\r
                if( cl_vector_get_size( &p_adapter->ip_vector ) <= idx )\r
                        cl_vector_set_size( &p_adapter->ip_vector, idx + 1 );\r
 \r
-               p_addr_item = (net_address_item_t *) cl_vector_get_ptr( &p_adapter->ip_vector, idx );\r
+               p_addr_item = cl_vector_get_ptr( &p_adapter->ip_vector, idx );\r
                if( !cl_memcmp( &p_ip_addr->in_addr, &p_addr_item->address.as_ulong,\r
                        sizeof(ULONG) ) )\r
                {\r