Lines Matching defs:lps

115 static void bfa_lps_free(struct bfa_lps_s *lps);
116 static void bfa_lps_send_login(struct bfa_lps_s *lps);
117 static void bfa_lps_send_logout(struct bfa_lps_s *lps);
118 static void bfa_lps_send_set_n2n_pid(struct bfa_lps_s *lps);
119 static void bfa_lps_login_comp(struct bfa_lps_s *lps);
120 static void bfa_lps_logout_comp(struct bfa_lps_s *lps);
121 static void bfa_lps_cvl_event(struct bfa_lps_s *lps);
126 static void bfa_lps_sm_init(struct bfa_lps_s *lps, enum bfa_lps_event event);
127 static void bfa_lps_sm_login(struct bfa_lps_s *lps, enum bfa_lps_event event);
128 static void bfa_lps_sm_loginwait(struct bfa_lps_s *lps, enum bfa_lps_event
130 static void bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event);
131 static void bfa_lps_sm_online_n2n_pid_wait(struct bfa_lps_s *lps,
133 static void bfa_lps_sm_logout(struct bfa_lps_s *lps, enum bfa_lps_event event);
134 static void bfa_lps_sm_logowait(struct bfa_lps_s *lps, enum bfa_lps_event
1163 bfa_lps_sm_init(struct bfa_lps_s *lps, enum bfa_lps_event event)
1165 bfa_trc(lps->bfa, lps->bfa_tag);
1166 bfa_trc(lps->bfa, event);
1170 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1171 bfa_sm_set_state(lps, bfa_lps_sm_loginwait);
1172 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1174 bfa_sm_set_state(lps, bfa_lps_sm_login);
1175 bfa_lps_send_login(lps);
1178 if (lps->fdisc)
1179 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1182 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1187 bfa_lps_logout_comp(lps);
1191 bfa_lps_free(lps);
1201 * the lps request. Fw will eventually sent out the timeout
1213 bfa_sm_fault(lps->bfa, event);
1221 bfa_lps_sm_login(struct bfa_lps_s *lps, enum bfa_lps_event event)
1223 bfa_trc(lps->bfa, lps->bfa_tag);
1224 bfa_trc(lps->bfa, event);
1228 if (lps->status == BFA_STATUS_OK) {
1229 bfa_sm_set_state(lps, bfa_lps_sm_online);
1230 if (lps->fdisc)
1231 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1234 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1237 bfa_trc(lps->bfa, lps->fport);
1238 bfa_trc(lps->bfa, lps->lp_pid);
1240 if (!lps->fport && lps->lp_pid)
1241 bfa_sm_send_event(lps, BFA_LPS_SM_SET_N2N_PID);
1243 bfa_sm_set_state(lps, bfa_lps_sm_init);
1244 if (lps->fdisc)
1245 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1249 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1253 bfa_lps_login_comp(lps);
1258 bfa_sm_set_state(lps, bfa_lps_sm_init);
1262 bfa_trc(lps->bfa, lps->fport);
1263 bfa_trc(lps->bfa, lps->lp_pid);
1267 bfa_sm_fault(lps->bfa, event);
1275 bfa_lps_sm_loginwait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1277 bfa_trc(lps->bfa, lps->bfa_tag);
1278 bfa_trc(lps->bfa, event);
1282 bfa_sm_set_state(lps, bfa_lps_sm_login);
1283 bfa_lps_send_login(lps);
1288 bfa_sm_set_state(lps, bfa_lps_sm_init);
1289 bfa_reqq_wcancel(&lps->wqe);
1301 bfa_sm_fault(lps->bfa, event);
1309 bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event)
1311 bfa_trc(lps->bfa, lps->bfa_tag);
1312 bfa_trc(lps->bfa, event);
1316 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1317 bfa_sm_set_state(lps, bfa_lps_sm_logowait);
1318 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1320 bfa_sm_set_state(lps, bfa_lps_sm_logout);
1321 bfa_lps_send_logout(lps);
1323 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1328 bfa_sm_set_state(lps, bfa_lps_sm_init);
1331 bfa_lps_cvl_event(lps);
1332 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1337 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1338 bfa_sm_set_state(lps, bfa_lps_sm_online_n2n_pid_wait);
1339 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1341 bfa_lps_send_set_n2n_pid(lps);
1346 bfa_sm_set_state(lps, bfa_lps_sm_init);
1350 bfa_sm_fault(lps->bfa, event);
1358 bfa_lps_sm_online_n2n_pid_wait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1360 bfa_trc(lps->bfa, lps->bfa_tag);
1361 bfa_trc(lps->bfa, event);
1365 bfa_sm_set_state(lps, bfa_lps_sm_online);
1366 bfa_lps_send_set_n2n_pid(lps);
1370 bfa_sm_set_state(lps, bfa_lps_sm_logowait);
1371 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1376 bfa_sm_set_state(lps, bfa_lps_sm_init);
1377 bfa_reqq_wcancel(&lps->wqe);
1380 bfa_lps_cvl_event(lps);
1381 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1387 bfa_sm_set_state(lps, bfa_lps_sm_init);
1388 bfa_reqq_wcancel(&lps->wqe);
1392 bfa_sm_fault(lps->bfa, event);
1400 bfa_lps_sm_logout(struct bfa_lps_s *lps, enum bfa_lps_event event)
1402 bfa_trc(lps->bfa, lps->bfa_tag);
1403 bfa_trc(lps->bfa, event);
1408 bfa_sm_set_state(lps, bfa_lps_sm_init);
1409 bfa_lps_logout_comp(lps);
1413 bfa_sm_set_state(lps, bfa_lps_sm_init);
1417 bfa_sm_fault(lps->bfa, event);
1425 bfa_lps_sm_logowait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1427 bfa_trc(lps->bfa, lps->bfa_tag);
1428 bfa_trc(lps->bfa, event);
1432 bfa_sm_set_state(lps, bfa_lps_sm_logout);
1433 bfa_lps_send_logout(lps);
1438 bfa_sm_set_state(lps, bfa_lps_sm_init);
1439 bfa_reqq_wcancel(&lps->wqe);
1443 bfa_sm_fault(lps->bfa, event);
1478 struct bfa_lps_s *lps;
1486 mod->lps_arr = lps = (struct bfa_lps_s *) bfa_mem_kva_curp(mod);
1494 for (i = 0; i < mod->num_lps; i++, lps++) {
1495 lps->bfa = bfa;
1496 lps->bfa_tag = (u8) i;
1497 lps->reqq = BFA_REQQ_LPS;
1498 bfa_reqq_winit(&lps->wqe, bfa_lps_reqq_resume, lps);
1499 list_add_tail(&lps->qe, &mod->lps_free_q);
1504 * IOC in disabled state -- consider all lps offline
1510 struct bfa_lps_s *lps;
1514 lps = (struct bfa_lps_s *) qe;
1515 bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE);
1518 lps = (struct bfa_lps_s *) qe;
1519 bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE);
1531 struct bfa_lps_s *lps;
1534 lps = BFA_LPS_FROM_TAG(mod, rsp->bfa_tag);
1536 lps->status = rsp->status;
1539 lps->fw_tag = rsp->fw_tag;
1540 lps->fport = rsp->f_port;
1541 if (lps->fport)
1542 lps->lp_pid = rsp->lp_pid;
1543 lps->npiv_en = rsp->npiv_en;
1544 lps->pr_bbcred = be16_to_cpu(rsp->bb_credit);
1545 lps->pr_pwwn = rsp->port_name;
1546 lps->pr_nwwn = rsp->node_name;
1547 lps->auth_req = rsp->auth_req;
1548 lps->lp_mac = rsp->lp_mac;
1549 lps->brcd_switch = rsp->brcd_switch;
1550 lps->fcf_mac = rsp->fcf_mac;
1555 lps->lsrjt_rsn = rsp->lsrjt_rsn;
1556 lps->lsrjt_expl = rsp->lsrjt_expl;
1561 lps->ext_status = rsp->ext_status;
1567 bfa_lps_no_res(lps, rsp->ext_status);
1575 list_del(&lps->qe);
1576 list_add_tail(&lps->qe, &mod->lps_active_q);
1577 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1586 struct bfa_lps_s *lps;
1594 lps = (struct bfa_lps_s *)qe;
1595 bfa_trc(bfa, lps->bfa_tag);
1596 lps->status = first_lps->status;
1597 list_del(&lps->qe);
1598 list_add_tail(&lps->qe, &mod->lps_active_q);
1599 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1612 struct bfa_lps_s *lps;
1615 lps = BFA_LPS_FROM_TAG(mod, rsp->bfa_tag);
1617 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1627 struct bfa_lps_s *lps;
1629 lps = BFA_LPS_FROM_TAG(mod, cvl->bfa_tag);
1631 bfa_sm_send_event(lps, BFA_LPS_SM_RX_CVL);
1640 struct bfa_lps_s *lps = lps_arg;
1642 bfa_sm_send_event(lps, BFA_LPS_SM_RESUME);
1646 * lps is freed -- triggered by vport delete
1649 bfa_lps_free(struct bfa_lps_s *lps)
1651 struct bfa_lps_mod_s *mod = BFA_LPS_MOD(lps->bfa);
1653 lps->lp_pid = 0;
1654 list_del(&lps->qe);
1655 list_add_tail(&lps->qe, &mod->lps_free_q);
1662 bfa_lps_send_login(struct bfa_lps_s *lps)
1664 struct bfa_lps_mod_s *mod = BFA_LPS_MOD(lps->bfa);
1667 m = bfa_reqq_next(lps->bfa, lps->reqq);
1671 bfa_fn_lpu(lps->bfa));
1673 m->bfa_tag = lps->bfa_tag;
1674 m->alpa = lps->alpa;
1675 m->pdu_size = cpu_to_be16(lps->pdusz);
1676 m->pwwn = lps->pwwn;
1677 m->nwwn = lps->nwwn;
1678 m->fdisc = lps->fdisc;
1679 m->auth_en = lps->auth_en;
1681 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1682 list_del(&lps->qe);
1683 list_add_tail(&lps->qe, &mod->lps_login_q);
1690 bfa_lps_send_logout(struct bfa_lps_s *lps)
1694 m = bfa_reqq_next(lps->bfa, lps->reqq);
1698 bfa_fn_lpu(lps->bfa));
1700 m->fw_tag = lps->fw_tag;
1701 m->port_name = lps->pwwn;
1702 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1709 bfa_lps_send_set_n2n_pid(struct bfa_lps_s *lps)
1713 m = bfa_reqq_next(lps->bfa, lps->reqq);
1717 bfa_fn_lpu(lps->bfa));
1719 m->fw_tag = lps->fw_tag;
1720 m->lp_pid = lps->lp_pid;
1721 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1730 struct bfa_lps_s *lps = arg;
1735 if (lps->fdisc)
1736 bfa_cb_lps_fdisc_comp(lps->bfa->bfad, lps->uarg, lps->status);
1738 bfa_cb_lps_flogi_comp(lps->bfa->bfad, lps->uarg, lps->status);
1745 bfa_lps_login_comp(struct bfa_lps_s *lps)
1747 if (!lps->bfa->fcs) {
1748 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_login_comp_cb,
1749 lps);
1753 if (lps->fdisc)
1754 bfa_cb_lps_fdisc_comp(lps->bfa->bfad, lps->uarg, lps->status);
1756 bfa_cb_lps_flogi_comp(lps->bfa->bfad, lps->uarg, lps->status);
1765 struct bfa_lps_s *lps = arg;
1770 if (lps->fdisc)
1771 bfa_cb_lps_fdisclogo_comp(lps->bfa->bfad, lps->uarg);
1773 bfa_cb_lps_flogo_comp(lps->bfa->bfad, lps->uarg);
1780 bfa_lps_logout_comp(struct bfa_lps_s *lps)
1782 if (!lps->bfa->fcs) {
1783 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_logout_comp_cb,
1784 lps);
1787 if (lps->fdisc)
1788 bfa_cb_lps_fdisclogo_comp(lps->bfa->bfad, lps->uarg);
1797 struct bfa_lps_s *lps = arg;
1803 if (lps->fdisc)
1804 bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
1812 bfa_lps_cvl_event(struct bfa_lps_s *lps)
1814 if (!lps->bfa->fcs) {
1815 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_cvl_event_cb,
1816 lps);
1821 if (lps->fdisc)
1822 bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
1847 struct bfa_lps_s *lps = NULL;
1849 bfa_q_deq(&mod->lps_free_q, &lps);
1851 if (lps == NULL)
1854 list_add_tail(&lps->qe, &mod->lps_active_q);
1856 bfa_sm_set_state(lps, bfa_lps_sm_init);
1857 return lps;
1865 bfa_lps_delete(struct bfa_lps_s *lps)
1867 bfa_sm_send_event(lps, BFA_LPS_SM_DELETE);
1874 bfa_lps_flogi(struct bfa_lps_s *lps, void *uarg, u8 alpa, u16 pdusz,
1877 lps->uarg = uarg;
1878 lps->alpa = alpa;
1879 lps->pdusz = pdusz;
1880 lps->pwwn = pwwn;
1881 lps->nwwn = nwwn;
1882 lps->fdisc = BFA_FALSE;
1883 lps->auth_en = auth_en;
1884 bfa_sm_send_event(lps, BFA_LPS_SM_LOGIN);
1891 bfa_lps_fdisc(struct bfa_lps_s *lps, void *uarg, u16 pdusz, wwn_t pwwn,
1894 lps->uarg = uarg;
1895 lps->alpa = 0;
1896 lps->pdusz = pdusz;
1897 lps->pwwn = pwwn;
1898 lps->nwwn = nwwn;
1899 lps->fdisc = BFA_TRUE;
1900 lps->auth_en = BFA_FALSE;
1901 bfa_sm_send_event(lps, BFA_LPS_SM_LOGIN);
1909 bfa_lps_fdisclogo(struct bfa_lps_s *lps)
1911 bfa_sm_send_event(lps, BFA_LPS_SM_LOGOUT);
1929 struct bfa_lps_s *lps;
1932 for (i = 0, lps = mod->lps_arr; i < mod->num_lps; i++, lps++) {
1933 if (lps->lp_pid == pid)
1934 return lps->bfa_tag;
1957 bfa_lps_set_n2n_pid(struct bfa_lps_s *lps, uint32_t n2n_pid)
1959 bfa_trc(lps->bfa, lps->bfa_tag);
1960 bfa_trc(lps->bfa, n2n_pid);
1962 lps->lp_pid = n2n_pid;
1963 bfa_sm_send_event(lps, BFA_LPS_SM_SET_N2N_PID);