Lines Matching refs:fptr

134 static void fcip_setipq(struct fcip *fptr);
142 static int fcip_start(queue_t *wq, mblk_t *mp, struct fcip *fptr,
144 static void fcip_sendup(struct fcip *fptr, mblk_t *mp,
146 static struct fcipstr *fcip_accept(struct fcipstr *slp, struct fcip *fptr,
148 static mblk_t *fcip_addudind(struct fcip *fptr, mblk_t *mp,
150 static int fcip_setup_mac_addr(struct fcip *fptr);
151 static void fcip_kstat_init(struct fcip *fptr);
174 static int fcip_port_attach_handler(struct fcip *fptr);
197 static void fcip_handle_topology(struct fcip *fptr);
198 static int fcip_init_port(struct fcip *fptr);
199 struct fcip_routing_table *fcip_lookup_rtable(struct fcip *fptr,
201 static void fcip_rt_update(struct fcip *fptr, fc_portmap_t *devlist,
203 static void fcip_rt_flush(struct fcip *fptr);
205 static int fcip_do_plogi(struct fcip *fptr, struct fcip_routing_table *frp);
209 static struct fcip_dest *fcip_get_dest(struct fcip *fptr,
211 static struct fcip_dest *fcip_add_dest(struct fcip *fptr,
213 static int fcip_dest_add_broadcast_entry(struct fcip *fptr, int new_flag);
214 static uint32_t fcip_get_broadcast_did(struct fcip *fptr);
215 static void fcip_cleanup_dest(struct fcip *fptr);
222 static int fcip_port_get_num_pkts(struct fcip *fptr);
223 static int fcip_check_port_busy(struct fcip *fptr);
226 static int fcip_plogi_in_progress(struct fcip *fptr);
227 static int fcip_check_port_exists(struct fcip *fptr);
232 static fcip_pkt_t *fcip_pkt_alloc(struct fcip *fptr, mblk_t *bp,
235 static fcip_pkt_t *fcip_ipkt_alloc(struct fcip *fptr, int cmdlen,
268 static struct fcip_dest *fcip_do_farp(struct fcip *fptr, la_wwn_t *pwwn,
272 static int fcip_handle_farp_request(struct fcip *fptr, la_els_farp_t *fcmd);
273 static int fcip_handle_farp_response(struct fcip *fptr, la_els_farp_t *fcmd);
759 struct fcip *fptr; in fcip_port_attach() local
881 fptr = ddi_get_soft_state(fcip_softp, instance); in fcip_port_attach()
883 if (fptr == NULL) { in fcip_port_attach()
893 mutex_init(&fptr->fcip_mutex, NULL, MUTEX_DRIVER, NULL); in fcip_port_attach()
894 mutex_init(&fptr->fcip_ub_mutex, NULL, MUTEX_DRIVER, NULL); in fcip_port_attach()
895 mutex_init(&fptr->fcip_rt_mutex, NULL, MUTEX_DRIVER, NULL); in fcip_port_attach()
896 mutex_init(&fptr->fcip_dest_mutex, NULL, MUTEX_DRIVER, NULL); in fcip_port_attach()
897 mutex_init(&fptr->fcip_sendup_mutex, NULL, MUTEX_DRIVER, NULL); in fcip_port_attach()
898 cv_init(&fptr->fcip_farp_cv, NULL, CV_DRIVER, NULL); in fcip_port_attach()
899 cv_init(&fptr->fcip_sendup_cv, NULL, CV_DRIVER, NULL); in fcip_port_attach()
900 cv_init(&fptr->fcip_ub_cv, NULL, CV_DRIVER, NULL); in fcip_port_attach()
902 mutex_enter(&fptr->fcip_mutex); in fcip_port_attach()
904 fptr->fcip_dip = fport->fcipp_dip; /* parent's dip */ in fcip_port_attach()
905 fptr->fcip_instance = instance; in fcip_port_attach()
906 fptr->fcip_ub_upstream = 0; in fcip_port_attach()
910 fptr->fcip_port_state = FCIP_PORT_ONLINE; in fcip_port_attach()
911 if (fptr->fcip_flags & FCIP_LINK_DOWN) { in fcip_port_attach()
912 fptr->fcip_flags &= ~FCIP_LINK_DOWN; in fcip_port_attach()
915 fptr->fcip_port_state = FCIP_PORT_OFFLINE; in fcip_port_attach()
918 fptr->fcip_flags |= FCIP_ATTACHING; in fcip_port_attach()
919 fptr->fcip_port_info = fport; in fcip_port_attach()
925 wwn_to_ether(&fport->fcipp_nwwn, &fptr->fcip_macaddr); in fcip_port_attach()
927 fport->fcipp_fcip = fptr; in fcip_port_attach()
931 (long)(sizeof (fptr->fcip_dest)), in fcip_port_attach()
932 (long)(sizeof (fptr->fcip_rtable)))); in fcip_port_attach()
934 bzero(fptr->fcip_dest, sizeof (fptr->fcip_dest)); in fcip_port_attach()
935 bzero(fptr->fcip_rtable, sizeof (fptr->fcip_rtable)); in fcip_port_attach()
941 fptr->fcip_tq = taskq_create("fcip_tasks", in fcip_port_attach()
945 mutex_exit(&fptr->fcip_mutex); in fcip_port_attach()
956 mutex_enter(&fptr->fcip_sendup_mutex); in fcip_port_attach()
958 (void (*)())fcip_sendup_thr, (caddr_t)fptr, 0, &p0, in fcip_port_attach()
960 mutex_exit(&fptr->fcip_sendup_mutex); in fcip_port_attach()
967 fptr->fcip_sendup_thr_initted = 1; in fcip_port_attach()
968 fptr->fcip_sendup_head = fptr->fcip_sendup_tail = NULL; in fcip_port_attach()
969 mutex_exit(&fptr->fcip_sendup_mutex); in fcip_port_attach()
973 if (fcip_port_attach_handler(fptr) != FC_SUCCESS) { in fcip_port_attach()
1044 fcip_port_attach_handler(struct fcip *fptr) in fcip_port_attach_handler() argument
1046 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_port_attach_handler()
1055 (void *)fcip_module_dip, ddi_get_instance(fptr->fcip_dip))); in fcip_port_attach_handler()
1094 ddi_get_instance(fptr->fcip_dip), DDI_PSEUDO, in fcip_port_attach_handler()
1099 ddi_get_instance(fptr->fcip_dip))); in fcip_port_attach_handler()
1109 if (fcip_init_port(fptr) != FC_SUCCESS) { in fcip_port_attach_handler()
1125 mutex_enter(&fptr->fcip_mutex); in fcip_port_attach_handler()
1126 fptr->fcip_flags &= ~FCIP_ATTACHING; in fcip_port_attach_handler()
1127 fptr->fcip_flags |= FCIP_INITED; in fcip_port_attach_handler()
1128 fptr->fcip_timeout_ticks = 0; in fcip_port_attach_handler()
1133 fptr->fcip_timeout_id = timeout(fcip_timeout, fptr, in fcip_port_attach_handler()
1136 mutex_exit(&fptr->fcip_mutex); in fcip_port_attach_handler()
1164 struct fcip *fptr = fport->fcipp_fcip; in fcip_handle_resume() local
1169 ASSERT(fptr != NULL); in fcip_handle_resume()
1171 mutex_enter(&fptr->fcip_mutex); in fcip_handle_resume()
1174 fptr->fcip_flags &= ~(FCIP_POWER_DOWN); in fcip_handle_resume()
1175 if (fptr->fcip_flags & FCIP_SUSPENDED) { in fcip_handle_resume()
1176 mutex_exit(&fptr->fcip_mutex); in fcip_handle_resume()
1180 fptr->fcip_flags &= ~(FCIP_SUSPENDED); in fcip_handle_resume()
1182 mutex_exit(&fptr->fcip_mutex); in fcip_handle_resume()
1194 if (tslp->sl_fcip == fptr) { in fcip_handle_resume()
1208 mutex_enter(&fptr->fcip_rt_mutex); in fcip_handle_resume()
1212 frp = fptr->fcip_rtable[index]; in fcip_handle_resume()
1219 did = fcip_get_broadcast_did(fptr); in fcip_handle_resume()
1228 mutex_exit(&fptr->fcip_rt_mutex); in fcip_handle_resume()
1237 fcip_handle_topology(fptr); in fcip_handle_resume()
1243 fptr->fcip_timeout_id = timeout(fcip_timeout, fptr, in fcip_handle_resume()
1245 mutex_exit(&fptr->fcip_mutex); in fcip_handle_resume()
1255 fcip_rt_update(struct fcip *fptr, fc_portmap_t *devlist, uint32_t listlen) in fcip_rt_update() argument
1258 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_rt_update()
1263 ASSERT(!mutex_owned(&fptr->fcip_mutex)); in fcip_rt_update()
1264 mutex_enter(&fptr->fcip_rt_mutex); in fcip_rt_update()
1269 frp = fcip_lookup_rtable(fptr, &(pmap->map_pwwn), in fcip_rt_update()
1310 did = fptr->fcip_broadcast_did; in fcip_rt_update()
1315 fptr->fcip_timeout_ticks + in fcip_rt_update()
1335 frp->fcipr_next = fptr->fcip_rtable[hash_bucket]; in fcip_rt_update()
1336 fptr->fcip_rtable[hash_bucket] = frp; in fcip_rt_update()
1357 (frp->fcipr_d_id.port_id != fptr->fcip_broadcast_did)) { in fcip_rt_update()
1359 frp->fcipr_invalid_timeout = fptr->fcip_timeout_ticks + in fcip_rt_update()
1370 (void) fcip_do_plogi(fptr, frp); in fcip_rt_update()
1376 (void) fcip_do_plogi(fptr, frp); in fcip_rt_update()
1380 mutex_exit(&fptr->fcip_rt_mutex); in fcip_rt_update()
1388 fcip_lookup_rtable(struct fcip *fptr, la_wwn_t *wwn, int matchflag) in fcip_lookup_rtable() argument
1393 ASSERT(mutex_owned(&fptr->fcip_rt_mutex)); in fcip_lookup_rtable()
1396 frp = fptr->fcip_rtable[hash_bucket]; in fcip_lookup_rtable()
1463 struct fcip *fptr; in fcip_detach() local
1487 fptr = fport->fcipp_fcip; in fcip_detach()
1488 if (fptr == NULL) { in fcip_detach()
1491 mutex_enter(&fptr->fcip_mutex); in fcip_detach()
1492 fptr->fcip_flags |= FCIP_DETACHING; in fcip_detach()
1493 if (fptr->fcip_ipq || in fcip_detach()
1494 fptr->fcip_flags & (FCIP_IN_TIMEOUT | in fcip_detach()
1498 mutex_exit(&fptr->fcip_mutex); in fcip_detach()
1507 mutex_enter(&fptr->fcip_dest_mutex); in fcip_detach()
1508 if (fcip_port_get_num_pkts(fptr) > 0) { in fcip_detach()
1509 mutex_exit(&fptr->fcip_dest_mutex); in fcip_detach()
1510 mutex_exit(&fptr->fcip_mutex); in fcip_detach()
1516 mutex_exit(&fptr->fcip_dest_mutex); in fcip_detach()
1518 mutex_enter(&fptr->fcip_rt_mutex); in fcip_detach()
1519 if (fcip_plogi_in_progress(fptr)) { in fcip_detach()
1520 mutex_exit(&fptr->fcip_rt_mutex); in fcip_detach()
1521 mutex_exit(&fptr->fcip_mutex); in fcip_detach()
1527 mutex_exit(&fptr->fcip_rt_mutex); in fcip_detach()
1529 mutex_exit(&fptr->fcip_mutex); in fcip_detach()
1541 fptr = fport->fcipp_fcip; in fcip_detach()
1542 mutex_enter(&fptr->fcip_mutex); in fcip_detach()
1543 fptr->fcip_flags &= ~(FCIP_DETACHING); in fcip_detach()
1544 mutex_exit(&fptr->fcip_mutex); in fcip_detach()
1559 fptr = fport->fcipp_fcip; in fcip_detach()
1560 if (fptr) { in fcip_detach()
1561 mutex_enter(&fptr->fcip_mutex); in fcip_detach()
1566 detached = fptr->fcip_flags & FCIP_DETACHED; in fcip_detach()
1567 fptr->fcip_flags &= ~(FCIP_DETACHING); in fcip_detach()
1568 fptr->fcip_flags |= FCIP_DETACHED; in fcip_detach()
1569 mutex_exit(&fptr->fcip_mutex); in fcip_detach()
1626 struct fcip *fptr; in fcip_port_detach() local
1652 fptr = fport->fcipp_fcip; in fcip_port_detach()
1664 if (strp->sl_fcip == fptr) { in fcip_port_detach()
1679 if (fptr != NULL) { in fcip_port_detach()
1680 mutex_enter(&fptr->fcip_mutex); in fcip_port_detach()
1682 (fptr) || in fcip_port_detach()
1683 (fptr->fcip_flags & in fcip_port_detach()
1686 &fptr->fcip_mutex); in fcip_port_detach()
1692 fptr->fcip_flags |= in fcip_port_detach()
1694 mutex_exit(&fptr->fcip_mutex); in fcip_port_detach()
1740 fcip_check_port_busy(struct fcip *fptr) in fcip_check_port_busy() argument
1744 ASSERT(fptr != NULL); in fcip_check_port_busy()
1745 ASSERT(MUTEX_HELD(&fptr->fcip_mutex)); in fcip_check_port_busy()
1747 mutex_enter(&fptr->fcip_dest_mutex); in fcip_check_port_busy()
1749 if (fptr->fcip_flags & FCIP_PORT_BUSY || in fcip_check_port_busy()
1750 ((num_pkts = fcip_port_get_num_pkts(fptr)) > 0) || in fcip_check_port_busy()
1751 fptr->fcip_num_ipkts_pending) { in fcip_check_port_busy()
1756 fptr->fcip_flags, num_pkts, fptr->fcip_num_ipkts_pending)); in fcip_check_port_busy()
1759 mutex_exit(&fptr->fcip_dest_mutex); in fcip_check_port_busy()
1792 struct fcip *fptr = fport->fcipp_fcip; in fcip_handle_suspend() local
1800 ASSERT(fptr != NULL); in fcip_handle_suspend()
1801 mutex_enter(&fptr->fcip_mutex); in fcip_handle_suspend()
1809 ((fptr->fcip_flags & FCIP_IN_CALLBACK) || in fcip_handle_suspend()
1810 (fptr->fcip_flags & FCIP_IN_TIMEOUT))) { in fcip_handle_suspend()
1811 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
1813 mutex_enter(&fptr->fcip_mutex); in fcip_handle_suspend()
1816 if (fptr->fcip_flags & FCIP_IN_CALLBACK || in fcip_handle_suspend()
1817 fptr->fcip_flags & FCIP_IN_TIMEOUT) { in fcip_handle_suspend()
1818 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
1823 if (fptr->fcip_flags & FCIP_SUSPENDED) { in fcip_handle_suspend()
1824 fptr->fcip_flags |= FCIP_POWER_DOWN; in fcip_handle_suspend()
1825 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
1828 fptr->fcip_flags |= FCIP_POWER_DOWN; in fcip_handle_suspend()
1831 fptr->fcip_flags |= FCIP_SUSPENDED; in fcip_handle_suspend()
1833 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
1837 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
1845 if (tslp->sl_fcip == fptr) { in fcip_handle_suspend()
1865 mutex_enter(&fptr->fcip_rt_mutex); in fcip_handle_suspend()
1875 frp = fptr->fcip_rtable[index]; in fcip_handle_suspend()
1890 mutex_enter(&fptr->fcip_dest_mutex); in fcip_handle_suspend()
1895 fdestp = fptr->fcip_dest[hash_bucket]; in fcip_handle_suspend()
1911 mutex_exit(&fptr->fcip_dest_mutex); in fcip_handle_suspend()
1926 mutex_exit(&fptr->fcip_rt_mutex); in fcip_handle_suspend()
1928 mutex_enter(&fptr->fcip_rt_mutex); in fcip_handle_suspend()
1949 mutex_exit(&fptr->fcip_rt_mutex); in fcip_handle_suspend()
1952 mutex_enter(&fptr->fcip_mutex); in fcip_handle_suspend()
1953 fptr->fcip_flags &= ~(FCIP_SUSPENDED | FCIP_POWER_DOWN); in fcip_handle_suspend()
1954 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
1959 mutex_enter(&fptr->fcip_mutex); in fcip_handle_suspend()
1960 tid = fptr->fcip_timeout_id; in fcip_handle_suspend()
1961 fptr->fcip_timeout_id = NULL; in fcip_handle_suspend()
1962 mutex_exit(&fptr->fcip_mutex); in fcip_handle_suspend()
2001 fcip_kstat_init(struct fcip *fptr) in fcip_kstat_init() argument
2007 ASSERT(mutex_owned(&fptr->fcip_mutex)); in fcip_kstat_init()
2009 instance = ddi_get_instance(fptr->fcip_dip); in fcip_kstat_init()
2013 fptr->fcip_kstatp = kstat_create("fcip", instance, buf, "net", in fcip_kstat_init()
2018 fptr->fcip_kstatp = kstat_create("fcip", instance, buf, "net", in fcip_kstat_init()
2022 if (fptr->fcip_kstatp == NULL) { in fcip_kstat_init()
2027 fcipstatp = (struct fcipstat *)fptr->fcip_kstatp->ks_data; in fcip_kstat_init()
2101 fptr->fcip_kstatp->ks_update = fcip_stat_update; in fcip_kstat_init()
2102 fptr->fcip_kstatp->ks_private = (void *) fptr; in fcip_kstat_init()
2103 kstat_install(fptr->fcip_kstatp); in fcip_kstat_init()
2114 struct fcip *fptr; in fcip_stat_update() local
2116 fptr = (struct fcip *)fcip_statp->ks_private; in fcip_stat_update()
2120 fptr->fcip_ipackets = fcipstatp->fcips_ipackets.value.ul; in fcip_stat_update()
2121 fptr->fcip_ierrors = fcipstatp->fcips_ierrors.value.ul; in fcip_stat_update()
2122 fptr->fcip_opackets = fcipstatp->fcips_opackets.value.ul; in fcip_stat_update()
2123 fptr->fcip_oerrors = fcipstatp->fcips_oerrors.value.ul; in fcip_stat_update()
2124 fptr->fcip_collisions = fcipstatp->fcips_collisions.value.ul; in fcip_stat_update()
2125 fptr->fcip_defer = fcipstatp->fcips_defer.value.ul; in fcip_stat_update()
2126 fptr->fcip_fram = fcipstatp->fcips_fram.value.ul; in fcip_stat_update()
2127 fptr->fcip_crc = fcipstatp->fcips_crc.value.ul; in fcip_stat_update()
2128 fptr->fcip_oflo = fcipstatp->fcips_oflo.value.ul; in fcip_stat_update()
2129 fptr->fcip_uflo = fcipstatp->fcips_uflo.value.ul; in fcip_stat_update()
2130 fptr->fcip_missed = fcipstatp->fcips_missed.value.ul; in fcip_stat_update()
2131 fptr->fcip_tlcol = fcipstatp->fcips_tlcol.value.ul; in fcip_stat_update()
2132 fptr->fcip_trtry = fcipstatp->fcips_trtry.value.ul; in fcip_stat_update()
2133 fptr->fcip_tnocar = fcipstatp->fcips_tnocar.value.ul; in fcip_stat_update()
2134 fptr->fcip_inits = fcipstatp->fcips_inits.value.ul; in fcip_stat_update()
2135 fptr->fcip_notbufs = fcipstatp->fcips_notbufs.value.ul; in fcip_stat_update()
2136 fptr->fcip_norbufs = fcipstatp->fcips_norbufs.value.ul; in fcip_stat_update()
2137 fptr->fcip_nocanput = fcipstatp->fcips_nocanput.value.ul; in fcip_stat_update()
2138 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2139 fptr->fcip_rcvbytes = fcipstatp->fcips_rcvbytes.value.ul; in fcip_stat_update()
2140 fptr->fcip_xmtbytes = fcipstatp->fcips_xmtbytes.value.ul; in fcip_stat_update()
2141 fptr->fcip_multircv = fcipstatp->fcips_multircv.value.ul; in fcip_stat_update()
2142 fptr->fcip_multixmt = fcipstatp->fcips_multixmt.value.ul; in fcip_stat_update()
2143 fptr->fcip_brdcstrcv = fcipstatp->fcips_brdcstrcv.value.ul; in fcip_stat_update()
2144 fptr->fcip_norcvbuf = fcipstatp->fcips_norcvbuf.value.ul; in fcip_stat_update()
2145 fptr->fcip_noxmtbuf = fcipstatp->fcips_noxmtbuf.value.ul; in fcip_stat_update()
2146 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2147 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2148 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2149 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2150 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2151 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2152 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2153 fptr->fcip_allocbfail = fcipstatp->fcips_allocbfail.value.ul; in fcip_stat_update()
2156 fcipstatp->fcips_ipackets.value.ul = fptr->fcip_ipackets; in fcip_stat_update()
2157 fcipstatp->fcips_ierrors.value.ul = fptr->fcip_ierrors; in fcip_stat_update()
2158 fcipstatp->fcips_opackets.value.ul = fptr->fcip_opackets; in fcip_stat_update()
2159 fcipstatp->fcips_oerrors.value.ul = fptr->fcip_oerrors; in fcip_stat_update()
2160 fcipstatp->fcips_collisions.value.ul = fptr->fcip_collisions; in fcip_stat_update()
2161 fcipstatp->fcips_nocanput.value.ul = fptr->fcip_nocanput; in fcip_stat_update()
2162 fcipstatp->fcips_allocbfail.value.ul = fptr->fcip_allocbfail; in fcip_stat_update()
2163 fcipstatp->fcips_defer.value.ul = fptr->fcip_defer; in fcip_stat_update()
2164 fcipstatp->fcips_fram.value.ul = fptr->fcip_fram; in fcip_stat_update()
2165 fcipstatp->fcips_crc.value.ul = fptr->fcip_crc; in fcip_stat_update()
2166 fcipstatp->fcips_oflo.value.ul = fptr->fcip_oflo; in fcip_stat_update()
2167 fcipstatp->fcips_uflo.value.ul = fptr->fcip_uflo; in fcip_stat_update()
2168 fcipstatp->fcips_missed.value.ul = fptr->fcip_missed; in fcip_stat_update()
2169 fcipstatp->fcips_tlcol.value.ul = fptr->fcip_tlcol; in fcip_stat_update()
2170 fcipstatp->fcips_trtry.value.ul = fptr->fcip_trtry; in fcip_stat_update()
2171 fcipstatp->fcips_tnocar.value.ul = fptr->fcip_tnocar; in fcip_stat_update()
2172 fcipstatp->fcips_inits.value.ul = fptr->fcip_inits; in fcip_stat_update()
2173 fcipstatp->fcips_norbufs.value.ul = fptr->fcip_norbufs; in fcip_stat_update()
2174 fcipstatp->fcips_notbufs.value.ul = fptr->fcip_notbufs; in fcip_stat_update()
2175 fcipstatp->fcips_rcvbytes.value.ul = fptr->fcip_rcvbytes; in fcip_stat_update()
2176 fcipstatp->fcips_xmtbytes.value.ul = fptr->fcip_xmtbytes; in fcip_stat_update()
2177 fcipstatp->fcips_multircv.value.ul = fptr->fcip_multircv; in fcip_stat_update()
2178 fcipstatp->fcips_multixmt.value.ul = fptr->fcip_multixmt; in fcip_stat_update()
2179 fcipstatp->fcips_brdcstrcv.value.ul = fptr->fcip_brdcstrcv; in fcip_stat_update()
2180 fcipstatp->fcips_brdcstxmt.value.ul = fptr->fcip_brdcstxmt; in fcip_stat_update()
2181 fcipstatp->fcips_norcvbuf.value.ul = fptr->fcip_norcvbuf; in fcip_stat_update()
2182 fcipstatp->fcips_noxmtbuf.value.ul = fptr->fcip_noxmtbuf; in fcip_stat_update()
2200 struct fcip *fptr; in fcip_statec_cb() local
2213 fptr = fport->fcipp_fcip; in fcip_statec_cb()
2214 ASSERT(fptr != NULL); in fcip_statec_cb()
2216 if (fptr == NULL) { in fcip_statec_cb()
2226 mutex_enter(&fptr->fcip_mutex); in fcip_statec_cb()
2228 if ((fptr->fcip_flags & (FCIP_DETACHING | FCIP_DETACHED)) || in fcip_statec_cb()
2229 (fptr->fcip_flags & (FCIP_SUSPENDED | FCIP_POWER_DOWN))) { in fcip_statec_cb()
2230 mutex_exit(&fptr->fcip_mutex); in fcip_statec_cb()
2239 fptr->fcip_flags |= FCIP_IN_SC_CB; in fcip_statec_cb()
2259 fcip_handle_topology(fptr); in fcip_statec_cb()
2262 mutex_exit(&fptr->fcip_mutex); in fcip_statec_cb()
2289 fcip_rt_update(fptr, changelist, listlen); in fcip_statec_cb()
2309 fcip_rt_update(fptr, changelist, listlen); in fcip_statec_cb()
2322 mutex_enter(&fptr->fcip_mutex); in fcip_statec_cb()
2323 fptr->fcip_port_state = FCIP_PORT_ONLINE; in fcip_statec_cb()
2324 if (fptr->fcip_flags & FCIP_LINK_DOWN) { in fcip_statec_cb()
2325 fptr->fcip_flags &= ~FCIP_LINK_DOWN; in fcip_statec_cb()
2327 mutex_exit(&fptr->fcip_mutex); in fcip_statec_cb()
2334 if (slp && slp->sl_fcip == fptr) { in fcip_statec_cb()
2351 mutex_enter(&fptr->fcip_mutex); in fcip_statec_cb()
2352 fptr->fcip_mark_offline = fptr->fcip_timeout_ticks + in fcip_statec_cb()
2354 fptr->fcip_port_state = FCIP_PORT_OFFLINE; in fcip_statec_cb()
2355 mutex_exit(&fptr->fcip_mutex); in fcip_statec_cb()
2362 mutex_enter(&fptr->fcip_rt_mutex); in fcip_statec_cb()
2364 frtp = fptr->fcip_rtable[index]; in fcip_statec_cb()
2370 mutex_exit(&fptr->fcip_rt_mutex); in fcip_statec_cb()
2384 mutex_enter(&fptr->fcip_mutex); in fcip_statec_cb()
2387 while (fptr->fcip_ub_upstream) { in fcip_statec_cb()
2388 cv_wait(&fptr->fcip_ub_cv, &fptr->fcip_mutex); in fcip_statec_cb()
2392 fptr->fcip_mark_offline = fptr->fcip_timeout_ticks + in fcip_statec_cb()
2394 fptr->fcip_port_state = FCIP_PORT_OFFLINE; in fcip_statec_cb()
2395 mutex_exit(&fptr->fcip_mutex); in fcip_statec_cb()
2400 fcip_rt_update(fptr, changelist, listlen); in fcip_statec_cb()
2413 mutex_enter(&fptr->fcip_mutex); in fcip_statec_cb()
2414 fptr->fcip_flags &= ~(FCIP_IN_SC_CB); in fcip_statec_cb()
2415 mutex_exit(&fptr->fcip_mutex); in fcip_statec_cb()
2456 struct fcip *fptr; in fcip_els_cb() local
2469 fptr = fport->fcipp_fcip; in fcip_els_cb()
2470 ASSERT(fptr != NULL); in fcip_els_cb()
2471 if (fptr == NULL) { in fcip_els_cb()
2477 mutex_enter(&fptr->fcip_mutex); in fcip_els_cb()
2478 if ((fptr->fcip_flags & (FCIP_DETACHING | FCIP_DETACHED)) || in fcip_els_cb()
2479 (fptr->fcip_flags & (FCIP_SUSPENDED | FCIP_POWER_DOWN))) { in fcip_els_cb()
2480 mutex_exit(&fptr->fcip_mutex); in fcip_els_cb()
2489 fptr->fcip_flags |= FCIP_IN_ELS_CB; in fcip_els_cb()
2490 mutex_exit(&fptr->fcip_mutex); in fcip_els_cb()
2531 fcip_handle_farp_request(fptr, fcmd) == in fcip_els_cb()
2565 fcip_handle_farp_response(fptr, fcmd) == in fcip_els_cb()
2570 mutex_enter(&fptr->fcip_mutex); in fcip_els_cb()
2571 fptr->fcip_farp_rsp_flag = 1; in fcip_els_cb()
2572 cv_signal(&fptr->fcip_farp_cv); in fcip_els_cb()
2573 mutex_exit(&fptr->fcip_mutex); in fcip_els_cb()
2590 mutex_enter(&fptr->fcip_mutex); in fcip_els_cb()
2591 fptr->fcip_flags &= ~(FCIP_IN_ELS_CB); in fcip_els_cb()
2592 mutex_exit(&fptr->fcip_mutex); in fcip_els_cb()
2601 fcip_handle_farp_request(struct fcip *fptr, la_els_farp_t *fcmd) in fcip_handle_farp_request() argument
2605 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_handle_farp_request()
2626 fcip_rt_update(fptr, &map, 1); in fcip_handle_farp_request()
2627 mutex_enter(&fptr->fcip_rt_mutex); in fcip_handle_farp_request()
2628 frp = fcip_lookup_rtable(fptr, &fcmd->req_pwwn, FCIP_COMPARE_NWWN); in fcip_handle_farp_request()
2629 mutex_exit(&fptr->fcip_rt_mutex); in fcip_handle_farp_request()
2631 fdestp = fcip_add_dest(fptr, frp); in fcip_handle_farp_request()
2633 fcip_pkt = fcip_ipkt_alloc(fptr, sizeof (la_els_farp_t), in fcip_handle_farp_request()
2659 if (fcip_do_plogi(fptr, frp) != FC_SUCCESS) { in fcip_handle_farp_request()
2693 fcip_handle_farp_response(struct fcip *fptr, la_els_farp_t *fcmd) in fcip_handle_farp_response() argument
2714 fcip_rt_update(fptr, &map, 1); in fcip_handle_farp_response()
2715 mutex_enter(&fptr->fcip_rt_mutex); in fcip_handle_farp_response()
2716 frp = fcip_lookup_rtable(fptr, &fcmd->resp_pwwn, FCIP_COMPARE_NWWN); in fcip_handle_farp_response()
2717 mutex_exit(&fptr->fcip_rt_mutex); in fcip_handle_farp_response()
2719 fdestp = fcip_add_dest(fptr, frp); in fcip_handle_farp_response()
2753 struct fcip *fptr; in fcip_data_cb() local
2773 fptr = fport->fcipp_fcip; in fcip_data_cb()
2774 ASSERT(fptr != NULL); in fcip_data_cb()
2776 if (fptr == NULL) { in fcip_data_cb()
2780 mutex_enter(&fptr->fcip_mutex); in fcip_data_cb()
2781 if ((fptr->fcip_flags & (FCIP_DETACHING | FCIP_DETACHED)) || in fcip_data_cb()
2782 (fptr->fcip_flags & (FCIP_SUSPENDED | FCIP_POWER_DOWN))) { in fcip_data_cb()
2783 mutex_exit(&fptr->fcip_mutex); in fcip_data_cb()
2793 fptr->fcip_flags |= FCIP_IN_DATA_CB; in fcip_data_cb()
2794 mutex_exit(&fptr->fcip_mutex); in fcip_data_cb()
2861 fcip_cache_arp_broadcast(fptr, buf); in fcip_data_cb()
2943 fptr->fcip_ipackets++; in fcip_data_cb()
2946 mutex_enter(&fptr->fcip_mutex); in fcip_data_cb()
2947 fptr->fcip_ub_upstream++; in fcip_data_cb()
2948 mutex_exit(&fptr->fcip_mutex); in fcip_data_cb()
2954 if (fcip_sendup_alloc_enque(fptr, bp, NULL) != FC_SUCCESS) { in fcip_data_cb()
2963 mutex_enter(&fptr->fcip_mutex); in fcip_data_cb()
2964 fptr->fcip_ub_upstream++; in fcip_data_cb()
2965 mutex_exit(&fptr->fcip_mutex); in fcip_data_cb()
2966 if (fcip_sendup_alloc_enque(fptr, bp, in fcip_data_cb()
2978 mutex_enter(&fptr->fcip_mutex); in fcip_data_cb()
2979 fptr->fcip_flags &= ~(FCIP_IN_DATA_CB); in fcip_data_cb()
2980 mutex_exit(&fptr->fcip_mutex); in fcip_data_cb()
3008 fcip_sendup_alloc_enque(struct fcip *fptr, mblk_t *mp, struct fcipstr *(*f)()) in fcip_sendup_alloc_enque() argument
3013 msg_elem = kmem_cache_alloc(fptr->fcip_sendup_cache, KM_NOSLEEP); in fcip_sendup_alloc_enque()
3022 mutex_enter(&fptr->fcip_sendup_mutex); in fcip_sendup_alloc_enque()
3023 if (fptr->fcip_sendup_head == NULL) { in fcip_sendup_alloc_enque()
3024 fptr->fcip_sendup_head = fptr->fcip_sendup_tail = msg_elem; in fcip_sendup_alloc_enque()
3026 fptr->fcip_sendup_tail->fcipsu_next = msg_elem; in fcip_sendup_alloc_enque()
3027 fptr->fcip_sendup_tail = msg_elem; in fcip_sendup_alloc_enque()
3029 fptr->fcip_sendup_cnt++; in fcip_sendup_alloc_enque()
3030 cv_signal(&fptr->fcip_sendup_cv); in fcip_sendup_alloc_enque()
3031 mutex_exit(&fptr->fcip_sendup_mutex); in fcip_sendup_alloc_enque()
3048 fcip_cache_arp_broadcast(struct fcip *fptr, fc_unsol_buf_t *buf) in fcip_cache_arp_broadcast() argument
3055 fport = fptr->fcip_port_info; in fcip_cache_arp_broadcast()
3063 mutex_enter(&fptr->fcip_rt_mutex); in fcip_cache_arp_broadcast()
3064 frp = fcip_lookup_rtable(fptr, &nhdr->net_src_addr, FCIP_COMPARE_NWWN); in fcip_cache_arp_broadcast()
3065 mutex_exit(&fptr->fcip_rt_mutex); in fcip_cache_arp_broadcast()
3077 fcip_rt_update(fptr, &map, 1); in fcip_cache_arp_broadcast()
3078 mutex_enter(&fptr->fcip_rt_mutex); in fcip_cache_arp_broadcast()
3079 frp = fcip_lookup_rtable(fptr, &nhdr->net_src_addr, in fcip_cache_arp_broadcast()
3081 mutex_exit(&fptr->fcip_rt_mutex); in fcip_cache_arp_broadcast()
3083 (void) fcip_add_dest(fptr, frp); in fcip_cache_arp_broadcast()
3100 struct fcip *fptr = (struct fcip *)arg; in fcip_sendup_thr() local
3104 CALLB_CPR_INIT(&fptr->fcip_cpr_info, &fptr->fcip_sendup_mutex, in fcip_sendup_thr()
3107 mutex_enter(&fptr->fcip_sendup_mutex); in fcip_sendup_thr()
3110 while (fptr->fcip_sendup_thr_initted && in fcip_sendup_thr()
3111 fptr->fcip_sendup_head == NULL) { in fcip_sendup_thr()
3112 CALLB_CPR_SAFE_BEGIN(&fptr->fcip_cpr_info); in fcip_sendup_thr()
3113 cv_wait(&fptr->fcip_sendup_cv, in fcip_sendup_thr()
3114 &fptr->fcip_sendup_mutex); in fcip_sendup_thr()
3115 CALLB_CPR_SAFE_END(&fptr->fcip_cpr_info, in fcip_sendup_thr()
3116 &fptr->fcip_sendup_mutex); in fcip_sendup_thr()
3119 if (fptr->fcip_sendup_thr_initted == 0) { in fcip_sendup_thr()
3123 msg_elem = fptr->fcip_sendup_head; in fcip_sendup_thr()
3124 fptr->fcip_sendup_head = msg_elem->fcipsu_next; in fcip_sendup_thr()
3126 mutex_exit(&fptr->fcip_sendup_mutex); in fcip_sendup_thr()
3134 mutex_enter(&fptr->fcip_mutex); in fcip_sendup_thr()
3135 if (fptr->fcip_ipq && canputnext(fptr->fcip_ipq)) { in fcip_sendup_thr()
3136 ip4q = fptr->fcip_ipq; in fcip_sendup_thr()
3137 mutex_exit(&fptr->fcip_mutex); in fcip_sendup_thr()
3140 mutex_exit(&fptr->fcip_mutex); in fcip_sendup_thr()
3144 fcip_sendup(fptr, msg_elem->fcipsu_mp, in fcip_sendup_thr()
3152 mutex_enter(&fptr->fcip_mutex); in fcip_sendup_thr()
3153 ASSERT(fptr->fcip_ub_upstream > 0); in fcip_sendup_thr()
3154 fptr->fcip_ub_upstream--; in fcip_sendup_thr()
3155 mutex_exit(&fptr->fcip_mutex); in fcip_sendup_thr()
3158 kmem_cache_free(fptr->fcip_sendup_cache, (void *)msg_elem); in fcip_sendup_thr()
3159 mutex_enter(&fptr->fcip_sendup_mutex); in fcip_sendup_thr()
3160 fptr->fcip_sendup_cnt--; in fcip_sendup_thr()
3165 CALLB_CPR_EXIT(&fptr->fcip_cpr_info); in fcip_sendup_thr()
3167 mutex_exit(&fptr->fcip_sendup_mutex); in fcip_sendup_thr()
3171 cv_signal(&fptr->fcip_sendup_cv); in fcip_sendup_thr()
3189 struct fcip *fptr; in fcip_ubfree() local
3193 fptr = fport->fcipp_fcip; in fcip_ubfree()
3204 mutex_enter(&fptr->fcip_mutex); in fcip_ubfree()
3205 ASSERT(fptr->fcip_ub_upstream > 0); in fcip_ubfree()
3206 fptr->fcip_ub_upstream--; in fcip_ubfree()
3207 cv_signal(&fptr->fcip_ub_cv); in fcip_ubfree()
3208 mutex_exit(&fptr->fcip_mutex); in fcip_ubfree()
3221 fcip_sendup(struct fcip *fptr, mblk_t *mp, struct fcipstr *(*acceptfunc)()) in fcip_sendup() argument
3250 if ((slp = (*acceptfunc)(fcipstrup, fptr, type, dhostp)) == NULL) { in fcip_sendup()
3259 for (; nslp = (*acceptfunc)(slp->sl_nextp, fptr, type, dhostp); in fcip_sendup()
3270 } else if ((nmp = fcip_addudind(fptr, nmp, in fcip_sendup()
3287 } else if ((mp = fcip_addudind(fptr, mp, nhdr, type))) { in fcip_sendup()
3306 fcip_accept(struct fcipstr *slp, struct fcip *fptr, int type, la_wwn_t *dhostp) in fcip_accept() argument
3316 if ((slp->sl_fcip == fptr) && (type == sap)) { in fcip_accept()
3327 fcip_addudind(struct fcip *fptr, mblk_t *mp, fcph_network_hdr_t *nhdr, in fcip_addudind() argument
3347 fptr->fcip_allocbfail++; in fcip_addudind()
3540 struct fcip *fptr; in fcip_dodetach() local
3545 fptr = slp->sl_fcip; in fcip_dodetach()
3574 if (tslp->sl_fcip == fptr) { in fcip_dodetach()
3586 fcip_setipq(fptr); in fcip_dodetach()
3596 fcip_setipq(struct fcip *fptr) in fcip_setipq() argument
3607 if (slp->sl_fcip == fptr) { in fcip_setipq()
3623 if (fcip_check_port_exists(fptr)) { in fcip_setipq()
3628 mutex_enter(&fptr->fcip_mutex); in fcip_setipq()
3630 fptr->fcip_ipq = ipq; in fcip_setipq()
3632 fptr->fcip_ipq = NULL; in fcip_setipq()
3634 mutex_exit(&fptr->fcip_mutex); in fcip_setipq()
3672 struct fcip *fptr; in fcip_wput() local
3682 fptr = slp->sl_fcip; in fcip_wput()
3686 (fptr == NULL)) { in fcip_wput()
3706 fptr->fcip_wantw = 1; in fcip_wput()
3708 } else if (fptr->fcip_flags & FCIP_PROMISC) { in fcip_wput()
3718 fdestp = fcip_get_dest(fptr, &headerp->net_dest_addr); in fcip_wput()
3727 (void) fcip_start(wq, mp, fptr, fdestp, KM_SLEEP); in fcip_wput()
3886 struct fcip *fptr; in fcip_wsrv() local
3891 fptr = slp->sl_fcip; in fcip_wsrv()
3898 if (fptr && mp) { in fcip_wsrv()
3900 fdestp = fcip_get_dest(fptr, in fcip_wsrv()
3906 if (fcip_start(wq, mp, fptr, fdestp, in fcip_wsrv()
3938 fcip_start(queue_t *wq, mblk_t *mp, struct fcip *fptr, in fcip_start() argument
3945 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_start()
3956 if (fptr->fcip_flags & FCIP_LINK_DOWN) { in fcip_start()
4001 fcip_pkt = fcip_pkt_alloc(fptr, mp, flags, datalen); in fcip_start()
4049 fptr->fcip_opackets++; in fcip_start()
4179 struct fcip *fptr; in fcip_transport() local
4187 fptr = fcip_pkt->fcip_pkt_fptr; in fcip_transport()
4188 fport = fptr->fcip_port_info; in fcip_transport()
4193 did = fptr->fcip_broadcast_did; in fcip_transport()
4201 mutex_enter(&fptr->fcip_mutex); in fcip_transport()
4204 mutex_exit(&fptr->fcip_mutex); in fcip_transport()
4206 } else if (fptr->fcip_port_state == FCIP_PORT_OFFLINE) { in fcip_transport()
4207 mutex_exit(&fptr->fcip_mutex); in fcip_transport()
4210 mutex_exit(&fptr->fcip_mutex); in fcip_transport()
4216 mutex_enter(&fptr->fcip_rt_mutex); in fcip_transport()
4222 mutex_exit(&fptr->fcip_rt_mutex); in fcip_transport()
4232 mutex_exit(&fptr->fcip_rt_mutex); in fcip_transport()
4247 (void) fcip_do_plogi(fptr, frp); in fcip_transport()
4257 mutex_enter(&fptr->fcip_rt_mutex); in fcip_transport()
4260 mutex_exit(&fptr->fcip_rt_mutex); in fcip_transport()
4339 fcip_handle_topology(struct fcip *fptr) in fcip_handle_topology() argument
4342 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_handle_topology()
4344 ASSERT(mutex_owned(&fptr->fcip_mutex)); in fcip_handle_topology()
4355 fptr->fcip_broadcast_did = fcip_get_broadcast_did(fptr); in fcip_handle_topology()
4356 mutex_exit(&fptr->fcip_mutex); in fcip_handle_topology()
4357 (void) fcip_dest_add_broadcast_entry(fptr, 0); in fcip_handle_topology()
4358 mutex_enter(&fptr->fcip_mutex); in fcip_handle_topology()
4363 fptr->fcip_instance, fport->fcipp_topology)); in fcip_handle_topology()
4383 fptr->fcip_port_state = FCIP_PORT_ONLINE; in fcip_handle_topology()
4390 mutex_exit(&fptr->fcip_mutex); in fcip_handle_topology()
4391 fcip_rt_update(fptr, port_map, listlen); in fcip_handle_topology()
4392 mutex_enter(&fptr->fcip_mutex); in fcip_handle_topology()
4417 fptr->fcip_port_state = FCIP_PORT_ONLINE; in fcip_handle_topology()
4419 if (!(fptr->fcip_flags & FCIP_REG_INPROGRESS)) { in fcip_handle_topology()
4420 fptr->fcip_flags |= FCIP_REG_INPROGRESS; in fcip_handle_topology()
4421 if (taskq_dispatch(fptr->fcip_tq, fcip_port_ns, in fcip_handle_topology()
4422 fptr, KM_NOSLEEP) == TASKQID_INVALID) { in fcip_handle_topology()
4423 fptr->fcip_flags &= ~FCIP_REG_INPROGRESS; in fcip_handle_topology()
4434 fptr->fcip_port_state = FCIP_PORT_ONLINE; in fcip_handle_topology()
4441 mutex_exit(&fptr->fcip_mutex); in fcip_handle_topology()
4442 fcip_rt_update(fptr, port_map, listlen); in fcip_handle_topology()
4443 mutex_enter(&fptr->fcip_mutex); in fcip_handle_topology()
4462 struct fcip *fptr = (struct fcip *)arg; in fcip_port_ns() local
4463 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_port_ns()
4468 mutex_enter(&fptr->fcip_mutex); in fcip_port_ns()
4469 if ((fptr->fcip_flags & (FCIP_DETACHING | FCIP_DETACHED)) || in fcip_port_ns()
4470 (fptr->fcip_flags & (FCIP_SUSPENDED | FCIP_POWER_DOWN))) { in fcip_port_ns()
4471 fptr->fcip_flags &= ~FCIP_REG_INPROGRESS; in fcip_port_ns()
4472 mutex_exit(&fptr->fcip_mutex); in fcip_port_ns()
4475 mutex_exit(&fptr->fcip_mutex); in fcip_port_ns()
4502 (void) fc_ulp_port_ns(fptr->fcip_port_info->fcipp_handle, in fcip_port_ns()
4505 mutex_enter(&fptr->fcip_mutex); in fcip_port_ns()
4506 fptr->fcip_flags &= ~FCIP_REG_INPROGRESS; in fcip_port_ns()
4507 mutex_exit(&fptr->fcip_mutex); in fcip_port_ns()
4518 fcip_init_port(struct fcip *fptr) in fcip_init_port() argument
4521 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_init_port()
4527 mutex_enter(&fptr->fcip_mutex); in fcip_init_port()
4536 if (fcip_setup_mac_addr(fptr) == FCIP_INVALID_WWN) { in fcip_init_port()
4537 fptr->fcip_port_state = FCIP_PORT_OFFLINE; in fcip_init_port()
4545 fcip_rt_flush(fptr); in fcip_init_port()
4550 fcip_kstat_init(fptr); in fcip_init_port()
4555 fptr->fcip_ub_nbufs = fcip_ub_nbufs; in fcip_init_port()
4556 tok_buf_size = sizeof (*fptr->fcip_ub_tokens) * fcip_ub_nbufs; in fcip_init_port()
4561 fptr->fcip_ub_tokens = kmem_zalloc(tok_buf_size, KM_SLEEP); in fcip_init_port()
4563 if (fptr->fcip_ub_tokens == NULL) { in fcip_init_port()
4567 fptr->fcip_instance)); in fcip_init_port()
4570 rval = fc_ulp_uballoc(fport->fcipp_handle, &fptr->fcip_ub_nbufs, in fcip_init_port()
4571 fcip_ub_size, FC_TYPE_IS8802_SNAP, fptr->fcip_ub_tokens); in fcip_init_port()
4576 fptr->fcip_instance, rval)); in fcip_init_port()
4584 fptr->fcip_port_state = FCIP_PORT_OFFLINE; in fcip_init_port()
4598 if (fptr->fcip_ub_nbufs != fcip_ub_nbufs) { in fcip_init_port()
4619 (void) sprintf(buf, "fcip%d_cache", fptr->fcip_instance); in fcip_init_port()
4620 fptr->fcip_xmit_cache = kmem_cache_create(buf, in fcip_init_port()
4625 (void) sprintf(buf, "fcip%d_sendup_cache", fptr->fcip_instance); in fcip_init_port()
4626 fptr->fcip_sendup_cache = kmem_cache_create(buf, in fcip_init_port()
4630 if (fptr->fcip_xmit_cache == NULL) { in fcip_init_port()
4633 fptr->fcip_instance)); in fcip_init_port()
4643 fcip_handle_topology(fptr); in fcip_init_port()
4644 mutex_exit(&fptr->fcip_mutex); in fcip_init_port()
4645 if (fcip_dest_add_broadcast_entry(fptr, 1) != FC_SUCCESS) { in fcip_init_port()
4648 fptr->fcip_instance)); in fcip_init_port()
4649 mutex_enter(&fptr->fcip_mutex); in fcip_init_port()
4662 if (fptr->fcip_kstatp) { in fcip_init_port()
4663 kstat_delete(fptr->fcip_kstatp); in fcip_init_port()
4664 fptr->fcip_kstatp = NULL; in fcip_init_port()
4667 if (fptr->fcip_xmit_cache) { in fcip_init_port()
4668 kmem_cache_destroy(fptr->fcip_xmit_cache); in fcip_init_port()
4669 fptr->fcip_xmit_cache = NULL; in fcip_init_port()
4672 if (fptr->fcip_sendup_cache) { in fcip_init_port()
4673 kmem_cache_destroy(fptr->fcip_sendup_cache); in fcip_init_port()
4674 fptr->fcip_sendup_cache = NULL; in fcip_init_port()
4678 if (fptr->fcip_ub_tokens) { in fcip_init_port()
4679 uint64_t *tokens = fptr->fcip_ub_tokens; in fcip_init_port()
4680 fptr->fcip_ub_tokens = NULL; in fcip_init_port()
4682 mutex_exit(&fptr->fcip_mutex); in fcip_init_port()
4683 (void) fc_ulp_ubfree(fport->fcipp_handle, fptr->fcip_ub_nbufs, in fcip_init_port()
4688 mutex_exit(&fptr->fcip_mutex); in fcip_init_port()
4698 fcip_setup_mac_addr(struct fcip *fptr) in fcip_setup_mac_addr() argument
4700 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_setup_mac_addr()
4702 ASSERT(mutex_owned(&fptr->fcip_mutex)); in fcip_setup_mac_addr()
4704 fptr->fcip_addrflags = 0; in fcip_setup_mac_addr()
4717 wwn_to_ether(&fport->fcipp_nwwn, &fptr->fcip_macaddr); in fcip_setup_mac_addr()
4718 fcip_ether_to_str(&fptr->fcip_macaddr, etherstr); in fcip_setup_mac_addr()
4722 fptr->fcip_addrflags = (FCIP_FACTADDR_PRESENT | in fcip_setup_mac_addr()
4741 fcip_rt_flush(struct fcip *fptr) in fcip_rt_flush() argument
4745 mutex_enter(&fptr->fcip_rt_mutex); in fcip_rt_flush()
4748 frtp = fptr->fcip_rtable[index]; in fcip_rt_flush()
4754 fptr->fcip_rtable[index] = NULL; in fcip_rt_flush()
4756 mutex_exit(&fptr->fcip_rt_mutex); in fcip_rt_flush()
4775 struct fcip *fptr = NULL; in fcip_softstate_free() local
4785 fptr = fport->fcipp_fcip; in fcip_softstate_free()
4790 if (fptr) { in fcip_softstate_free()
4791 mutex_enter(&fptr->fcip_mutex); in fcip_softstate_free()
4792 instance = ddi_get_instance(fptr->fcip_dip); in fcip_softstate_free()
4797 tid = fptr->fcip_timeout_id; in fcip_softstate_free()
4798 fptr->fcip_timeout_id = NULL; in fcip_softstate_free()
4800 mutex_exit(&fptr->fcip_mutex); in fcip_softstate_free()
4802 mutex_enter(&fptr->fcip_mutex); in fcip_softstate_free()
4810 mutex_enter(&fptr->fcip_sendup_mutex); in fcip_softstate_free()
4811 if (fptr->fcip_sendup_thr_initted) { in fcip_softstate_free()
4812 fptr->fcip_sendup_thr_initted = 0; in fcip_softstate_free()
4813 cv_signal(&fptr->fcip_sendup_cv); in fcip_softstate_free()
4814 cv_wait(&fptr->fcip_sendup_cv, in fcip_softstate_free()
4815 &fptr->fcip_sendup_mutex); in fcip_softstate_free()
4817 ASSERT(fptr->fcip_sendup_head == NULL); in fcip_softstate_free()
4818 fptr->fcip_sendup_head = fptr->fcip_sendup_tail = NULL; in fcip_softstate_free()
4819 mutex_exit(&fptr->fcip_sendup_mutex); in fcip_softstate_free()
4824 if (fptr->fcip_tq) { in fcip_softstate_free()
4825 taskq_t *tq = fptr->fcip_tq; in fcip_softstate_free()
4827 fptr->fcip_tq = NULL; in fcip_softstate_free()
4829 mutex_exit(&fptr->fcip_mutex); in fcip_softstate_free()
4831 mutex_enter(&fptr->fcip_mutex); in fcip_softstate_free()
4834 if (fptr->fcip_kstatp) { in fcip_softstate_free()
4835 kstat_delete(fptr->fcip_kstatp); in fcip_softstate_free()
4836 fptr->fcip_kstatp = NULL; in fcip_softstate_free()
4840 fcip_rt_flush(fptr); in fcip_softstate_free()
4842 if (fptr->fcip_xmit_cache) { in fcip_softstate_free()
4843 kmem_cache_destroy(fptr->fcip_xmit_cache); in fcip_softstate_free()
4844 fptr->fcip_xmit_cache = NULL; in fcip_softstate_free()
4847 if (fptr->fcip_sendup_cache) { in fcip_softstate_free()
4848 kmem_cache_destroy(fptr->fcip_sendup_cache); in fcip_softstate_free()
4849 fptr->fcip_sendup_cache = NULL; in fcip_softstate_free()
4852 fcip_cleanup_dest(fptr); in fcip_softstate_free()
4855 if (fptr->fcip_ub_tokens) { in fcip_softstate_free()
4856 uint64_t *tokens = fptr->fcip_ub_tokens; in fcip_softstate_free()
4858 fptr->fcip_ub_tokens = NULL; in fcip_softstate_free()
4859 mutex_exit(&fptr->fcip_mutex); in fcip_softstate_free()
4870 fptr->fcip_ub_nbufs, tokens); in fcip_softstate_free()
4875 mutex_exit(&fptr->fcip_mutex); in fcip_softstate_free()
4878 mutex_destroy(&fptr->fcip_mutex); in fcip_softstate_free()
4879 mutex_destroy(&fptr->fcip_ub_mutex); in fcip_softstate_free()
4880 mutex_destroy(&fptr->fcip_rt_mutex); in fcip_softstate_free()
4881 mutex_destroy(&fptr->fcip_dest_mutex); in fcip_softstate_free()
4882 mutex_destroy(&fptr->fcip_sendup_mutex); in fcip_softstate_free()
4883 cv_destroy(&fptr->fcip_farp_cv); in fcip_softstate_free()
4884 cv_destroy(&fptr->fcip_sendup_cv); in fcip_softstate_free()
4885 cv_destroy(&fptr->fcip_ub_cv); in fcip_softstate_free()
4948 struct fcip *fptr; in fcip_ireq() local
4957 fptr = slp->sl_fcip; in fcip_ireq()
4985 if (fptr) { in fcip_ireq()
4986 fcip_ether_to_str(&fptr->fcip_macaddr, etherstr); in fcip_ireq()
4989 ether_bcopy(&fptr->fcip_macaddr, &dlap->dl_phys); in fcip_ireq()
5010 struct fcip *fptr; in fcip_udreq() local
5031 fptr = slp->sl_fcip; in fcip_udreq()
5033 if (fptr == NULL) { in fcip_udreq()
5038 fport = fptr->fcip_port_info; in fcip_udreq()
5066 fdestp = fcip_get_dest(fptr, &wwn); in fcip_udreq()
5095 ether_to_wwn(&fptr->fcip_macaddr, &wwn); in fcip_udreq()
5158 (void) fcip_start(wq, mp, fptr, fdestp, KM_SLEEP); in fcip_udreq()
5172 struct fcip *fptr; in fcip_areq() local
5198 if ((fptr = fport->fcipp_fcip) == NULL) { in fcip_areq()
5202 ddi_get_instance(fptr->fcip_dip))); in fcip_areq()
5204 if (ppa == ddi_get_instance(fptr->fcip_dip)) { in fcip_areq()
5231 fptr = ddi_get_soft_state(fcip_softp, ppa); in fcip_areq()
5232 if (fptr == NULL) { in fcip_areq()
5242 slp->sl_fcip = fptr; in fcip_areq()
5248 mutex_enter(&fptr->fcip_mutex); in fcip_areq()
5249 if (fptr->fcip_flags & FCIP_LINK_DOWN) { in fcip_areq()
5252 mutex_exit(&fptr->fcip_mutex); in fcip_areq()
5293 struct fcip *fptr; in fcip_breq() local
5311 fptr = slp->sl_fcip; in fcip_breq()
5313 if (fptr == NULL) { in fcip_breq()
5340 ether_bcopy(&fptr->fcip_macaddr, &fcipaddr.dl_phys); in fcip_breq()
5343 fcip_setipq(fptr); in fcip_breq()
5384 struct fcip *fptr; in fcip_pareq() local
5397 fptr = slp->sl_fcip; in fcip_pareq()
5399 if (fptr == NULL) { in fcip_pareq()
5404 fport = fptr->fcip_port_info; in fcip_pareq()
5416 ether_bcopy(&fptr->fcip_macaddr, &addr); in fcip_pareq()
5439 struct fcip *fptr; in fcip_spareq() local
5475 if ((fptr = slp->sl_fcip) == NULL) { in fcip_spareq()
5507 if (fc_ulp_port_ns(fptr->fcip_port_info->fcipp_handle, in fcip_spareq()
5554 struct fcip *fptr; in fcip_dl_ioc_hdr_info() local
5561 fptr = slp->sl_fcip; in fcip_dl_ioc_hdr_info()
5562 if (fptr == NULL) { in fcip_dl_ioc_hdr_info()
5577 fport = fptr->fcip_port_info; in fcip_dl_ioc_hdr_info()
5659 struct fcip *fptr; in fcip_cache_constructor() local
5665 fptr = fport->fcipp_fcip; in fcip_cache_constructor()
5679 fcip_pkt->fcip_pkt_fptr = fptr; in fcip_cache_constructor()
5718 struct fcip *fptr; in fcip_cache_destructor() local
5722 fptr = fport->fcipp_fcip; in fcip_cache_destructor()
5724 ASSERT(fptr == fcip_pkt->fcip_pkt_fptr); in fcip_cache_destructor()
5737 fcip_get_dest(struct fcip *fptr, la_wwn_t *pwwn) in fcip_get_dest() argument
5758 if (fcip_check_port_exists(fptr)) { in fcip_get_dest()
5762 fport = fptr->fcip_port_info; in fcip_get_dest()
5768 mutex_enter(&fptr->fcip_dest_mutex); in fcip_get_dest()
5769 fdestp = fptr->fcip_dest[hash_bucket]; in fcip_get_dest()
5778 mutex_exit(&fptr->fcip_dest_mutex); in fcip_get_dest()
5785 mutex_exit(&fptr->fcip_dest_mutex); in fcip_get_dest()
5792 mutex_enter(&fptr->fcip_rt_mutex); in fcip_get_dest()
5793 frp = fcip_lookup_rtable(fptr, pwwn, FCIP_COMPARE_NWWN); in fcip_get_dest()
5794 mutex_exit(&fptr->fcip_rt_mutex); in fcip_get_dest()
5869 fcip_rt_update(fptr, &map, 1); in fcip_get_dest()
5871 mutex_enter(&fptr->fcip_rt_mutex); in fcip_get_dest()
5872 frp = fcip_lookup_rtable(fptr, pwwn, in fcip_get_dest()
5874 mutex_exit(&fptr->fcip_rt_mutex); in fcip_get_dest()
5876 fdestp = fcip_add_dest(fptr, frp); in fcip_get_dest()
5884 fdestp = fcip_do_farp(fptr, pwwn, NULL, in fcip_get_dest()
5893 fdestp = fcip_add_dest(fptr, frp); in fcip_get_dest()
5936 fcip_add_dest(struct fcip *fptr, struct fcip_routing_table *frp) in fcip_add_dest() argument
5948 mutex_enter(&fptr->fcip_dest_mutex); in fcip_add_dest()
5955 fdestp = fptr->fcip_dest[hash_bucket]; in fcip_add_dest()
5962 mutex_exit(&fptr->fcip_dest_mutex); in fcip_add_dest()
5976 fdest_new->fcipd_next = fptr->fcip_dest[hash_bucket]; in fcip_add_dest()
5980 fptr->fcip_dest[hash_bucket] = fdest_new; in fcip_add_dest()
5983 mutex_exit(&fptr->fcip_dest_mutex); in fcip_add_dest()
5991 fcip_cleanup_dest(struct fcip *fptr) in fcip_cleanup_dest() argument
5997 mutex_enter(&fptr->fcip_dest_mutex); in fcip_cleanup_dest()
6000 fdestp = fptr->fcip_dest[i]; in fcip_cleanup_dest()
6006 fptr->fcip_dest[i] = NULL; in fcip_cleanup_dest()
6009 mutex_exit(&fptr->fcip_dest_mutex); in fcip_cleanup_dest()
6023 fcip_do_farp(struct fcip *fptr, la_wwn_t *pwwn, char *ip_addr, in fcip_do_farp() argument
6028 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_do_farp()
6038 bdestp = fcip_get_dest(fptr, &broadcast_wwn); in fcip_do_farp()
6044 fcip_pkt = fcip_ipkt_alloc(fptr, sizeof (la_els_farp_t), in fcip_do_farp()
6136 mutex_enter(&fptr->fcip_mutex); in fcip_do_farp()
6137 fptr->fcip_farp_rsp_flag = 0; in fcip_do_farp()
6138 while (!fptr->fcip_farp_rsp_flag) { in fcip_do_farp()
6139 if (cv_timedwait(&fptr->fcip_farp_cv, &fptr->fcip_mutex, in fcip_do_farp()
6145 fptr->fcip_farp_rsp_flag = 1; in fcip_do_farp()
6152 mutex_enter(&fptr->fcip_rt_mutex); in fcip_do_farp()
6153 frp = fcip_lookup_rtable(fptr, pwwn, FCIP_COMPARE_NWWN); in fcip_do_farp()
6154 mutex_exit(&fptr->fcip_rt_mutex); in fcip_do_farp()
6158 fdestp = fcip_get_dest(fptr, pwwn); in fcip_do_farp()
6164 fptr->fcip_farp_rsp_flag = 0; in fcip_do_farp()
6168 mutex_exit(&fptr->fcip_mutex); in fcip_do_farp()
6189 fcip_do_plogi(struct fcip *fptr, struct fcip_routing_table *frp) in fcip_do_plogi() argument
6193 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_do_plogi()
6215 fcip_pkt = fcip_ipkt_alloc(fptr, sizeof (la_els_logi_t), in fcip_do_plogi()
6249 fcip_pkt->fcip_pkt_ttl = fptr->fcip_timeout_ticks + fc_pkt->pkt_timeout; in fcip_do_plogi()
6291 struct fcip *fptr; in fcip_ipkt_callback() local
6305 fptr = fcip_pkt->fcip_pkt_fptr; in fcip_ipkt_callback()
6306 fport = fptr->fcip_port_info; in fcip_ipkt_callback()
6318 mutex_enter(&fptr->fcip_rt_mutex); in fcip_ipkt_callback()
6320 frp->fcipr_invalid_timeout = fptr->fcip_timeout_ticks + in fcip_ipkt_callback()
6322 mutex_exit(&fptr->fcip_rt_mutex); in fcip_ipkt_callback()
6332 mutex_enter(&fptr->fcip_rt_mutex); in fcip_ipkt_callback()
6337 mutex_exit(&fptr->fcip_rt_mutex); in fcip_ipkt_callback()
6350 fcip_pkt_alloc(struct fcip *fptr, mblk_t *bp, int flags, int datalen) in fcip_pkt_alloc() argument
6357 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_pkt_alloc()
6359 fcip_pkt = kmem_cache_alloc(fptr->fcip_xmit_cache, flags); in fcip_pkt_alloc()
6433 struct fcip *fptr = fcip_pkt->fcip_pkt_fptr; in fcip_pkt_free() local
6447 (void) fc_ulp_uninit_packet(fptr->fcip_port_info->fcipp_handle, fc_pkt); in fcip_pkt_free()
6449 kmem_cache_free(fptr->fcip_xmit_cache, (void *)fcip_pkt); in fcip_pkt_free()
6457 fcip_ipkt_alloc(struct fcip *fptr, int cmdlen, int resplen, in fcip_ipkt_alloc() argument
6463 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_ipkt_alloc()
6482 fcip_pkt->fcip_pkt_fptr = fptr; in fcip_ipkt_alloc()
6494 if (ddi_dma_alloc_handle(fptr->fcip_dip, in fcip_ipkt_alloc()
6548 if (ddi_dma_alloc_handle(fptr->fcip_dip, in fcip_ipkt_alloc()
6621 if (!MUTEX_HELD(&fptr->fcip_mutex)) { in fcip_ipkt_alloc()
6623 mutex_enter(&fptr->fcip_mutex); in fcip_ipkt_alloc()
6626 fptr->fcip_num_ipkts_pending++; in fcip_ipkt_alloc()
6629 mutex_exit(&fptr->fcip_mutex); in fcip_ipkt_alloc()
6647 struct fcip *fptr = fcip_pkt->fcip_pkt_fptr; in fcip_ipkt_free() local
6648 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_ipkt_free()
6650 ASSERT(fptr != NULL); in fcip_ipkt_free()
6651 ASSERT(!mutex_owned(&fptr->fcip_mutex)); in fcip_ipkt_free()
6654 mutex_enter(&fptr->fcip_mutex); in fcip_ipkt_free()
6655 if (fptr->fcip_num_ipkts_pending) /* Safety check */ in fcip_ipkt_free()
6656 fptr->fcip_num_ipkts_pending--; in fcip_ipkt_free()
6657 mutex_exit(&fptr->fcip_mutex); in fcip_ipkt_free()
6692 struct fcip *fptr = fcip_pkt->fcip_pkt_fptr; in fcip_init_unicast_pkt() local
6720 fcip_pkt->fcip_pkt_ttl = fptr->fcip_timeout_ticks + fc_pkt->pkt_timeout; in fcip_init_unicast_pkt()
6732 struct fcip *fptr = fcip_pkt->fcip_pkt_fptr; in fcip_init_broadcast_pkt() local
6733 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_init_broadcast_pkt()
6751 did = fptr->fcip_broadcast_did; in fcip_init_broadcast_pkt()
6776 fcip_pkt->fcip_pkt_ttl = fptr->fcip_timeout_ticks + fc_pkt->pkt_timeout; in fcip_init_broadcast_pkt()
6853 fcip_dest_add_broadcast_entry(struct fcip *fptr, int new_flag) in fcip_dest_add_broadcast_entry() argument
6864 did = fptr->fcip_broadcast_did; in fcip_dest_add_broadcast_entry()
6881 fcip_rt_update(fptr, &map, 1); in fcip_dest_add_broadcast_entry()
6882 mutex_enter(&fptr->fcip_rt_mutex); in fcip_dest_add_broadcast_entry()
6883 frp = fcip_lookup_rtable(fptr, &broadcast_wwn, FCIP_COMPARE_NWWN); in fcip_dest_add_broadcast_entry()
6884 mutex_exit(&fptr->fcip_rt_mutex); in fcip_dest_add_broadcast_entry()
6888 (void) fcip_add_dest(fptr, frp); in fcip_dest_add_broadcast_entry()
6900 fcip_rt_update(fptr, &map, 1); in fcip_dest_add_broadcast_entry()
6901 mutex_enter(&fptr->fcip_rt_mutex); in fcip_dest_add_broadcast_entry()
6902 frp = fcip_lookup_rtable(fptr, &broadcast_wwn, FCIP_COMPARE_NWWN); in fcip_dest_add_broadcast_entry()
6903 mutex_exit(&fptr->fcip_rt_mutex); in fcip_dest_add_broadcast_entry()
6907 (void) fcip_add_dest(fptr, frp); in fcip_dest_add_broadcast_entry()
6917 fcip_get_broadcast_did(struct fcip *fptr) in fcip_get_broadcast_did() argument
6919 fcip_port_info_t *fport = fptr->fcip_port_info; in fcip_get_broadcast_did()
6985 fptr->fcip_instance)); in fcip_get_broadcast_did()
7008 struct fcip *fptr = (struct fcip *)arg; in fcip_timeout() local
7016 mutex_enter(&fptr->fcip_mutex); in fcip_timeout()
7018 fptr->fcip_flags |= FCIP_IN_TIMEOUT; in fcip_timeout()
7019 fptr->fcip_timeout_ticks += fcip_tick_incr; in fcip_timeout()
7021 if (fptr->fcip_flags & (FCIP_DETACHED | FCIP_DETACHING | \ in fcip_timeout()
7023 fptr->fcip_flags &= ~(FCIP_IN_TIMEOUT); in fcip_timeout()
7024 mutex_exit(&fptr->fcip_mutex); in fcip_timeout()
7028 if (fptr->fcip_port_state == FCIP_PORT_OFFLINE) { in fcip_timeout()
7029 if (fptr->fcip_timeout_ticks > fptr->fcip_mark_offline) { in fcip_timeout()
7030 fptr->fcip_flags |= FCIP_LINK_DOWN; in fcip_timeout()
7033 if (!fptr->fcip_flags & FCIP_RTE_REMOVING) { in fcip_timeout()
7036 mutex_exit(&fptr->fcip_mutex); in fcip_timeout()
7049 mutex_enter(&fptr->fcip_rt_mutex); in fcip_timeout()
7051 frtp = fptr->fcip_rtable[index]; in fcip_timeout()
7054 (fptr->fcip_timeout_ticks > in fcip_timeout()
7065 mutex_enter(&fptr->fcip_mutex); in fcip_timeout()
7066 fptr->fcip_flags |= FCIP_RTE_REMOVING; in fcip_timeout()
7067 mutex_exit(&fptr->fcip_mutex); in fcip_timeout()
7069 if (taskq_dispatch(fptr->fcip_tq, in fcip_timeout()
7070 fcip_rte_remove_deferred, fptr, in fcip_timeout()
7079 mutex_enter(&fptr->fcip_mutex); in fcip_timeout()
7080 fptr->fcip_flags &= in fcip_timeout()
7082 mutex_exit(&fptr->fcip_mutex); in fcip_timeout()
7088 mutex_exit(&fptr->fcip_rt_mutex); in fcip_timeout()
7091 mutex_enter(&fptr->fcip_dest_mutex); in fcip_timeout()
7097 fdestp = fptr->fcip_dest[i]; in fcip_timeout()
7107 if (fptr->fcip_timeout_ticks > in fcip_timeout()
7113 if (taskq_dispatch(fptr->fcip_tq, in fcip_timeout()
7145 mutex_exit(&fptr->fcip_dest_mutex); in fcip_timeout()
7150 mutex_enter(&fptr->fcip_mutex); in fcip_timeout()
7152 fptr->fcip_timeout_id = timeout(fcip_timeout, fptr, in fcip_timeout()
7154 fptr->fcip_flags &= ~(FCIP_IN_TIMEOUT); in fcip_timeout()
7155 mutex_exit(&fptr->fcip_mutex); in fcip_timeout()
7168 struct fcip *fptr; in fcip_pkt_timeout() local
7174 fptr = fcip_pkt->fcip_pkt_fptr; in fcip_pkt_timeout()
7175 fport = fptr->fcip_port_info; in fcip_pkt_timeout()
7231 struct fcip *fptr = (struct fcip *)arg; in fcip_rte_remove_deferred() local
7239 mutex_enter(&fptr->fcip_rt_mutex); in fcip_rte_remove_deferred()
7241 frtp = fptr->fcip_rtable[index]; in fcip_rte_remove_deferred()
7252 mutex_enter(&fptr->fcip_dest_mutex); in fcip_rte_remove_deferred()
7257 fdestp = fptr->fcip_dest[hash_bucket]; in fcip_rte_remove_deferred()
7273 mutex_exit(&fptr->fcip_dest_mutex); in fcip_rte_remove_deferred()
7301 fptr->fcip_rtable[index] = in fcip_rte_remove_deferred()
7317 mutex_exit(&fptr->fcip_rt_mutex); in fcip_rte_remove_deferred()
7321 mutex_enter(&fptr->fcip_mutex); in fcip_rte_remove_deferred()
7322 fptr->fcip_flags &= ~FCIP_RTE_REMOVING; in fcip_rte_remove_deferred()
7323 mutex_exit(&fptr->fcip_mutex); in fcip_rte_remove_deferred()
7331 fcip_port_get_num_pkts(struct fcip *fptr) in fcip_port_get_num_pkts() argument
7337 ASSERT(mutex_owned(&fptr->fcip_dest_mutex)); in fcip_port_get_num_pkts()
7340 fdestp = fptr->fcip_dest[i]; in fcip_port_get_num_pkts()
7363 fcip_plogi_in_progress(struct fcip *fptr) in fcip_plogi_in_progress() argument
7368 ASSERT(mutex_owned(&fptr->fcip_rt_mutex)); in fcip_plogi_in_progress()
7371 frp = fptr->fcip_rtable[i]; in fcip_plogi_in_progress()
7389 fcip_check_port_exists(struct fcip *fptr) in fcip_check_port_exists() argument
7395 fport = fptr->fcip_port_info; in fcip_check_port_exists()