@@ -622,6 +622,10 @@ void osm_dump_sa_mad(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_smp,
void osm_dump_sa_mad_v2(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_smp,
IN const int file_id, IN osm_log_level_t level);
+void osm_dump_dr_path_as_buf(IN size_t max_len, IN const osm_dr_path_t * p_path,
+ OUT char* buf);
+
+
/****f* IBA Base: Types/osm_get_sm_signal_str
* NAME
* osm_get_sm_signal_str
@@ -65,6 +65,7 @@ OPENSM_1.5 {
osm_dump_sa_mad_v2;
osm_dump_dr_path;
osm_dump_dr_path_v2;
+ osm_dump_dr_path_as_buf;
osm_dump_smp_dr_path;
osm_dump_smp_dr_path_v2;
osm_dump_pkey_block;
@@ -2875,6 +2875,13 @@ void osm_dump_smp_dr_path_v2(IN osm_log_t * p_log, IN const ib_smp_t * p_smp,
}
}
+void osm_dump_dr_path_as_buf(IN size_t max_len,
+ IN const osm_dr_path_t * p_path,
+ OUT char* buf)
+{
+ sprint_uint8_arr(buf, max_len, p_path->path, p_path->hop_count + 1);
+}
+
static const char *sm_signal_str[] = {
"OSM_SIGNAL_NONE", /* 0 */
"OSM_SIGNAL_SWEEP", /* 1 */
@@ -364,6 +364,9 @@ static void trap_rcv_process_request(IN osm_sm_t * sm,
boolean_t physp_change_trap = FALSE;
uint64_t event_wheel_timeout = OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT;
boolean_t run_heavy_sweep = FALSE;
+ char buf[1024];
+ osm_dr_path_t *p_path;
+ unsigned n;
OSM_LOG_ENTER(sm->p_log);
@@ -555,6 +558,26 @@ static void trap_rcv_process_request(IN osm_sm_t * sm,
}
check_sweep:
+ if (osm_log_is_active_v2(sm->p_log, OSM_LOG_INFO, FILE_ID)) {
+ if (ib_notice_is_generic(p_ntci) &&
+ cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == SM_LINK_STATE_CHANGED_TRAP) {
+ p_path = osm_physp_get_dr_path_ptr(p_physp);
+ if (p_path) {
+ n = sprintf(buf, "SM class trap %u: ",
+ cl_ntoh16(p_ntci->g_or_v.generic.trap_num));
+ n += snprintf(buf + n, sizeof(buf) - n,
+ "Directed Path Dump of %u hop path: "
+ "Path = ", p_path->hop_count);
+
+ osm_dump_dr_path_as_buf(sizeof(buf) - n, p_path,
+ buf + n);
+
+ osm_log_v2(sm->p_log, OSM_LOG_INFO, FILE_ID,
+ "%s\n", buf);
+ }
+ }
+ }
+
/* do a sweep if we received a trap */
if (sm->p_subn->opt.sweep_on_trap) {
/* if this is trap number 128 or run_heavy_sweep is TRUE -
So can see if any subsequent transaction timeouts are related Signed-off-by: Hal Rosenstock <hal@mellanox.com> --- -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html