Lines Matching defs:vpip

1297 			VPIobj_t *vpip, uint32_t evt, void *arg1);
1299 VPIobj_t *vpip, uint32_t evt, void *arg1);
1301 VPIobj_t *vpip, uint32_t evt, void *arg1);
1303 VPIobj_t *vpip, uint32_t evt, void *arg1);
1305 VPIobj_t *vpip, uint32_t evt, void *arg1);
1307 VPIobj_t *vpip, uint32_t evt, void *arg1);
1310 VPIobj_t *vpip, uint32_t evt, void *arg1);
1312 VPIobj_t *vpip, uint32_t evt, void *arg1);
1314 VPIobj_t *vpip, uint32_t evt, void *arg1);
1317 VPIobj_t *vpip, uint32_t evt, void *arg1);
1319 VPIobj_t *vpip, uint32_t evt, void *arg1);
1321 VPIobj_t *vpip, uint32_t evt, void *arg1);
1324 VPIobj_t *vpip, uint32_t evt, void *arg1);
1326 VPIobj_t *vpip, uint32_t evt, void *arg1);
1329 VPIobj_t *vpip, uint32_t evt, void *arg1);
1331 VPIobj_t *vpip, uint32_t evt, void *arg1);
1333 VPIobj_t *vpip, uint32_t evt, void *arg1);
1336 VPIobj_t *vpip, uint32_t evt, void *arg1);
1338 VPIobj_t *vpip, uint32_t evt, void *arg1);
1340 VPIobj_t *vpip, uint32_t evt, void *arg1);
1343 VPIobj_t *vpip, uint32_t evt, void *arg1);
1345 VPIobj_t *vpip, uint32_t evt, void *arg1);
1347 VPIobj_t *vpip, uint32_t evt, void *arg1);
1350 VPIobj_t *vpip, uint32_t evt, void *arg1);
1352 VPIobj_t *vpip, uint32_t evt, void *arg1);
1354 VPIobj_t *vpip, uint32_t evt, void *arg1);
1361 VPIobj_t *vpip);
1963 rpip = vport->vpip->fabric_rpip;
2005 VPIobj_t *vpip;
2051 vpip = &vport->VPIobj;
2053 bzero(vpip, sizeof (VPIobj_t));
2054 vpip->index = i;
2055 vpip->VPI = emlxs_sli4_index_to_vpi(hba, i);
2056 vpip->port = vport;
2057 vpip->state = VPI_STATE_OFFLINE;
2058 vport->vpip = vpip;
2061 rpip = &vpip->fabric_rpi;
2066 rpip->vpip = vpip;
2067 vpip->fabric_rpip = rpip;
2187 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2244 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2278 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2312 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2347 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2381 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2416 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2451 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
2928 (pport->vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
3628 VPIobj_t *vpip;
3708 vpip = vport->vpip;
3711 (vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
4929 VPIobj_t *vpip;
4945 vpip = vport->vpip;
4952 vpip->VPI);
4954 rval = emlxs_vpi_event(vport, FCF_EVENT_VPI_PAUSE, vpip);
6784 VPIobj_t *vpip;
6830 vpip = vport->vpip;
6832 if ((vpip->state == VPI_STATE_OFFLINE) ||
6833 (vpip->vfip->fcfp != fcfp)) {
6838 emlxs_vpi_logo_handler(port, vpip);
6847 vpip->VPI);
6849 (void) emlxs_vpi_event(port, FCF_EVENT_VPI_OFFLINE, vpip);
9276 VPIobj_t *vpip = NULL;
9284 vpip = (VPIobj_t *)arg1;
9286 if (!vpip) {
9294 vfip = vpip->vfip;
9510 VPIobj_t *vpip;
9524 vpip = (VPIobj_t *)arg1;
9525 vpip->vfip = NULL;
9608 VPIobj_t *vpip;
9662 vpip = vport->vpip;
9665 (vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
9669 if (vpip->vfip != vfip) {
9676 vpip->VPI);
9679 vpip);
10178 VPIobj_t *vpip;
10214 vpip = vport->vpip;
10217 (vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
10221 if (vpip->vfip == vfip) {
10231 vpip = vport->vpip;
10234 (vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
10238 if (vpip->vfip == NULL) {
10239 vpip->vfip = vfip;
10265 vpip->VPI);
10267 rval = emlxs_vpi_event(port, FCF_EVENT_VPI_ONLINE, vpip);
10282 VPIobj_t *vpip = (VPIobj_t *)arg1;
10294 if (vpip == vfip->flogi_vpip) {
10372 VPIobj_t *vpip;
10412 vpip = vport->vpip;
10414 if ((vpip->state == VPI_STATE_OFFLINE) ||
10415 (vpip->vfip != vfip)) {
10422 vpip->VPI);
10424 (void) emlxs_vpi_event(vport, FCF_EVENT_VPI_OFFLINE, vpip);
10442 VPIobj_t *vpip;
10459 vpip = vport->vpip;
10461 if ((vpip->state == VPI_STATE_PAUSED) ||
10462 (vpip->vfip != vfip)) {
10470 vpip->VPI);
10472 (void) emlxs_vpi_event(vport, FCF_EVENT_VPI_PAUSE, vpip);
11000 VPIobj_t *vpip = port->vpip;
11032 vpip->fabric_rpip);
11036 vpip->flag |= EMLXS_VPI_PORT_ENABLED;
11041 vpip = vport->vpip;
11044 (vpip->flag & EMLXS_VPI_PORT_UNBIND)) {
11048 if ((vpip->state == VPI_STATE_ONLINE) ||
11049 (vpip->flag & EMLXS_VPI_ONLINE_REQ)) {
11059 vpip->VPI);
11061 vpip->vfip = vfip;
11062 (void) emlxs_vpi_event(vport, FCF_EVENT_VPI_ONLINE, vpip);
11106 emlxs_vpi_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
11143 state = vpip->state;
11152 vpip->VPI,
11153 emlxs_vpi_state_xlate(vpip->state),
11159 rval = (func)(port, vpip, evt, arg1);
11170 VPIobj_t *vpip = NULL;
11189 vpip = rpip->vpip;
11195 vpip = (VPIobj_t *)arg1;
11197 if (!vpip) {
11213 vpip->VPI,
11214 emlxs_vpi_state_xlate(vpip->state),
11217 rval = emlxs_vpi_action(port, vpip, evt, arg1);
11226 emlxs_vpi_state(emlxs_port_t *port, VPIobj_t *vpip, uint16_t state,
11235 if ((vpip->state == state) &&
11240 vpip->VPI,
11241 emlxs_vpi_state_xlate(vpip->state),
11250 vpip->VPI,
11251 emlxs_vpi_state_xlate(vpip->state),
11256 vpip->VPI,
11257 emlxs_vpi_state_xlate(vpip->state),
11264 vpip->VPI,
11265 emlxs_vpi_state_xlate(vpip->state),
11272 vpip->VPI,
11273 emlxs_vpi_state_xlate(vpip->state),
11278 vpip->prev_state = vpip->state;
11279 vpip->prev_reason = vpip->reason;
11280 vpip->state = state;
11281 vpip->reason = reason;
11283 rval = emlxs_vpi_action(port, vpip, FCF_EVENT_STATE_ENTER, arg1);
11294 VPIobj_t *vpip = port->vpip;
11312 while ((vpip->state != VPI_STATE_PORT_ONLINE) &&
11325 if (vpip->vfip) {
11326 vfip = vpip->vfip;
11348 vpip->VPI,
11349 emlxs_vpi_state_xlate(vpip->state));
11369 vpip->VPI,
11370 emlxs_vpi_state_xlate(vpip->state),
11377 vpip->vfip = vfip;
11382 vpip->VPI,
11383 emlxs_vpi_state_xlate(vpip->state),
11386 vpip->VPI);
11388 rval = emlxs_vpi_event(port, FCF_EVENT_VPI_ONLINE, vpip);
11401 VPIobj_t *vpip = port->vpip;
11417 if (vpip->state == VPI_STATE_OFFLINE) {
11426 vpip->flag |= EMLXS_VPI_PORT_UNBIND;
11428 vfip = vpip->vfip;
11434 vpip->VPI,
11435 emlxs_vpi_state_xlate(vpip->state),
11438 vpip->index, vpip->VPI);
11440 rval = emlxs_vpi_event(port, FCF_EVENT_VPI_OFFLINE, vpip);
11446 if (vpip->state == VPI_STATE_OFFLINE) {
11459 vpip->VPI,
11460 emlxs_vpi_state_xlate(vpip->state),
11463 vpip->rpi_online, vpip->rpi_paused);
11467 vpip->flag &= ~EMLXS_VPI_PORT_UNBIND;
11478 emlxs_vpi_rpi_offline_evt_action(emlxs_port_t *port, VPIobj_t *vpip,
11488 vpip->VPI,
11489 emlxs_vpi_state_xlate(vpip->state),
11491 vpip->flag);
11495 switch (vpip->state) {
11501 vpip->VPI,
11502 vpip->rpi_online, vpip->rpi_paused,
11512 vpip->VPI,
11513 vpip->rpi_online, vpip->rpi_paused,
11516 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
11524 vpip->VPI,
11525 vpip->rpi_online, vpip->rpi_paused,
11535 vpip->VPI,
11536 vpip->rpi_online, vpip->rpi_paused,
11547 vpip->VPI,
11548 vpip->rpi_online, vpip->rpi_paused,
11562 emlxs_vpi_rpi_pause_evt_action(emlxs_port_t *port, VPIobj_t *vpip,
11572 vpip->VPI,
11573 emlxs_vpi_state_xlate(vpip->state),
11575 vpip->flag);
11579 switch (vpip->state) {
11585 vpip->VPI,
11586 vpip->rpi_online, vpip->rpi_paused,
11596 vpip->VPI,
11597 vpip->rpi_online, vpip->rpi_paused,
11600 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
11608 vpip->VPI,
11609 vpip->rpi_online, vpip->rpi_paused,
11620 vpip->VPI,
11621 vpip->rpi_online, vpip->rpi_paused,
11635 emlxs_vpi_rpi_online_evt_action(emlxs_port_t *port, VPIobj_t *vpip,
11644 vpip->VPI,
11645 emlxs_vpi_state_xlate(vpip->state),
11647 vpip->flag);
11653 vpip->VPI,
11654 vpip->rpi_online, vpip->rpi_paused,
11664 emlxs_vpi_online_evt_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
11673 vpip->VPI,
11674 emlxs_vpi_state_xlate(vpip->state),
11676 vpip->flag);
11680 if (vpip->flag & EMLXS_VPI_ONLINE_REQ) {
11684 vpip->VPI,
11685 vpip->flag);
11689 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
11690 vpip->flag |= EMLXS_VPI_ONLINE_REQ;
11692 switch (vpip->state) {
11696 vpip->VPI,
11697 vpip->flag);
11699 rval = emlxs_vpi_state(port, vpip, VPI_STATE_INIT,
11707 vpip->VPI,
11708 vpip->flag);
11710 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_ONLINE,
11717 vpip->VPI,
11718 vpip->flag);
11729 emlxs_vpi_offline_handler(emlxs_port_t *port, VPIobj_t *vpip, void *arg1)
11733 if (!(vpip->flag & EMLXS_VPI_OFFLINE_REQ)) {
11737 if (vpip->flag & EMLXS_VPI_PORT_ONLINE) {
11738 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
11741 } else if (vpip->flag & EMLXS_VPI_LOGI) {
11742 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO,
11745 } else if (vpip->flag & EMLXS_VPI_REG) {
11746 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG,
11749 } else if (vpip->flag & EMLXS_VPI_INIT) {
11750 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG,
11754 rval = emlxs_vpi_state(port, vpip, VPI_STATE_OFFLINE,
11765 emlxs_vpi_offline_evt_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
11775 vpip->VPI,
11776 emlxs_vpi_state_xlate(vpip->state),
11778 vpip->flag);
11782 if ((vpip->flag & EMLXS_VPI_OFFLINE_REQ) &&
11783 !(vpip->flag & EMLXS_VPI_PAUSE_REQ)) {
11787 vpip->VPI,
11788 vpip->flag);
11792 pause_req = vpip->flag & EMLXS_VPI_PAUSE_REQ;
11794 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
11795 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
11797 switch (vpip->state) {
11799 if (pause_req || vpip->rpi_paused) {
11802 vpip->VPI,
11803 vpip->flag);
11805 vpip->flag |= EMLXS_VPI_PORT_ONLINE;
11807 rval = emlxs_vpi_state(port, vpip,
11816 vpip->VPI,
11817 vpip->flag);
11820 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
11824 if (vpip->rpi_paused) {
11827 vpip->VPI,
11828 vpip->flag);
11830 vpip->flag |= EMLXS_VPI_PORT_ONLINE;
11832 rval = emlxs_vpi_state(port, vpip,
11841 vpip->VPI,
11842 vpip->flag);
11845 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
11857 vpip->VPI,
11858 vpip->flag);
11861 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
11868 vpip->VPI,
11869 vpip->flag);
11880 emlxs_vpi_pause_evt_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
11890 vpip->VPI,
11891 emlxs_vpi_state_xlate(vpip->state),
11893 vpip->flag);
11897 if (vpip->flag & EMLXS_VPI_PAUSE_REQ) {
11901 vpip->VPI,
11902 vpip->flag);
11906 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
11910 vpip->VPI,
11911 vpip->flag);
11917 emlxs_vpi_logo_handler(port, vpip);
11920 switch (vpip->state) {
11925 vpip->VPI,
11926 vpip->flag);
11933 vpip->VPI,
11934 vpip->flag);
11944 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
11945 vpip->flag |= (EMLXS_VPI_OFFLINE_REQ | EMLXS_VPI_PAUSE_REQ);
11949 vpip->VPI,
11950 vpip->flag);
11953 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
11958 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
11959 vpip->flag |= (EMLXS_VPI_OFFLINE_REQ | EMLXS_VPI_PAUSE_REQ);
11963 vpip->VPI,
11964 vpip->flag);
12033 emlxs_vpi_logo_handler(emlxs_port_t *port, VPIobj_t *vpip)
12035 vpip->flag &= ~EMLXS_VPI_LOGI;
12036 if (vpip->flag & EMLXS_VPI_VFI_LOGI) {
12037 vpip->flag &= ~EMLXS_VPI_VFI_LOGI;
12039 if (vpip->vfip->logi_count) {
12040 vpip->vfip->logi_count--;
12042 if (vpip == vpip->vfip->flogi_vpip) {
12043 vpip->vfip->flogi_vpip = NULL;
12052 emlxs_vpi_port_offline_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12059 if (vpip->state != VPI_STATE_PORT_OFFLINE) {
12063 vpip->VPI,
12064 emlxs_vpi_state_xlate(vpip->state),
12069 if (vpip->flag & EMLXS_VPI_PORT_ONLINE) {
12072 vpip->VPI,
12073 vpip->flag);
12075 vpip->flag &= ~(EMLXS_VPI_PORT_ONLINE|EMLXS_VPI_PORT_ENABLED);
12077 if (vpip->flag & EMLXS_VPI_PAUSE_REQ) {
12085 (void *)vpip->port, (void *)((unsigned long)scope));
12087 if (vpip->flag & EMLXS_VPI_LOGI) {
12088 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO,
12095 if (vpip->flag & EMLXS_VPI_PAUSE_REQ) {
12096 if (vpip->rpi_online > vpip->rpi_paused) {
12100 vpip->VPI,
12101 vpip->rpi_online, vpip->rpi_paused);
12106 if (vpip->fabric_rpip->state != RPI_STATE_FREE) {
12110 vpip->VPI);
12113 vpip->fabric_rpip);
12118 vpip->VPI,
12119 vpip->rpi_online, vpip->rpi_paused);
12121 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PAUSED,
12127 if (vpip->rpi_online > 0) {
12131 vpip->VPI,
12132 vpip->rpi_online, vpip->rpi_paused);
12138 if (vpip->fabric_rpip->state != RPI_STATE_FREE) {
12141 vpip->VPI);
12144 vpip->fabric_rpip);
12150 vpip->VPI,
12151 vpip->rpi_online, vpip->rpi_paused);
12153 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG,
12163 emlxs_vpi_paused_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12166 if (vpip->state != VPI_STATE_PAUSED) {
12170 vpip->VPI,
12171 emlxs_vpi_state_xlate(vpip->state),
12176 vpip->flag &= ~(EMLXS_VPI_OFFLINE_REQ | EMLXS_VPI_PAUSE_REQ);
12180 vpip->VPI,
12181 vpip->rpi_online, vpip->rpi_paused);
12190 emlxs_vpi_offline_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12195 if (vpip->state != VPI_STATE_OFFLINE) {
12199 vpip->VPI,
12200 emlxs_vpi_state_xlate(vpip->state),
12205 if (!vpip->vfip) {
12209 vpip->VPI,
12210 emlxs_vpi_state_xlate(vpip->state),
12212 vpip->flag);
12217 if (vpip->fabric_rpip->state != RPI_STATE_FREE) {
12220 vpip->VPI);
12223 vpip->fabric_rpip);
12226 vpip->flag &= ~(EMLXS_VPI_OFFLINE_REQ | EMLXS_VPI_PAUSE_REQ);
12228 if (vpip->flag & EMLXS_VPI_VFI) {
12229 vpip->flag &= ~EMLXS_VPI_VFI;
12231 if (vpip->vfip->vpi_online) {
12232 vpip->vfip->vpi_online--;
12237 if (vpip->flag & EMLXS_VPI_ONLINE_REQ) {
12240 vpip->VPI,
12241 vpip->vfip->vpi_online);
12243 rval = emlxs_vpi_state(port, vpip, VPI_STATE_INIT,
12251 vpip->VPI,
12252 vpip->vfip->vpi_online,
12253 vpip->vfip->VFI);
12256 rval = emlxs_vfi_event(port, FCF_EVENT_VPI_OFFLINE, vpip);
12268 VPIobj_t *vpip;
12271 vpip = (VPIobj_t *)mbq->context;
12276 if (vpip->state != VPI_STATE_INIT) {
12279 vpip->VPI,
12280 emlxs_vpi_state_xlate(vpip->state));
12289 vpip->VPI,
12292 (void) emlxs_vpi_state(port, vpip, VPI_STATE_INIT_FAILED,
12301 vpip->VPI,
12304 vpip->flag |= EMLXS_VPI_INIT;
12305 (void) emlxs_vpi_state(port, vpip, VPI_STATE_INIT_CMPL,
12316 emlxs_vpi_init_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12324 if (vpip->state != VPI_STATE_INIT) {
12328 vpip->VPI,
12329 emlxs_vpi_state_xlate(vpip->state),
12334 if (vpip->prev_state != VPI_STATE_INIT_FAILED) {
12335 vpip->attempts = 0;
12338 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
12341 vpip->VPI,
12342 vpip->attempts);
12344 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
12348 if (!(vpip->flag & EMLXS_VPI_VFI)) {
12349 vpip->flag |= EMLXS_VPI_VFI;
12350 vpip->vfip->vpi_online++;
12354 SLI_INTF_IF_TYPE_0) && (vpip->vfip->vpi_online == 1)) {
12357 vpip->VPI);
12359 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_ONLINE,
12364 if (vpip->flag & EMLXS_VPI_INIT) {
12368 vpip->VPI);
12370 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_ONLINE,
12377 vpip->VPI,
12378 vpip->vfip->vpi_online,
12379 vpip->attempts);
12382 rval = emlxs_vpi_state(port, vpip, FCFI_STATE_REG_FAILED,
12391 mbq->context = (void *)vpip;
12396 mb4->un.varInitVPI4.vfi = vpip->vfip->VFI;
12397 mb4->un.varInitVPI4.vpi = vpip->VPI;
12403 rval = emlxs_vpi_state(port, vpip, VPI_STATE_INIT_FAILED,
12416 emlxs_vpi_init_failed_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12421 vpip->attempts++;
12423 if (vpip->state != VPI_STATE_INIT_FAILED) {
12427 vpip->VPI,
12428 emlxs_vpi_state_xlate(vpip->state),
12430 vpip->attempts);
12434 if ((vpip->reason == FCF_REASON_SEND_FAILED) ||
12435 (vpip->attempts >= 3)) {
12438 vpip->VPI,
12439 vpip->attempts,
12440 vpip->reason);
12442 vpip->flag &= ~(EMLXS_VPI_REG | EMLXS_VPI_INIT);
12444 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
12445 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
12446 rval = emlxs_vpi_state(port, vpip, VPI_STATE_INIT_CMPL,
12447 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
12451 vpip->VPI,
12452 vpip->attempts);
12454 rval = emlxs_vpi_state(port, vpip, VPI_STATE_INIT,
12455 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
12465 emlxs_vpi_init_cmpl_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12470 if (vpip->state != VPI_STATE_INIT_CMPL) {
12474 vpip->VPI,
12475 emlxs_vpi_state_xlate(vpip->state),
12482 vpip->VPI,
12483 vpip->attempts);
12485 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_ONLINE,
12494 emlxs_vpi_port_online_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12501 if (vpip->state != VPI_STATE_PORT_ONLINE) {
12505 vpip->VPI,
12506 emlxs_vpi_state_xlate(vpip->state),
12511 if (vpip->flag & EMLXS_VPI_PORT_ONLINE) {
12514 vpip->VPI);
12517 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
12520 vpip->VPI);
12522 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
12527 if (vpip->fabric_rpip->state == RPI_STATE_FREE) {
12528 emlxs_rpi_alloc_fabric_rpi(vpip->port);
12532 vpip->flag |= EMLXS_VPI_PORT_ONLINE;
12538 vpip->VPI);
12544 vpip->vfip->flogi_vpip = vpip;
12546 bcopy((void *)&vpip->port->sparam,
12547 (void *)&vpip->fabric_rpip->sparam,
12551 vpip->fabric_rpip->sparam.cmn.w2.r_a_tov =
12554 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG,
12566 vpip->VPI,
12567 vpip->vfip->vpi_online);
12576 (void *)vpip->port, 0);
12589 VPIobj_t *vpip = port->vpip;
12599 if (vpip->state == VPI_STATE_OFFLINE) {
12602 vpip->VPI,
12603 emlxs_vpi_state_xlate(vpip->state));
12610 if (vpip->state != VPI_STATE_PORT_ONLINE) {
12614 vpip->VPI,
12615 emlxs_vpi_state_xlate(vpip->state));
12625 vpip->VPI,
12626 emlxs_vpi_state_xlate(vpip->state));
12628 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGI,
12634 vpip->VPI,
12635 emlxs_vpi_state_xlate(vpip->state),
12650 VPIobj_t *vpip = port->vpip;
12655 if (vpip->state != VPI_STATE_LOGI) {
12659 vpip->VPI,
12660 emlxs_vpi_state_xlate(vpip->state));
12669 vpip->VPI,
12670 emlxs_vpi_state_xlate(vpip->state));
12684 vpip->VPI);
12691 vpip->VPI,
12692 emlxs_vpi_state_xlate(vpip->state));
12694 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGI_CMPL,
12700 vpip->VPI,
12701 emlxs_vpi_state_xlate(vpip->state),
12713 vpip->VPI,
12714 emlxs_vpi_state_xlate(vpip->state));
12724 vpip->p2p_rpip = rpip;
12729 vpip->VPI,
12730 emlxs_vpi_state_xlate(vpip->state));
12732 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGI_CMPL,
12738 vpip->VPI,
12739 emlxs_vpi_state_xlate(vpip->state),
12755 VPIobj_t *vpip = port->vpip;
12756 RPIobj_t *rpip = vpip->fabric_rpip;
12766 if (vpip->state != VPI_STATE_LOGI) {
12770 vpip->VPI,
12771 emlxs_vpi_state_xlate(vpip->state));
12774 emlxs_vpi_logo_handler(port, vpip);
12784 vpip->VPI,
12785 emlxs_vpi_state_xlate(vpip->state));
12804 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGI_FAILED,
12822 VPIobj_t *vpip = port->vpip;
12834 emlxs_vpi_logo_handler(port, vpip);
12836 if ((vpip->state == VPI_STATE_OFFLINE) ||
12837 (vpip->flag & EMLXS_VPI_OFFLINE_REQ)) {
12843 vfip = vpip->vfip;
12849 vpip->VPI,
12850 emlxs_vpi_state_xlate(vpip->state),
12853 vpip->index, vpip->VPI);
12855 rval = emlxs_vpi_event(port, FCF_EVENT_VPI_OFFLINE, vpip);
12866 emlxs_vpi_logi_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12874 if (vpip->state != VPI_STATE_LOGI) {
12878 vpip->VPI,
12879 emlxs_vpi_state_xlate(vpip->state),
12884 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
12887 vpip->VPI);
12889 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
12893 if (vpip->flag & EMLXS_VPI_LOGI) {
12896 vpip->VPI, vpip->flag);
12899 emlxs_vpi_logo_handler(port, vpip);
12906 vpip->VPI,
12907 vpip->vfip->logi_count);
12911 vpip->vfip->flogi_vpip = vpip;
12913 if (vpip->vfip->logi_count == 0) {
12914 vpip->vfip->logi_count++;
12915 vpip->flag |= EMLXS_VPI_VFI_LOGI;
12922 if (vpip->vfip->logi_count == 0) {
12925 vpip->VPI,
12926 vpip->vfip->logi_count);
12930 vpip->vfip->flogi_vpip = vpip;
12934 vpip->VPI,
12935 vpip->vfip->logi_count);
12940 vpip->vfip->logi_count++;
12941 vpip->flag |= EMLXS_VPI_VFI_LOGI;
12950 emlxs_vpi_logi_failed_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
12956 if (vpip->state != VPI_STATE_LOGI_FAILED) {
12960 vpip->VPI,
12961 emlxs_vpi_state_xlate(vpip->state),
12967 emlxs_vpi_logo_handler(port, vpip);
12973 vpip->VPI);
12977 vpip->vfip->flogi_vpip = vpip;
12979 bcopy((void *)&vpip->port->sparam,
12980 (void *)&vpip->fabric_rpip->sparam,
12984 vpip->fabric_rpip->sparam.cmn.w2.r_a_tov =
12987 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG,
12994 vpip->VPI);
12996 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
12997 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
12998 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
13007 emlxs_vpi_logi_cmpl_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13016 if (vpip->state != VPI_STATE_LOGI_CMPL) {
13020 vpip->VPI,
13021 emlxs_vpi_state_xlate(vpip->state),
13026 vpip->flag |= EMLXS_VPI_LOGI;
13062 vpip->VPI);
13073 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
13074 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
13075 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
13082 vpip->VPI);
13084 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG,
13094 emlxs_vpi_logo_failed_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13100 vpip->attempts++;
13102 if (vpip->state != VPI_STATE_LOGO_FAILED) {
13106 vpip->VPI,
13107 emlxs_vpi_state_xlate(vpip->state),
13109 vpip->attempts);
13116 vpip->VPI,
13117 vpip->attempts);
13119 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO_CMPL,
13120 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13121 } else if (vpip->attempts >= 3) {
13124 vpip->VPI,
13125 vpip->attempts);
13127 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO_CMPL,
13128 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13132 vpip->VPI,
13133 vpip->attempts);
13135 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO,
13136 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13146 emlxs_vpi_logo_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13150 emlxs_port_t *vport = vpip->port;
13157 if (vpip->state != VPI_STATE_LOGO) {
13161 vpip->VPI,
13162 emlxs_vpi_state_xlate(vpip->state),
13167 if (!(vpip->flag & EMLXS_VPI_LOGI)) {
13170 vpip->VPI);
13172 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
13181 vpip->VPI);
13184 emlxs_vpi_logo_handler(port, vpip);
13186 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
13194 vpip->VPI);
13197 emlxs_vpi_logo_handler(port, vpip);
13199 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
13204 if (vpip->prev_state != VPI_STATE_LOGO_FAILED) {
13205 vpip->attempts = 0;
13213 vpip->VPI,
13214 vpip->attempts,
13222 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO_FAILED,
13259 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO_FAILED,
13266 rval = emlxs_vpi_state(port, vpip, VPI_STATE_LOGO_CMPL,
13276 emlxs_vpi_logo_cmpl_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13281 if (vpip->state != VPI_STATE_LOGO_CMPL) {
13285 vpip->VPI,
13286 emlxs_vpi_state_xlate(vpip->state),
13292 emlxs_vpi_logo_handler(port, vpip);
13296 vpip->VPI,
13297 vpip->attempts);
13299 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
13309 emlxs_vpi_unreg_failed_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13314 vpip->attempts++;
13316 if (vpip->state != VPI_STATE_UNREG_FAILED) {
13320 vpip->VPI,
13321 emlxs_vpi_state_xlate(vpip->state),
13323 vpip->attempts);
13327 if ((vpip->reason == FCF_REASON_SEND_FAILED) ||
13328 (vpip->attempts >= 3)) {
13331 vpip->VPI,
13332 vpip->attempts);
13334 vpip->flag &= ~(EMLXS_VPI_REG | EMLXS_VPI_INIT);
13336 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
13337 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
13338 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG_CMPL,
13339 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13343 vpip->VPI,
13344 vpip->attempts);
13346 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG,
13347 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13361 VPIobj_t *vpip;
13363 vpip = (VPIobj_t *)mbq->context;
13368 if (vpip->state != VPI_STATE_UNREG) {
13371 vpip->VPI,
13372 emlxs_vpi_state_xlate(vpip->state));
13381 vpip->VPI,
13384 (void) emlxs_vpi_state(port, vpip, VPI_STATE_UNREG_FAILED,
13393 vpip->VPI);
13395 vpip->flag &= ~(EMLXS_VPI_REG | EMLXS_VPI_INIT);
13396 (void) emlxs_vpi_state(port, vpip, VPI_STATE_UNREG_CMPL, 0, 0, 0);
13406 emlxs_vpi_unreg_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13414 if (vpip->state != VPI_STATE_UNREG) {
13418 vpip->VPI,
13419 emlxs_vpi_state_xlate(vpip->state),
13424 if ((vpip->rpi_online > vpip->rpi_paused) ||
13425 (vpip->fabric_rpip->state != RPI_STATE_FREE)) {
13428 "Waiting for RPI's.", vpip->VPI, vpip->rpi_online,
13429 vpip->rpi_paused, vpip->fabric_rpip->state);
13431 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PORT_OFFLINE,
13436 if (!(vpip->flag & EMLXS_VPI_REG)) {
13439 vpip->VPI);
13441 rval = emlxs_vpi_state(port, vpip, VPI_STATE_OFFLINE,
13446 if (vpip->flag & EMLXS_VPI_PAUSE_REQ) {
13449 vpip->VPI,
13450 vpip->rpi_online, vpip->rpi_paused);
13452 rval = emlxs_vpi_state(port, vpip, VPI_STATE_PAUSED,
13457 if (vpip->prev_state != VPI_STATE_UNREG_FAILED) {
13458 vpip->attempts = 0;
13463 vpip->VPI,
13464 vpip->attempts);
13467 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG_FAILED,
13477 mbq->context = (void *)vpip;
13478 mbq->port = (void *)vpip->port;
13481 mb4->un.varUnRegVPI4.index = vpip->VPI;
13489 rval = emlxs_vpi_state(port, vpip, VPI_STATE_UNREG_FAILED,
13502 emlxs_vpi_unreg_cmpl_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13507 if (vpip->state != VPI_STATE_UNREG_CMPL) {
13511 vpip->VPI,
13512 emlxs_vpi_state_xlate(vpip->state),
13519 vpip->VPI,
13520 vpip->attempts);
13522 rval = emlxs_vpi_state(port, vpip, VPI_STATE_OFFLINE,
13532 emlxs_vpi_reg_failed_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13537 vpip->attempts++;
13539 if (vpip->state != VPI_STATE_REG_FAILED) {
13543 vpip->VPI,
13544 emlxs_vpi_state_xlate(vpip->state),
13546 vpip->attempts);
13550 if ((vpip->reason == FCF_REASON_SEND_FAILED) ||
13551 (vpip->attempts >= 3)) {
13554 vpip->VPI,
13555 vpip->attempts,
13556 vpip->reason);
13558 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
13559 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
13560 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG_CMPL,
13561 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13565 vpip->VPI,
13566 vpip->attempts);
13568 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG,
13569 FCF_REASON_OP_FAILED, vpip->attempts, arg1);
13583 VPIobj_t *vpip;
13585 vpip = (VPIobj_t *)mbq->context;
13590 if (vpip->state != VPI_STATE_REG) {
13593 vpip->VPI,
13594 emlxs_vpi_state_xlate(vpip->state));
13603 vpip->VPI,
13607 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
13610 (void) emlxs_vpi_state(port, vpip, VPI_STATE_REG_FAILED,
13619 vpip->VPI);
13621 vpip->flag |= EMLXS_VPI_REG;
13622 (void) emlxs_vpi_state(port, vpip, VPI_STATE_REG_CMPL,
13633 emlxs_vpi_reg_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13642 if (vpip->state != VPI_STATE_REG) {
13646 vpip->VPI,
13647 emlxs_vpi_state_xlate(vpip->state),
13652 if (vpip->prev_state != VPI_STATE_REG_FAILED) {
13653 vpip->attempts = 0;
13656 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
13659 vpip->VPI,
13660 vpip->attempts);
13662 rval = emlxs_vpi_offline_handler(port, vpip, 0);
13666 if (!(vpip->vfip->flag & EMLXS_VFI_REG)) {
13671 if (vpip == vpip->vfip->flogi_vpip) {
13674 vpip->VPI);
13676 rval = emlxs_vpi_state(port, vpip, VPI_STATE_ONLINE,
13685 vpip->VPI,
13686 vpip->attempts);
13688 vpip->flag &= ~EMLXS_VPI_REQ_MASK;
13689 vpip->flag |= EMLXS_VPI_OFFLINE_REQ;
13690 rval = emlxs_vpi_offline_handler(port, vpip, 0);
13694 if (vpip->flag & EMLXS_VPI_REG) {
13697 vpip->VPI,
13698 vpip->attempts);
13702 vpip->VPI,
13703 vpip->attempts);
13707 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG_FAILED,
13717 mbq->context = (void *)vpip;
13718 mbq->port = (void *)vpip->port;
13720 mb->un.varRegVpi.vfi = vpip->vfip->VFI;
13721 mb->un.varRegVpi.upd = (vpip->flag & EMLXS_VPI_REG)? 1:0;
13728 mb->un.varRegVpi.vpi = vpip->VPI;
13729 mb->un.varRegVpi.sid = vpip->port->did;
13737 rval = emlxs_vpi_state(port, vpip, VPI_STATE_REG_FAILED,
13750 emlxs_vpi_reg_cmpl_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13755 if (vpip->state != VPI_STATE_REG_CMPL) {
13759 vpip->VPI,
13760 emlxs_vpi_state_xlate(vpip->state),
13765 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
13768 vpip->VPI,
13769 vpip->attempts);
13771 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
13777 vpip->VPI,
13778 vpip->attempts);
13780 rval = emlxs_vpi_state(port, vpip, VPI_STATE_ONLINE,
13790 emlxs_vpi_online_action(emlxs_port_t *port, VPIobj_t *vpip, uint32_t evt,
13795 if (vpip->state != VPI_STATE_ONLINE) {
13799 vpip->VPI,
13800 emlxs_vpi_state_xlate(vpip->state),
13805 vpip->flag &= ~EMLXS_VPI_ONLINE_REQ;
13807 if (vpip->flag & EMLXS_VPI_OFFLINE_REQ) {
13810 vpip->VPI,
13811 vpip->attempts);
13813 rval = emlxs_vpi_offline_handler(port, vpip, arg1);
13819 vpip->VPI,
13820 vpip->vfip->VFI);
13823 rval = emlxs_vfi_event(port, FCF_EVENT_VPI_ONLINE, vpip);
14031 port->vpip->VPI,
14086 (void) emlxs_rpi_state(rpip->vpip->port, rpip, RPI_STATE_FREE,
14113 rpip->vpip = port->vpip;
14141 fabric_rpip = port->vpip->fabric_rpip;
14154 fabric_rpip->vpip = port->vpip;
14192 return (port->vpip->fabric_rpip);
14235 if ((rpip->did == did) && (rpip->vpip == port->vpip)) {
14405 rpip = port->vpip->fabric_rpip;
14645 if (rpip->vpip->p2p_rpip == rpip) {
14646 rpip->vpip->p2p_rpip = NULL;
14812 VPIobj_t *vpip;
14815 vpip = rpip->vpip;
14864 if (!(vpip->flag & EMLXS_VPI_PAUSE_REQ)) {
14869 vpip->rpi_online, vpip->rpi_paused,
14870 rpip->xri_count, vpip->VPI);
14941 VPIobj_t *vpip;
14943 vpip = rpip->vpip;
14970 vpip->rpi_online, vpip->rpi_paused);
14983 VPIobj_t *vpip;
14985 vpip = rpip->vpip;
15000 if (vpip->rpi_paused) {
15001 vpip->rpi_paused--;
15008 if (vpip->rpi_online) {
15009 vpip->rpi_online--;
15013 if (vpip->rpi_online < vpip->rpi_paused) {
15014 vpip->rpi_paused = vpip->rpi_online;
15023 vpip->rpi_online, vpip->rpi_paused,
15032 if ((vpip->rpi_online == 0) ||
15033 (vpip->rpi_online == vpip->rpi_paused)) {
15039 vpip->rpi_online, vpip->rpi_paused,
15041 vpip->VPI);
15051 vpip->rpi_online, vpip->rpi_paused,
15068 VPIobj_t *vpip;
15071 vpip = rpip->vpip;
15083 if (!(vpip->flag & EMLXS_VPI_PAUSE_REQ)) {
15088 vpip->rpi_online, vpip->rpi_paused,
15090 vpip->VPI);
15099 vpip->rpi_paused++;
15103 if (vpip->rpi_online == vpip->rpi_paused) {
15109 vpip->rpi_online, vpip->rpi_paused,
15111 vpip->VPI);
15121 vpip->rpi_online, vpip->rpi_paused,
15183 VPIobj_t *vpip = rpip->vpip;
15225 if (vpip->rpi_paused) {
15226 vpip->rpi_paused--;
15233 if (vpip->rpi_online) {
15234 vpip->rpi_online--;
15238 if (vpip->rpi_online < vpip->rpi_paused) {
15239 vpip->rpi_paused = vpip->rpi_online;
15321 VPIobj_t *vpip = rpip->vpip;
15354 rpip->vpip->VPI);
15388 mb4->un.varUnregLogin.vpi = vpip->VPI;
15498 VPIobj_t *vpip;
15501 vpip = rpip->vpip;
15508 if (vpip->rpi_paused) {
15509 vpip->rpi_paused--;
15515 vpip->rpi_online++;
15652 rpip->vpip->VPI);
15724 mb4->un.varRegLogin.vpi = rpip->vpip->VPI;
15837 if (rpip->vpip->rpi_paused) {
15838 rpip->vpip->rpi_paused--;
16074 rpip->vpip->VPI);
16077 p2p_rpip = rpip->vpip->p2p_rpip;
16079 rpip->vpip->p2p_rpip = NULL;
16098 rpip->vpip->VPI);