Lines Matching refs:p_vend

78 	osm_vendor_t *p_vend;
91 osm_vendor_t *p_vend;
95 static void osm_vendor_close_port(osm_vendor_t * const p_vend);
97 static void clear_madw(osm_vendor_t * p_vend)
102 OSM_LOG_ENTER(p_vend->p_log);
103 pthread_mutex_lock(&p_vend->match_tbl_mutex);
104 for (m = p_vend->mtbl.tbl, e = m + p_vend->mtbl.max; m < e; m++) {
112 pthread_mutex_unlock(&p_vend->match_tbl_mutex);
113 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5401: "
119 pthread_mutex_unlock(&p_vend->match_tbl_mutex);
122 OSM_LOG_EXIT(p_vend->p_log);
125 static osm_madw_t *get_madw(osm_vendor_t * p_vend, ib_net64_t * tid)
138 pthread_mutex_lock(&p_vend->match_tbl_mutex);
139 for (m = p_vend->mtbl.tbl, e = m + p_vend->mtbl.max; m < e; m++) {
144 pthread_mutex_unlock(&p_vend->match_tbl_mutex);
149 pthread_mutex_unlock(&p_vend->match_tbl_mutex);
154 put_madw(osm_vendor_t * p_vend, osm_madw_t * p_madw, ib_net64_t tid)
162 pthread_mutex_lock(&p_vend->match_tbl_mutex);
163 for (m = p_vend->mtbl.tbl, e = m + p_vend->mtbl.max; m < e; m++) {
168 cl_atomic_inc((atomic32_t *) & p_vend->mtbl.
170 pthread_mutex_unlock(&p_vend->match_tbl_mutex);
184 pthread_mutex_lock(&p_vend->cb_mutex);
186 pthread_mutex_unlock(&p_vend->cb_mutex);
190 cl_atomic_inc((atomic32_t *) & p_vend->mtbl.last_version);
191 pthread_mutex_unlock(&p_vend->match_tbl_mutex);
192 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5402: "
240 osm_vendor_t *p_vend = p_ur->p_vend;
260 if ((mad_agent = umad_recv(p_vend->umad_port_id, umad,
278 if ((mad_agent = umad_recv(p_vend->umad_port_id,
291 !(p_bind = p_vend->agents[mad_agent])) {
308 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5408: "
325 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5409: "
333 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR,
342 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR,
345 osm_dump_smp_dr_path(p_vend->p_log, smp,
349 if (!(p_req_madw = get_madw(p_vend, &mad->trans_id))) {
350 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR,
359 pthread_mutex_lock(&p_vend->cb_mutex);
361 &p_vend->cb_mutex);
374 !(p_req_madw = get_madw(p_vend, &mad->trans_id))) {
375 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5413: "
388 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5414: "
401 pthread_mutex_lock(&p_vend->cb_mutex);
402 pthread_cleanup_push(unlock_mutex, &p_vend->cb_mutex);
408 OSM_LOG_EXIT(p_vend->p_log);
412 static int umad_receiver_start(osm_vendor_t * p_vend)
414 umad_receiver_t *p_ur = p_vend->receiver;
416 p_ur->p_vend = p_vend;
417 p_ur->p_log = p_vend->p_log;
430 p_ur->p_vend = NULL;
437 osm_vendor_init(IN osm_vendor_t * const p_vend,
445 p_vend->p_log = p_log;
446 p_vend->timeout = timeout;
447 p_vend->max_retries = OSM_DEFAULT_RETRY_COUNT;
448 pthread_mutex_init(&p_vend->cb_mutex, NULL);
449 pthread_mutex_init(&p_vend->match_tbl_mutex, NULL);
450 p_vend->umad_port_id = -1;
451 p_vend->issmfd = -1;
457 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR,
461 if ((n_cas = umad_get_cas_names(p_vend->ca_names,
463 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR,
469 p_vend->ca_count = n_cas;
470 p_vend->mtbl.max = DEFAULT_OSM_UMAD_MAX_PENDING;
475 p_vend->mtbl.max = tmp;
477 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "Error:"
482 OSM_LOG(p_vend->p_log, OSM_LOG_INFO, "%d pending umads specified\n",
483 p_vend->mtbl.max);
485 p_vend->mtbl.tbl = calloc(p_vend->mtbl.max, sizeof(*(p_vend->mtbl.tbl)));
486 if (!p_vend->mtbl.tbl) {
487 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "Error:"
503 osm_vendor_t *p_vend = NULL;
513 p_vend = malloc(sizeof(*p_vend));
514 if (p_vend == NULL) {
520 memset(p_vend, 0, sizeof(*p_vend));
522 if (osm_vendor_init(p_vend, p_log, timeout) < 0) {
523 free(p_vend);
524 p_vend = NULL;
529 return (p_vend);
552 osm_vendor_get_all_port_attr(IN osm_vendor_t * const p_vend,
561 OSM_LOG_ENTER(p_vend->p_log);
563 CL_ASSERT(p_vend && p_num_ports);
567 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5418: "
578 for (i = 0; i < p_vend->ca_count && !done; i++) {
582 if (umad_get_ca(p_vend->ca_names[i], &ca) == 0) {
607 OSM_LOG_EXIT(p_vend->p_log);
614 osm_vendor_open_port(IN osm_vendor_t * const p_vend,
623 CL_ASSERT(p_vend);
625 OSM_LOG_ENTER(p_vend->p_log);
627 if (p_vend->umad_port_id >= 0) {
628 umad_port_id = p_vend->umad_port_id;
638 for (ca = 0; ca < p_vend->ca_count; ca++) {
639 if ((r = umad_get_ca_portguids(p_vend->ca_names[ca],
642 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5421: "
644 p_vend->ca_names[ca], strerror(r));
649 name = p_vend->ca_names[ca];
657 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5422: "
665 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 542A: "
671 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 542D: "
683 if (umad_get_port(name, i, &p_vend->umad_port) < 0) {
684 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 542B: "
689 if ((umad_port_id = umad_open_port(p_vend->umad_port.ca_name,
690 p_vend->umad_port.portnum)) < 0) {
691 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 542C: "
696 p_vend->umad_port_id = umad_port_id;
699 if (!(p_vend->receiver = calloc(1, sizeof(umad_receiver_t)))) {
700 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5423: "
703 umad_release_port(&p_vend->umad_port);
704 p_vend->umad_port.port_guid = 0;
705 p_vend->umad_port_id = umad_port_id = -1;
708 if (umad_receiver_start(p_vend) != 0) {
709 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5420: "
712 umad_release_port(&p_vend->umad_port);
713 p_vend->umad_port.port_guid = 0;
714 p_vend->umad_port_id = umad_port_id = -1;
718 OSM_LOG_EXIT(p_vend->p_log);
722 static void osm_vendor_close_port(osm_vendor_t * const p_vend)
727 p_ur = p_vend->receiver;
728 p_vend->receiver = NULL;
734 if (p_vend->umad_port_id >= 0) {
736 if (p_vend->agents[i])
737 umad_unregister(p_vend->umad_port_id, i);
738 umad_close_port(p_vend->umad_port_id);
739 umad_release_port(&p_vend->umad_port);
740 p_vend->umad_port.port_guid = 0;
741 p_vend->umad_port_id = -1;
760 osm_vendor_bind(IN osm_vendor_t * const p_vend,
773 OSM_LOG_ENTER(p_vend->p_log);
782 OSM_LOG(p_vend->p_log, OSM_LOG_INFO,
785 if ((umad_port_id = osm_vendor_open_port(p_vend, port_guid)) < 0) {
786 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5424: "
792 if (umad_get_issm_path(p_vend->umad_port.ca_name,
793 p_vend->umad_port.portnum,
794 p_vend->issm_path,
795 sizeof(p_vend->issm_path)) < 0) {
796 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 542E: "
798 p_vend->umad_port.ca_name, p_vend->umad_port.portnum);
803 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5425: "
809 p_bind->p_vend = p_vend;
847 if ((p_bind->agent_id = umad_register(p_vend->umad_port_id,
851 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5426: "
860 p_vend->agents[p_bind->agent_id]) {
861 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5427: "
870 p_vend->agents[p_bind->agent_id] = p_bind;
874 if ((p_bind->agent_id1 = umad_register(p_vend->umad_port_id,
879 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5428: "
888 p_vend->agents[p_bind->agent_id1]) {
889 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5429: "
897 p_vend->agents[p_bind->agent_id1] = p_bind;
901 OSM_LOG_EXIT(p_vend->p_log);
934 osm_vendor_t *p_vend = p_bind->p_vend;
936 OSM_LOG_ENTER(p_vend->p_log);
938 pthread_mutex_lock(&p_vend->cb_mutex);
941 pthread_mutex_unlock(&p_vend->cb_mutex);
943 OSM_LOG_EXIT(p_vend->p_log);
953 osm_vendor_t *p_vend = p_bind->p_vend;
955 OSM_LOG_ENTER(p_vend->p_log);
957 OSM_LOG(p_vend->p_log, OSM_LOG_DEBUG,
966 OSM_LOG(p_vend->p_log, OSM_LOG_DEBUG,
969 OSM_LOG_EXIT(p_vend->p_log);
979 osm_vendor_t *p_vend = p_bind->p_vend;
982 OSM_LOG_ENTER(p_vend->p_log);
986 OSM_LOG(p_vend->p_log, OSM_LOG_DEBUG, "Retiring UMAD %p\n", p_vw->umad);
999 OSM_LOG_EXIT(p_vend->p_log);
1009 osm_vendor_t *const p_vend = p_bind->p_vend;
1021 OSM_LOG_ENTER(p_vend->p_log);
1054 OSM_LOG(p_vend->p_log, OSM_LOG_VERBOSE, "RMPP %d length %d\n",
1073 put_madw(p_vend, p_madw, p_mad->trans_id);
1083 resp_expected ? p_vend->timeout : 0,
1084 p_vend->max_retries)) < 0) {
1085 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5430: "
1089 get_madw(p_vend, &p_mad->trans_id); /* remove from aging table */
1091 pthread_mutex_lock(&p_vend->cb_mutex);
1093 pthread_mutex_unlock(&p_vend->cb_mutex);
1102 OSM_LOG(p_vend->p_log, OSM_LOG_DEBUG, "Completed sending %s p_madw = %p\n",
1105 OSM_LOG_EXIT(p_vend->p_log);
1114 osm_vendor_t *p_vend = p_bind->p_vend;
1116 OSM_LOG_ENTER(p_vend->p_log);
1118 OSM_LOG_EXIT(p_vend->p_log);
1127 osm_vendor_t *p_vend = p_bind->p_vend;
1129 OSM_LOG_ENTER(p_vend->p_log);
1131 p_vend->issmfd = open(p_vend->issm_path, O_NONBLOCK);
1132 if (p_vend->issmfd < 0) {
1133 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5431: "
1136 p_vend->issm_path, strerror(errno));
1137 p_vend->issmfd = -1;
1139 } else if (p_vend->issmfd != -1) {
1140 if (0 != close(p_vend->issmfd))
1141 OSM_LOG(p_vend->p_log, OSM_LOG_ERROR, "ERR 5432: "
1144 p_vend->issmfd = -1;
1146 OSM_LOG_EXIT(p_vend->p_log);
1149 void osm_vendor_set_debug(IN osm_vendor_t * const p_vend, IN int32_t level)