Lines Matching refs:info

87 eibnx_port_monitor(eibnx_thr_info_t *info)
96 info->ti_pi->p_port_num);
101 info->ti_progress = 0;
109 while (info->ti_pi->p_linkstate != IBT_PORT_ACTIVE) {
110 mutex_enter(&info->ti_event_lock);
111 while ((info->ti_event &
117 cv_wait(&info->ti_event_cv, &info->ti_event_lock);
123 if (info->ti_event & ENX_EVENT_DIE) {
124 mutex_exit(&info->ti_event_lock);
127 info->ti_event &= (~ENX_EVENT_LINK_UP);
128 mutex_exit(&info->ti_event_lock);
130 info->ti_progress |= ENX_MON_LINKSTATE_UP;
138 while (eibnx_find_mgroups(info) != ENX_E_SUCCESS) {
139 mutex_enter(&info->ti_event_lock);
140 while ((info->ti_event &
146 cv_wait(&info->ti_event_cv, &info->ti_event_lock);
152 if (info->ti_event & ENX_EVENT_DIE) {
153 mutex_exit(&info->ti_event_lock);
156 info->ti_event &= (~ENX_EVENT_MCGS_AVAILABLE);
157 mutex_exit(&info->ti_event_lock);
159 info->ti_progress |= ENX_MON_FOUND_MCGS;
164 if (eibnx_setup_cq(info) != ENX_E_SUCCESS) {
167 info->ti_hca_guid, info->ti_pi->p_port_num);
170 info->ti_progress |= ENX_MON_SETUP_CQ;
175 if (eibnx_setup_ud_channel(info) != ENX_E_SUCCESS) {
178 info->ti_hca_guid, info->ti_pi->p_port_num);
181 info->ti_progress |= ENX_MON_SETUP_UD_CHAN;
186 if (eibnx_setup_bufs(info) != ENX_E_SUCCESS) {
189 info->ti_hca_guid, info->ti_pi->p_port_num);
192 info->ti_progress |= ENX_MON_SETUP_BUFS;
197 if (eibnx_setup_cq_handler(info) != ENX_E_SUCCESS) {
200 info->ti_hca_guid, info->ti_pi->p_port_num);
203 info->ti_progress |= ENX_MON_SETUP_CQ_HDLR;
208 if (eibnx_join_mcgs(info) != ENX_E_SUCCESS) {
211 info->ti_hca_guid, info->ti_pi->p_port_num);
214 info->ti_progress |= ENX_MON_JOINED_MCGS;
219 if (eibnx_fip_solicit_mcast(info) != ENX_E_SUCCESS) {
222 info->ti_hca_guid, info->ti_pi->p_port_num);
225 info->ti_progress |= ENX_MON_MULTICAST_SLCT;
227 mutex_enter(&info->ti_event_lock);
233 while ((info->ti_event & (ENX_EVENT_TIMED_OUT | ENX_EVENT_DIE)) == 0) {
238 if (cv_timedwait(&info->ti_event_cv, &info->ti_event_lock,
240 info->ti_event |= ENX_EVENT_TIMED_OUT;
248 if (info->ti_event & ENX_EVENT_DIE) {
249 mutex_exit(&info->ti_event_lock);
253 if (info->ti_event & ENX_EVENT_TIMED_OUT) {
254 if (eibnx_fip_solicit_ucast(info,
258 info->ti_hca_guid, info->ti_pi->p_port_num);
260 info->ti_event &= ~ENX_EVENT_TIMED_OUT;
266 if (info->ti_progress & ENX_MON_MULTICAST_SLCT) {
267 eibnx_cleanup_port_nodes(info);
268 info->ti_progress &= (~ENX_MON_MULTICAST_SLCT);
270 if (info->ti_progress & ENX_MON_JOINED_MCGS) {
271 eibnx_rb_join_mcgs(info);
272 info->ti_progress &= (~ENX_MON_JOINED_MCGS);
274 if (info->ti_progress & ENX_MON_SETUP_CQ_HDLR) {
275 eibnx_rb_setup_cq_handler(info);
276 info->ti_progress &= (~ENX_MON_SETUP_CQ_HDLR);
278 if (info->ti_progress & ENX_MON_SETUP_BUFS) {
279 eibnx_rb_setup_bufs(info);
280 info->ti_progress &= (~ENX_MON_SETUP_BUFS);
282 if (info->ti_progress & ENX_MON_SETUP_UD_CHAN) {
283 eibnx_rb_setup_ud_channel(info);
284 info->ti_progress &= (~ENX_MON_SETUP_UD_CHAN);
286 if (info->ti_progress & ENX_MON_SETUP_CQ) {
287 eibnx_rb_setup_cq(info);
288 info->ti_progress &= (~ENX_MON_SETUP_CQ);
290 if (info->ti_progress & ENX_MON_FOUND_MCGS) {
291 eibnx_rb_find_mgroups(info);
292 info->ti_progress &= (~ENX_MON_FOUND_MCGS);
439 eibnx_gw_is_aware(eibnx_thr_info_t *info, eibnx_gw_info_t *gwi,
453 * we return from this routine), so the "rebirth" and "gw info
491 eibnx_handle_gw_info_update(info, eib_gwi.gi_portid, &eib_gwi);
494 eibnx_handle_gw_rebirth(info, gwi->gw_portid);
573 eibnx_thr_info_t *info = arg;
575 if (info->ti_cq_hdl != cq_hdl) {
577 "cq_hdl(0x%llx) != info->ti_cq_hdl(0x%llx), "
578 "ignoring completion", cq_hdl, info->ti_cq_hdl);
582 ASSERT(info->ti_softint_hdl != NULL);
584 (void) ddi_intr_trigger_softint(info->ti_softint_hdl, NULL);
595 eibnx_thr_info_t *info = (eibnx_thr_info_t *)arg1;
607 mutex_enter(&info->ti_event_lock);
608 if (info->ti_event & (ENX_EVENT_DIE | ENX_EVENT_COMPLETION)) {
609 mutex_exit(&info->ti_event_lock);
612 info->ti_event |= ENX_EVENT_COMPLETION;
613 mutex_exit(&info->ti_event_lock);
620 ret = ibt_enable_cq_notify(info->ti_cq_hdl, IBT_NEXT_COMPLETION);
623 "failed, ret=%d", info->ti_cq_hdl, ret);
629 while ((ret = ibt_poll_cq(info->ti_cq_hdl, info->ti_wc, info->ti_cq_sz,
631 for (wc = info->ti_wc, i = 0; i < polled; i++, wc++) {
634 eibnx_handle_wcerr(wc->wc_status, wqe, info);
636 eibnx_process_rx(info, wc, wqe);
637 eibnx_return_rwqe(info, wqe);
651 mutex_enter(&info->ti_event_lock);
652 info->ti_event &= (~ENX_EVENT_COMPLETION);
653 cv_broadcast(&info->ti_event_cv);
654 mutex_exit(&info->ti_event_lock);
663 eibnx_process_rx(eibnx_thr_info_t *info, ibt_wc_t *wc, eibnx_wqe_t *wqe)
677 if (info->ti_mcast_done == 0) {
693 eibnx_handle_login_ack(info, pkt);
714 orig_gwi = eibnx_find_gw_in_gwlist(info, gwi);
719 (void) eibnx_add_gw_to_gwlist(info, gwi, wc, pkt);
723 (void) eibnx_add_gw_to_gwlist(info, gwi, wc, pkt);
727 if ((new_gwi = eibnx_add_gw_to_gwlist(info, gwi,
729 eibnx_queue_for_creation(info, new_gwi);
736 eibnx_replace_gw_in_gwlist(info, orig_gwi, gwi,
746 eibnx_replace_gw_in_gwlist(info, orig_gwi, gwi,
752 eibnx_replace_gw_in_gwlist(info, orig_gwi, gwi,
754 eibnx_gw_is_aware(info, orig_gwi, gwi_changed);
757 eibnx_queue_for_creation(info, orig_gwi);
764 eibnx_handle_wcerr(uint8_t wcerr, eibnx_wqe_t *wqe, eibnx_thr_info_t *info)
773 info->ti_hca_guid, info->ti_pi->p_port_num, wqe->qe_type);
779 info->ti_hca_guid, info->ti_pi->p_port_num, wqe->qe_type);
785 info->ti_hca_guid, info->ti_pi->p_port_num, wqe->qe_type);
791 eibnx_handle_login_ack(eibnx_thr_info_t *info, uint8_t *pkt)
813 if ((rdip = eibnx_find_child_dip_by_inst(info, inst)) == NULL) {
816 info->ti_hca_guid, info->ti_pi->p_port_num);
824 "port_num=0x%x, eoib_inst=0x%x), ret=%d", info->ti_hca_guid,
825 info->ti_pi->p_port_num, inst, ret);
833 eibnx_handle_gw_rebirth(eibnx_thr_info_t *info, uint16_t portid)
840 if ((rdip = eibnx_find_child_dip_by_gw(info, portid)) == NULL) {
843 portid, info->ti_hca_guid, info->ti_pi->p_port_num);
851 "port_num=0x%x, gw_portid=0x%x), ret=%d", info->ti_hca_guid,
852 info->ti_pi->p_port_num, portid, ret);
860 eibnx_handle_gw_info_update(eibnx_thr_info_t *info, uint16_t portid,
868 if ((rdip = eibnx_find_child_dip_by_gw(info, portid)) == NULL) {
871 portid, info->ti_hca_guid, info->ti_pi->p_port_num);
878 ENX_DPRINTF_WARN("no gw-info-update cookie for "
880 "ret=%d", info->ti_hca_guid, info->ti_pi->p_port_num,