Only update min_sw_data_vls when peer port is another switch port

Signed-off-by: Hal Rosenstock <[email protected]>
---
diff --git a/opensm/osm_port_info_rcv.c b/opensm/osm_port_info_rcv.c
index 84f9fb1..2ea35b8 100644
--- a/opensm/osm_port_info_rcv.c
+++ b/opensm/osm_port_info_rcv.c
@@ -327,16 +327,22 @@ static void pi_rcv_process_switch_port(IN osm_sm_t * sm, 
IN osm_node_t * p_node,
                if (ib_port_info_get_port_state(p_pi) == IB_LINK_DOWN)
                        goto Exit;
 
-               data_vls = 1U << (ib_port_info_get_op_vls(p_pi) - 1);
-               if (data_vls >= IB_MAX_NUM_VLS)
-                       data_vls = IB_MAX_NUM_VLS - 1;
-               if ((uint8_t)data_vls < sm->p_subn->min_sw_data_vls) {
-                       OSM_LOG(sm->p_log, OSM_LOG_VERBOSE,
-                               "Setting switch port minimal data VLs to:%u 
defined by node:0x%"
-                               PRIx64 ", port:%u\n", data_vls,
-                               cl_ntoh64(osm_node_get_node_guid(p_node)),
-                               port_num);
-                       sm->p_subn->min_sw_data_vls = data_vls;
+               p_remote_physp = osm_physp_get_remote(p_physp);
+               if (p_remote_physp) {
+                       p_remote_node = osm_physp_get_node_ptr(p_remote_physp);
+                       if (p_remote_node->sw) {
+                               data_vls = 1U << (ib_port_info_get_op_vls(p_pi) 
- 1);
+                               if (data_vls >= IB_MAX_NUM_VLS)
+                                       data_vls = IB_MAX_NUM_VLS - 1;
+                               if ((uint8_t)data_vls < 
sm->p_subn->min_sw_data_vls) {
+                                       OSM_LOG(sm->p_log, OSM_LOG_VERBOSE,
+                                               "Setting switch port minimal 
data VLs to:%u defined by node:0x%"
+                                               PRIx64 ", port:%u\n", data_vls,
+                                               
cl_ntoh64(osm_node_get_node_guid(p_node)),
+                                               port_num);
+                                       sm->p_subn->min_sw_data_vls = data_vls;
+                               }
+                       }
                }
        }
 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to