Lines Matching defs:lps
85 static void bfa_lps_free(struct bfa_lps_s *lps);
86 static void bfa_lps_send_login(struct bfa_lps_s *lps);
87 static void bfa_lps_send_logout(struct bfa_lps_s *lps);
88 static void bfa_lps_send_set_n2n_pid(struct bfa_lps_s *lps);
89 static void bfa_lps_login_comp(struct bfa_lps_s *lps);
90 static void bfa_lps_logout_comp(struct bfa_lps_s *lps);
91 static void bfa_lps_cvl_event(struct bfa_lps_s *lps);
96 static void bfa_lps_sm_init(struct bfa_lps_s *lps, enum bfa_lps_event event);
97 static void bfa_lps_sm_login(struct bfa_lps_s *lps, enum bfa_lps_event event);
98 static void bfa_lps_sm_loginwait(struct bfa_lps_s *lps, enum bfa_lps_event
100 static void bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event);
101 static void bfa_lps_sm_online_n2n_pid_wait(struct bfa_lps_s *lps,
103 static void bfa_lps_sm_logout(struct bfa_lps_s *lps, enum bfa_lps_event event);
104 static void bfa_lps_sm_logowait(struct bfa_lps_s *lps, enum bfa_lps_event
1126 bfa_lps_sm_init(struct bfa_lps_s *lps, enum bfa_lps_event event)
1128 bfa_trc(lps->bfa, lps->bfa_tag);
1129 bfa_trc(lps->bfa, event);
1133 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1134 bfa_sm_set_state(lps, bfa_lps_sm_loginwait);
1135 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1137 bfa_sm_set_state(lps, bfa_lps_sm_login);
1138 bfa_lps_send_login(lps);
1141 if (lps->fdisc)
1142 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1145 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1150 bfa_lps_logout_comp(lps);
1154 bfa_lps_free(lps);
1164 * the lps request. Fw will eventually sent out the timeout
1176 bfa_sm_fault(lps->bfa, event);
1184 bfa_lps_sm_login(struct bfa_lps_s *lps, enum bfa_lps_event event)
1186 bfa_trc(lps->bfa, lps->bfa_tag);
1187 bfa_trc(lps->bfa, event);
1191 if (lps->status == BFA_STATUS_OK) {
1192 bfa_sm_set_state(lps, bfa_lps_sm_online);
1193 if (lps->fdisc)
1194 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1197 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1200 bfa_trc(lps->bfa, lps->fport);
1201 bfa_trc(lps->bfa, lps->lp_pid);
1203 if (!lps->fport && lps->lp_pid)
1204 bfa_sm_send_event(lps, BFA_LPS_SM_SET_N2N_PID);
1206 bfa_sm_set_state(lps, bfa_lps_sm_init);
1207 if (lps->fdisc)
1208 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1212 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1216 bfa_lps_login_comp(lps);
1221 bfa_sm_set_state(lps, bfa_lps_sm_init);
1225 bfa_trc(lps->bfa, lps->fport);
1226 bfa_trc(lps->bfa, lps->lp_pid);
1230 bfa_sm_fault(lps->bfa, event);
1238 bfa_lps_sm_loginwait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1240 bfa_trc(lps->bfa, lps->bfa_tag);
1241 bfa_trc(lps->bfa, event);
1245 bfa_sm_set_state(lps, bfa_lps_sm_login);
1246 bfa_lps_send_login(lps);
1251 bfa_sm_set_state(lps, bfa_lps_sm_init);
1252 bfa_reqq_wcancel(&lps->wqe);
1264 bfa_sm_fault(lps->bfa, event);
1272 bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event)
1274 bfa_trc(lps->bfa, lps->bfa_tag);
1275 bfa_trc(lps->bfa, event);
1279 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1280 bfa_sm_set_state(lps, bfa_lps_sm_logowait);
1281 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1283 bfa_sm_set_state(lps, bfa_lps_sm_logout);
1284 bfa_lps_send_logout(lps);
1286 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1291 bfa_sm_set_state(lps, bfa_lps_sm_init);
1294 bfa_lps_cvl_event(lps);
1295 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1300 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1301 bfa_sm_set_state(lps, bfa_lps_sm_online_n2n_pid_wait);
1302 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1304 bfa_lps_send_set_n2n_pid(lps);
1309 bfa_sm_set_state(lps, bfa_lps_sm_init);
1313 bfa_sm_fault(lps->bfa, event);
1321 bfa_lps_sm_online_n2n_pid_wait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1323 bfa_trc(lps->bfa, lps->bfa_tag);
1324 bfa_trc(lps->bfa, event);
1328 bfa_sm_set_state(lps, bfa_lps_sm_online);
1329 bfa_lps_send_set_n2n_pid(lps);
1333 bfa_sm_set_state(lps, bfa_lps_sm_logowait);
1334 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1339 bfa_sm_set_state(lps, bfa_lps_sm_init);
1340 bfa_reqq_wcancel(&lps->wqe);
1343 bfa_lps_cvl_event(lps);
1344 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1350 bfa_sm_set_state(lps, bfa_lps_sm_init);
1351 bfa_reqq_wcancel(&lps->wqe);
1355 bfa_sm_fault(lps->bfa, event);
1363 bfa_lps_sm_logout(struct bfa_lps_s *lps, enum bfa_lps_event event)
1365 bfa_trc(lps->bfa, lps->bfa_tag);
1366 bfa_trc(lps->bfa, event);
1371 bfa_sm_set_state(lps, bfa_lps_sm_init);
1372 bfa_lps_logout_comp(lps);
1376 bfa_sm_set_state(lps, bfa_lps_sm_init);
1380 bfa_sm_fault(lps->bfa, event);
1388 bfa_lps_sm_logowait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1390 bfa_trc(lps->bfa, lps->bfa_tag);
1391 bfa_trc(lps->bfa, event);
1395 bfa_sm_set_state(lps, bfa_lps_sm_logout);
1396 bfa_lps_send_logout(lps);
1401 bfa_sm_set_state(lps, bfa_lps_sm_init);
1402 bfa_reqq_wcancel(&lps->wqe);
1406 bfa_sm_fault(lps->bfa, event);
1441 struct bfa_lps_s *lps;
1449 mod->lps_arr = lps = (struct bfa_lps_s *) bfa_mem_kva_curp(mod);
1457 for (i = 0; i < mod->num_lps; i++, lps++) {
1458 lps->bfa = bfa;
1459 lps->bfa_tag = (u8) i;
1460 lps->reqq = BFA_REQQ_LPS;
1461 bfa_reqq_winit(&lps->wqe, bfa_lps_reqq_resume, lps);
1462 list_add_tail(&lps->qe, &mod->lps_free_q);
1467 * IOC in disabled state -- consider all lps offline
1473 struct bfa_lps_s *lps;
1477 lps = (struct bfa_lps_s *) qe;
1478 bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE);
1481 lps = (struct bfa_lps_s *) qe;
1482 bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE);
1494 struct bfa_lps_s *lps;
1497 lps = BFA_LPS_FROM_TAG(mod, rsp->bfa_tag);
1499 lps->status = rsp->status;
1502 lps->fw_tag = rsp->fw_tag;
1503 lps->fport = rsp->f_port;
1504 if (lps->fport)
1505 lps->lp_pid = rsp->lp_pid;
1506 lps->npiv_en = rsp->npiv_en;
1507 lps->pr_bbcred = be16_to_cpu(rsp->bb_credit);
1508 lps->pr_pwwn = rsp->port_name;
1509 lps->pr_nwwn = rsp->node_name;
1510 lps->auth_req = rsp->auth_req;
1511 lps->lp_mac = rsp->lp_mac;
1512 lps->brcd_switch = rsp->brcd_switch;
1513 lps->fcf_mac = rsp->fcf_mac;
1518 lps->lsrjt_rsn = rsp->lsrjt_rsn;
1519 lps->lsrjt_expl = rsp->lsrjt_expl;
1524 lps->ext_status = rsp->ext_status;
1530 bfa_lps_no_res(lps, rsp->ext_status);
1538 list_del(&lps->qe);
1539 list_add_tail(&lps->qe, &mod->lps_active_q);
1540 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1549 struct bfa_lps_s *lps;
1557 lps = (struct bfa_lps_s *)qe;
1558 bfa_trc(bfa, lps->bfa_tag);
1559 lps->status = first_lps->status;
1560 list_del(&lps->qe);
1561 list_add_tail(&lps->qe, &mod->lps_active_q);
1562 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1575 struct bfa_lps_s *lps;
1578 lps = BFA_LPS_FROM_TAG(mod, rsp->bfa_tag);
1580 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1590 struct bfa_lps_s *lps;
1592 lps = BFA_LPS_FROM_TAG(mod, cvl->bfa_tag);
1594 bfa_sm_send_event(lps, BFA_LPS_SM_RX_CVL);
1603 struct bfa_lps_s *lps = lps_arg;
1605 bfa_sm_send_event(lps, BFA_LPS_SM_RESUME);
1609 * lps is freed -- triggered by vport delete
1612 bfa_lps_free(struct bfa_lps_s *lps)
1614 struct bfa_lps_mod_s *mod = BFA_LPS_MOD(lps->bfa);
1616 lps->lp_pid = 0;
1617 list_del(&lps->qe);
1618 list_add_tail(&lps->qe, &mod->lps_free_q);
1625 bfa_lps_send_login(struct bfa_lps_s *lps)
1627 struct bfa_lps_mod_s *mod = BFA_LPS_MOD(lps->bfa);
1630 m = bfa_reqq_next(lps->bfa, lps->reqq);
1634 bfa_fn_lpu(lps->bfa));
1636 m->bfa_tag = lps->bfa_tag;
1637 m->alpa = lps->alpa;
1638 m->pdu_size = cpu_to_be16(lps->pdusz);
1639 m->pwwn = lps->pwwn;
1640 m->nwwn = lps->nwwn;
1641 m->fdisc = lps->fdisc;
1642 m->auth_en = lps->auth_en;
1644 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1645 list_del(&lps->qe);
1646 list_add_tail(&lps->qe, &mod->lps_login_q);
1653 bfa_lps_send_logout(struct bfa_lps_s *lps)
1657 m = bfa_reqq_next(lps->bfa, lps->reqq);
1661 bfa_fn_lpu(lps->bfa));
1663 m->fw_tag = lps->fw_tag;
1664 m->port_name = lps->pwwn;
1665 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1672 bfa_lps_send_set_n2n_pid(struct bfa_lps_s *lps)
1676 m = bfa_reqq_next(lps->bfa, lps->reqq);
1680 bfa_fn_lpu(lps->bfa));
1682 m->fw_tag = lps->fw_tag;
1683 m->lp_pid = lps->lp_pid;
1684 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1693 struct bfa_lps_s *lps = arg;
1698 if (lps->fdisc)
1699 bfa_cb_lps_fdisc_comp(lps->bfa->bfad, lps->uarg, lps->status);
1701 bfa_cb_lps_flogi_comp(lps->bfa->bfad, lps->uarg, lps->status);
1708 bfa_lps_login_comp(struct bfa_lps_s *lps)
1710 if (!lps->bfa->fcs) {
1711 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_login_comp_cb,
1712 lps);
1716 if (lps->fdisc)
1717 bfa_cb_lps_fdisc_comp(lps->bfa->bfad, lps->uarg, lps->status);
1719 bfa_cb_lps_flogi_comp(lps->bfa->bfad, lps->uarg, lps->status);
1728 struct bfa_lps_s *lps = arg;
1733 if (lps->fdisc)
1734 bfa_cb_lps_fdisclogo_comp(lps->bfa->bfad, lps->uarg);
1736 bfa_cb_lps_flogo_comp(lps->bfa->bfad, lps->uarg);
1743 bfa_lps_logout_comp(struct bfa_lps_s *lps)
1745 if (!lps->bfa->fcs) {
1746 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_logout_comp_cb,
1747 lps);
1750 if (lps->fdisc)
1751 bfa_cb_lps_fdisclogo_comp(lps->bfa->bfad, lps->uarg);
1760 struct bfa_lps_s *lps = arg;
1766 if (lps->fdisc)
1767 bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
1775 bfa_lps_cvl_event(struct bfa_lps_s *lps)
1777 if (!lps->bfa->fcs) {
1778 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_cvl_event_cb,
1779 lps);
1784 if (lps->fdisc)
1785 bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
1810 struct bfa_lps_s *lps = NULL;
1812 bfa_q_deq(&mod->lps_free_q, &lps);
1814 if (lps == NULL)
1817 list_add_tail(&lps->qe, &mod->lps_active_q);
1819 bfa_sm_set_state(lps, bfa_lps_sm_init);
1820 return lps;
1828 bfa_lps_delete(struct bfa_lps_s *lps)
1830 bfa_sm_send_event(lps, BFA_LPS_SM_DELETE);
1837 bfa_lps_flogi(struct bfa_lps_s *lps, void *uarg, u8 alpa, u16 pdusz,
1840 lps->uarg = uarg;
1841 lps->alpa = alpa;
1842 lps->pdusz = pdusz;
1843 lps->pwwn = pwwn;
1844 lps->nwwn = nwwn;
1845 lps->fdisc = BFA_FALSE;
1846 lps->auth_en = auth_en;
1847 bfa_sm_send_event(lps, BFA_LPS_SM_LOGIN);
1854 bfa_lps_fdisc(struct bfa_lps_s *lps, void *uarg, u16 pdusz, wwn_t pwwn,
1857 lps->uarg = uarg;
1858 lps->alpa = 0;
1859 lps->pdusz = pdusz;
1860 lps->pwwn = pwwn;
1861 lps->nwwn = nwwn;
1862 lps->fdisc = BFA_TRUE;
1863 lps->auth_en = BFA_FALSE;
1864 bfa_sm_send_event(lps, BFA_LPS_SM_LOGIN);
1872 bfa_lps_fdisclogo(struct bfa_lps_s *lps)
1874 bfa_sm_send_event(lps, BFA_LPS_SM_LOGOUT);
1892 struct bfa_lps_s *lps;
1895 for (i = 0, lps = mod->lps_arr; i < mod->num_lps; i++, lps++) {
1896 if (lps->lp_pid == pid)
1897 return lps->bfa_tag;
1920 bfa_lps_set_n2n_pid(struct bfa_lps_s *lps, uint32_t n2n_pid)
1922 bfa_trc(lps->bfa, lps->bfa_tag);
1923 bfa_trc(lps->bfa, n2n_pid);
1925 lps->lp_pid = n2n_pid;
1926 bfa_sm_send_event(lps, BFA_LPS_SM_SET_N2N_PID);