Lines Matching +full:smi +full:- +full:based

2  * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.
3 * Copyright (c) 2002-2007 Mellanox Technologies LTD. All rights reserved.
4 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
17 * - Redistributions of source code must retain the above
21 * - Redistributions in binary form must reproduce the above
89 osm_port_t *p_port = osm_get_port_by_lid(sm->p_subn, lid); in get_physp_by_lid_and_num()
93 if (osm_node_get_num_physp(p_port->p_node) <= num) in get_physp_by_lid_and_num()
96 return osm_node_get_physp_ptr(p_port->p_node, num); in get_physp_by_lid_and_num()
107 OSM_LOG_ENTER(sm->p_log); in aging_tracker_callback()
110 /* We got an exit flag - do nothing */ in aging_tracker_callback()
116 CL_PLOCK_ACQUIRE(sm->p_lock); in aging_tracker_callback()
120 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in aging_tracker_callback()
124 /* If the health port was false - set it to true */ in aging_tracker_callback()
126 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in aging_tracker_callback()
134 CL_PLOCK_RELEASE(sm->p_lock); in aging_tracker_callback()
135 OSM_LOG_EXIT(sm->p_log); in aging_tracker_callback()
137 /* We want to remove the event from the tracker - so in aging_tracker_callback()
152 uint32_t crc = -1L; in trap_calc_crc32()
164 for (j = 8; j > 0; j--) in trap_calc_crc32()
174 crc = -1L; in trap_calc_crc32()
176 while (count-- != 0) { in trap_calc_crc32()
225 if (p->p_remote_physp && in disable_port()
226 p->dr_path.hop_count > p->p_remote_physp->dr_path.hop_count) in disable_port()
227 p = p->p_remote_physp; in disable_port()
232 memcpy(payload, &p->port_info, sizeof(ib_port_info_t)); in disable_port()
239 context.pi_context.node_guid = osm_node_get_node_guid(p->p_node); in disable_port()
245 if (osm_node_get_type(p->p_node) == IB_NODE_TYPE_SWITCH && in disable_port()
247 physp0 = osm_node_get_physp_ptr(p->p_node, 0); in disable_port()
248 m_key = ib_port_info_get_m_key(&physp0->port_info); in disable_port()
250 m_key = ib_port_info_get_m_key(&p->port_info); in disable_port()
252 if (osm_node_get_type(p->p_node) != IB_NODE_TYPE_SWITCH) { in disable_port()
253 if (!pi->base_lid) { in disable_port()
254 p_port = osm_get_port_by_guid(sm->p_subn, in disable_port()
256 pi->base_lid = p_port->lid; in disable_port()
258 pi->master_sm_base_lid = sm->p_subn->sm_base_lid; in disable_port()
278 if ((p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_LINK_INTEGRITY_THRESHOLD_TRAP)) || in log_trap_info()
279 (p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_BUFFER_OVERRUN_THRESHOLD_TRAP)) || in log_trap_info()
280 (p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_WATCHDOG_TIMER_EXPIRED_TRAP))) in log_trap_info()
282 p_ntci->data_details.ntc_129_131.port_num); in log_trap_info()
291 cl_ntoh16(p_ntci->g_or_v.generic.trap_num), in log_trap_info()
292 ib_get_trap_str(p_ntci->g_or_v.generic.trap_num), in log_trap_info()
296 if ((p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_BAD_PKEY_TRAP)) || in log_trap_info()
297 (p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_BAD_QKEY_TRAP))) { in log_trap_info()
302 (p_ntci->g_or_v.generic.trap_num == CL_HTON16(257)) ? "P" : "Q", in log_trap_info()
303 cl_ntoh32(p_ntci->data_details.ntc_257_258.key), in log_trap_info()
304 cl_ntoh32(p_ntci->data_details.ntc_257_258.qp1) >> 28, in log_trap_info()
305 cl_ntoh16(p_ntci->data_details.ntc_257_258.lid1), in log_trap_info()
306 cl_ntoh32(p_ntci->data_details.ntc_257_258.qp1) & 0xfff, in log_trap_info()
307 cl_ntoh16(p_ntci->data_details.ntc_257_258.lid2), in log_trap_info()
308 cl_ntoh32(p_ntci->data_details.ntc_257_258.qp2)); in log_trap_info()
316 cl_ntoh16(p_ntci->g_or_v.vend.dev_id), in log_trap_info()
325 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3805: " in shutup_noisy_port()
328 return -1; in shutup_noisy_port()
333 if (sm->p_subn->opt.babbling_port_policy && num >= 250) { in shutup_noisy_port()
334 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in shutup_noisy_port()
340 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3811: " in shutup_noisy_port()
350 it is - then this is a first change of state. Run a heavy sweep. */ in shutup_noisy_port()
352 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in shutup_noisy_port()
383 OSM_LOG_ENTER(sm->p_log); in trap_rcv_process_request()
389 We got an exit flag - do nothing in trap_rcv_process_request()
396 if (p_madw->p_mad->mgmt_class == IB_MCLASS_SUBN_LID || in trap_rcv_process_request()
397 p_madw->p_mad->mgmt_class == IB_MCLASS_SUBN_DIR) in trap_rcv_process_request()
406 if (p_smp->method != IB_MAD_METHOD_TRAP) { in trap_rcv_process_request()
407 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3801: " in trap_rcv_process_request()
408 "Unsupported method 0x%X\n", p_smp->method); in trap_rcv_process_request()
418 memcpy(payload, &p_smp->data, IB_SMP_DATA_SIZE); in trap_rcv_process_request()
422 /* We are in smi flow */ in trap_rcv_process_request()
424 * When we receive a TRAP with dlid = 0 - it means it in trap_rcv_process_request()
428 if (p_madw->mad_addr.addr_type.smi.source_lid == 0) { in trap_rcv_process_request()
429 /* Check if the sm_base_lid is 0. If yes - this means in trap_rcv_process_request()
432 if (sm->p_subn->sm_base_lid == 0) { in trap_rcv_process_request()
433 OSM_LOG(sm->p_log, OSM_LOG_DEBUG, in trap_rcv_process_request()
437 OSM_LOG(sm->p_log, OSM_LOG_DEBUG, in trap_rcv_process_request()
439 cl_ntoh16(sm->p_subn->sm_base_lid)); in trap_rcv_process_request()
440 tmp_madw.mad_addr.addr_type.smi.source_lid = in trap_rcv_process_request()
441 sm->p_subn->sm_base_lid; in trap_rcv_process_request()
444 source_lid = tmp_madw.mad_addr.addr_type.smi.source_lid; in trap_rcv_process_request()
447 log_trap_info(sm->p_log, p_ntci, source_lid, p_smp->trans_id); in trap_rcv_process_request()
450 osm_dump_notice_v2(sm->p_log, p_ntci, FILE_ID, OSM_LOG_VERBOSE); in trap_rcv_process_request()
451 CL_PLOCK_ACQUIRE(sm->p_lock); in trap_rcv_process_request()
452 p_physp = osm_get_physp_by_mad_addr(sm->p_log, sm->p_subn, in trap_rcv_process_request()
455 p_smp->m_key = ib_port_info_get_m_key(&p_physp->port_info); in trap_rcv_process_request()
457 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3809: " in trap_rcv_process_request()
462 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3802: " in trap_rcv_process_request()
472 * we simply ignore it. This is done only if we are in smi mode in trap_rcv_process_request()
477 (p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_LINK_INTEGRITY_THRESHOLD_TRAP) || in trap_rcv_process_request()
478 p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_BUFFER_OVERRUN_THRESHOLD_TRAP) || in trap_rcv_process_request()
479 p_ntci->g_or_v.generic.trap_num == CL_HTON16(SM_WATCHDOG_TIMER_EXPIRED_TRAP))) { in trap_rcv_process_request()
480 /* If this is a trap 129, 130, or 131 - then this is a in trap_rcv_process_request()
485 /* The source_lid should be based on the source_lid from the trap */ in trap_rcv_process_request()
486 source_lid = p_ntci->data_details.ntc_129_131.lid; in trap_rcv_process_request()
487 port_num = p_ntci->data_details.ntc_129_131.port_num; in trap_rcv_process_request()
492 num_received = cl_event_wheel_num_regs(&sm->trap_aging_tracker, in trap_rcv_process_request()
498 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in trap_rcv_process_request()
511 else if (ret == 2) /* unhealthy - run sweep */ in trap_rcv_process_request()
520 /* If physp_change_trap is TRUE - then use a callback to unset in trap_rcv_process_request()
521 the healthy bit. If not - no need to use a callback. */ in trap_rcv_process_request()
523 cl_event_wheel_reg(&sm->trap_aging_tracker, trap_key, in trap_rcv_process_request()
527 cl_event_wheel_reg(&sm->trap_aging_tracker, trap_key, in trap_rcv_process_request()
534 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in trap_rcv_process_request()
543 if (cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == SM_LOCAL_CHANGES_TRAP && in trap_rcv_process_request()
544 p_ntci->data_details.ntc_144.local_changes & TRAP_144_MASK_OTHER_LOCAL_CHANGES && in trap_rcv_process_request()
545 p_ntci->data_details.ntc_144.change_flgs & TRAP_144_MASK_NODE_DESCRIPTION_CHANGE) { in trap_rcv_process_request()
546 OSM_LOG(sm->p_log, OSM_LOG_INFO, "Trap 144 Node description update\n"); in trap_rcv_process_request()
550 if (!(p_ntci->data_details.ntc_144.change_flgs & ~TRAP_144_MASK_NODE_DESCRIPTION_CHANGE) && in trap_rcv_process_request()
551 p_ntci->data_details.ntc_144.new_cap_mask == p_physp->port_info.capability_mask) in trap_rcv_process_request()
554 OSM_LOG(sm->p_log, OSM_LOG_ERROR, in trap_rcv_process_request()
558 } else if (cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == SM_SYS_IMG_GUID_CHANGED_TRAP) { in trap_rcv_process_request()
560 CL_PLOCK_RELEASE(sm->p_lock); in trap_rcv_process_request()
561 CL_PLOCK_EXCL_ACQUIRE(sm->p_lock); in trap_rcv_process_request()
562 p_physp = osm_get_physp_by_mad_addr(sm->p_log, in trap_rcv_process_request()
563 sm->p_subn, in trap_rcv_process_request()
567 p_physp->p_node->node_info.sys_guid = in trap_rcv_process_request()
568 p_ntci->data_details.ntc_145.new_sys_guid; in trap_rcv_process_request()
570 CL_PLOCK_RELEASE(sm->p_lock); in trap_rcv_process_request()
571 CL_PLOCK_ACQUIRE(sm->p_lock); in trap_rcv_process_request()
573 OSM_LOG(sm->p_log, OSM_LOG_ERROR, in trap_rcv_process_request()
580 if (osm_log_is_active_v2(sm->p_log, OSM_LOG_INFO, FILE_ID)) { in trap_rcv_process_request()
582 cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == SM_LINK_STATE_CHANGED_TRAP) { in trap_rcv_process_request()
587 cl_ntoh16(p_ntci->g_or_v.generic.trap_num)); in trap_rcv_process_request()
588 n += snprintf(buf + n, sizeof(buf) - n, in trap_rcv_process_request()
590 "Path = ", p_path->hop_count); in trap_rcv_process_request()
592 osm_dump_dr_path_as_buf(sizeof(buf) - n, p_path, in trap_rcv_process_request()
595 osm_log_v2(sm->p_log, OSM_LOG_INFO, FILE_ID, in trap_rcv_process_request()
602 if (sm->p_subn->opt.sweep_on_trap) { in trap_rcv_process_request()
603 /* if this is trap number 128 or run_heavy_sweep is TRUE - in trap_rcv_process_request()
605 Sweep also on traps 144 - these traps signal a change of in trap_rcv_process_request()
610 (cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == SM_LINK_STATE_CHANGED_TRAP || in trap_rcv_process_request()
611 cl_ntoh16(p_ntci->g_or_v.generic.trap_num) == SM_LOCAL_CHANGES_TRAP || in trap_rcv_process_request()
613 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in trap_rcv_process_request()
615 cl_ntoh16(p_ntci->g_or_v.generic.trap_num)); in trap_rcv_process_request()
617 sm->p_subn->force_heavy_sweep = TRUE; in trap_rcv_process_request()
622 /* If we reached here due to trap 129/130/131 - do not need to do in trap_rcv_process_request()
629 /* We are going to report the notice - so need to fix the IssuerGID in trap_rcv_process_request()
633 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3806: " in trap_rcv_process_request()
638 memcpy(&p_ntci->issuer_gid, in trap_rcv_process_request()
643 p_port = osm_get_port_by_lid(sm->p_subn, source_lid); in trap_rcv_process_request()
645 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE, in trap_rcv_process_request()
652 p_ntci->issuer_gid.unicast.prefix = in trap_rcv_process_request()
653 sm->p_subn->opt.subnet_prefix; in trap_rcv_process_request()
654 p_ntci->issuer_gid.unicast.interface_id = p_port->guid; in trap_rcv_process_request()
658 status = osm_report_notice(sm->p_log, sm->p_subn, p_ntci); in trap_rcv_process_request()
660 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 3803: " in trap_rcv_process_request()
667 CL_PLOCK_RELEASE(sm->p_lock); in trap_rcv_process_request()
669 OSM_LOG_EXIT(sm->p_log); in trap_rcv_process_request()
678 OSM_LOG_ENTER(sm->p_log); in osm_trap_rcv_process()
688 OSM_LOG_EXIT(sm->p_log); in osm_trap_rcv_process()