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
1169 bfa_lps_sm_init(struct bfa_lps_s *lps, enum bfa_lps_event event)
1171 bfa_trc(lps->bfa, lps->bfa_tag);
1172 bfa_trc(lps->bfa, event);
1176 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1177 bfa_sm_set_state(lps, bfa_lps_sm_loginwait);
1178 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1180 bfa_sm_set_state(lps, bfa_lps_sm_login);
1181 bfa_lps_send_login(lps);
1184 if (lps->fdisc)
1185 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1188 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1193 bfa_lps_logout_comp(lps);
1197 bfa_lps_free(lps);
1207 * the lps request. Fw will eventually sent out the timeout
1219 bfa_sm_fault(lps->bfa, event);
1227 bfa_lps_sm_login(struct bfa_lps_s *lps, enum bfa_lps_event event)
1229 bfa_trc(lps->bfa, lps->bfa_tag);
1230 bfa_trc(lps->bfa, event);
1234 if (lps->status == BFA_STATUS_OK) {
1235 bfa_sm_set_state(lps, bfa_lps_sm_online);
1236 if (lps->fdisc)
1237 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1240 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1243 bfa_trc(lps->bfa, lps->fport);
1244 bfa_trc(lps->bfa, lps->lp_pid);
1246 if (!lps->fport && lps->lp_pid)
1247 bfa_sm_send_event(lps, BFA_LPS_SM_SET_N2N_PID);
1249 bfa_sm_set_state(lps, bfa_lps_sm_init);
1250 if (lps->fdisc)
1251 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1255 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1259 bfa_lps_login_comp(lps);
1264 bfa_sm_set_state(lps, bfa_lps_sm_init);
1268 bfa_trc(lps->bfa, lps->fport);
1269 bfa_trc(lps->bfa, lps->lp_pid);
1273 bfa_sm_fault(lps->bfa, event);
1281 bfa_lps_sm_loginwait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1283 bfa_trc(lps->bfa, lps->bfa_tag);
1284 bfa_trc(lps->bfa, event);
1288 bfa_sm_set_state(lps, bfa_lps_sm_login);
1289 bfa_lps_send_login(lps);
1294 bfa_sm_set_state(lps, bfa_lps_sm_init);
1295 bfa_reqq_wcancel(&lps->wqe);
1307 bfa_sm_fault(lps->bfa, event);
1315 bfa_lps_sm_online(struct bfa_lps_s *lps, enum bfa_lps_event event)
1317 bfa_trc(lps->bfa, lps->bfa_tag);
1318 bfa_trc(lps->bfa, event);
1322 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1323 bfa_sm_set_state(lps, bfa_lps_sm_logowait);
1324 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1326 bfa_sm_set_state(lps, bfa_lps_sm_logout);
1327 bfa_lps_send_logout(lps);
1329 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1334 bfa_sm_set_state(lps, bfa_lps_sm_init);
1337 bfa_lps_cvl_event(lps);
1338 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1343 if (bfa_reqq_full(lps->bfa, lps->reqq)) {
1344 bfa_sm_set_state(lps, bfa_lps_sm_online_n2n_pid_wait);
1345 bfa_reqq_wait(lps->bfa, lps->reqq, &lps->wqe);
1347 bfa_lps_send_set_n2n_pid(lps);
1352 bfa_sm_set_state(lps, bfa_lps_sm_init);
1356 bfa_sm_fault(lps->bfa, event);
1364 bfa_lps_sm_online_n2n_pid_wait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1366 bfa_trc(lps->bfa, lps->bfa_tag);
1367 bfa_trc(lps->bfa, event);
1371 bfa_sm_set_state(lps, bfa_lps_sm_online);
1372 bfa_lps_send_set_n2n_pid(lps);
1376 bfa_sm_set_state(lps, bfa_lps_sm_logowait);
1377 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1382 bfa_sm_set_state(lps, bfa_lps_sm_init);
1383 bfa_reqq_wcancel(&lps->wqe);
1386 bfa_lps_cvl_event(lps);
1387 bfa_plog_str(lps->bfa->plog, BFA_PL_MID_LPS,
1393 bfa_sm_set_state(lps, bfa_lps_sm_init);
1394 bfa_reqq_wcancel(&lps->wqe);
1398 bfa_sm_fault(lps->bfa, event);
1406 bfa_lps_sm_logout(struct bfa_lps_s *lps, enum bfa_lps_event event)
1408 bfa_trc(lps->bfa, lps->bfa_tag);
1409 bfa_trc(lps->bfa, event);
1414 bfa_sm_set_state(lps, bfa_lps_sm_init);
1415 bfa_lps_logout_comp(lps);
1419 bfa_sm_set_state(lps, bfa_lps_sm_init);
1423 bfa_sm_fault(lps->bfa, event);
1431 bfa_lps_sm_logowait(struct bfa_lps_s *lps, enum bfa_lps_event event)
1433 bfa_trc(lps->bfa, lps->bfa_tag);
1434 bfa_trc(lps->bfa, event);
1438 bfa_sm_set_state(lps, bfa_lps_sm_logout);
1439 bfa_lps_send_logout(lps);
1444 bfa_sm_set_state(lps, bfa_lps_sm_init);
1445 bfa_reqq_wcancel(&lps->wqe);
1449 bfa_sm_fault(lps->bfa, event);
1484 struct bfa_lps_s *lps;
1492 mod->lps_arr = lps = (struct bfa_lps_s *) bfa_mem_kva_curp(mod);
1500 for (i = 0; i < mod->num_lps; i++, lps++) {
1501 lps->bfa = bfa;
1502 lps->bfa_tag = (u8) i;
1503 lps->reqq = BFA_REQQ_LPS;
1504 bfa_reqq_winit(&lps->wqe, bfa_lps_reqq_resume, lps);
1505 list_add_tail(&lps->qe, &mod->lps_free_q);
1510 * IOC in disabled state -- consider all lps offline
1516 struct bfa_lps_s *lps;
1520 lps = (struct bfa_lps_s *) qe;
1521 bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE);
1524 lps = (struct bfa_lps_s *) qe;
1525 bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE);
1537 struct bfa_lps_s *lps;
1540 lps = BFA_LPS_FROM_TAG(mod, rsp->bfa_tag);
1542 lps->status = rsp->status;
1545 lps->fw_tag = rsp->fw_tag;
1546 lps->fport = rsp->f_port;
1547 if (lps->fport)
1548 lps->lp_pid = rsp->lp_pid;
1549 lps->npiv_en = rsp->npiv_en;
1550 lps->pr_bbcred = be16_to_cpu(rsp->bb_credit);
1551 lps->pr_pwwn = rsp->port_name;
1552 lps->pr_nwwn = rsp->node_name;
1553 lps->auth_req = rsp->auth_req;
1554 lps->lp_mac = rsp->lp_mac;
1555 lps->brcd_switch = rsp->brcd_switch;
1556 lps->fcf_mac = rsp->fcf_mac;
1561 lps->lsrjt_rsn = rsp->lsrjt_rsn;
1562 lps->lsrjt_expl = rsp->lsrjt_expl;
1567 lps->ext_status = rsp->ext_status;
1573 bfa_lps_no_res(lps, rsp->ext_status);
1581 list_del(&lps->qe);
1582 list_add_tail(&lps->qe, &mod->lps_active_q);
1583 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1592 struct bfa_lps_s *lps;
1600 lps = (struct bfa_lps_s *)qe;
1601 bfa_trc(bfa, lps->bfa_tag);
1602 lps->status = first_lps->status;
1603 list_del(&lps->qe);
1604 list_add_tail(&lps->qe, &mod->lps_active_q);
1605 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1618 struct bfa_lps_s *lps;
1621 lps = BFA_LPS_FROM_TAG(mod, rsp->bfa_tag);
1623 bfa_sm_send_event(lps, BFA_LPS_SM_FWRSP);
1633 struct bfa_lps_s *lps;
1635 lps = BFA_LPS_FROM_TAG(mod, cvl->bfa_tag);
1637 bfa_sm_send_event(lps, BFA_LPS_SM_RX_CVL);
1646 struct bfa_lps_s *lps = lps_arg;
1648 bfa_sm_send_event(lps, BFA_LPS_SM_RESUME);
1652 * lps is freed -- triggered by vport delete
1655 bfa_lps_free(struct bfa_lps_s *lps)
1657 struct bfa_lps_mod_s *mod = BFA_LPS_MOD(lps->bfa);
1659 lps->lp_pid = 0;
1660 list_del(&lps->qe);
1661 list_add_tail(&lps->qe, &mod->lps_free_q);
1668 bfa_lps_send_login(struct bfa_lps_s *lps)
1670 struct bfa_lps_mod_s *mod = BFA_LPS_MOD(lps->bfa);
1673 m = bfa_reqq_next(lps->bfa, lps->reqq);
1677 bfa_fn_lpu(lps->bfa));
1679 m->bfa_tag = lps->bfa_tag;
1680 m->alpa = lps->alpa;
1681 m->pdu_size = cpu_to_be16(lps->pdusz);
1682 m->pwwn = lps->pwwn;
1683 m->nwwn = lps->nwwn;
1684 m->fdisc = lps->fdisc;
1685 m->auth_en = lps->auth_en;
1687 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1688 list_del(&lps->qe);
1689 list_add_tail(&lps->qe, &mod->lps_login_q);
1696 bfa_lps_send_logout(struct bfa_lps_s *lps)
1700 m = bfa_reqq_next(lps->bfa, lps->reqq);
1704 bfa_fn_lpu(lps->bfa));
1706 m->fw_tag = lps->fw_tag;
1707 m->port_name = lps->pwwn;
1708 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1715 bfa_lps_send_set_n2n_pid(struct bfa_lps_s *lps)
1719 m = bfa_reqq_next(lps->bfa, lps->reqq);
1723 bfa_fn_lpu(lps->bfa));
1725 m->fw_tag = lps->fw_tag;
1726 m->lp_pid = lps->lp_pid;
1727 bfa_reqq_produce(lps->bfa, lps->reqq, m->mh);
1736 struct bfa_lps_s *lps = arg;
1741 if (lps->fdisc)
1742 bfa_cb_lps_fdisc_comp(lps->bfa->bfad, lps->uarg, lps->status);
1744 bfa_cb_lps_flogi_comp(lps->bfa->bfad, lps->uarg, lps->status);
1751 bfa_lps_login_comp(struct bfa_lps_s *lps)
1753 if (!lps->bfa->fcs) {
1754 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_login_comp_cb,
1755 lps);
1759 if (lps->fdisc)
1760 bfa_cb_lps_fdisc_comp(lps->bfa->bfad, lps->uarg, lps->status);
1762 bfa_cb_lps_flogi_comp(lps->bfa->bfad, lps->uarg, lps->status);
1771 struct bfa_lps_s *lps = arg;
1776 if (lps->fdisc)
1777 bfa_cb_lps_fdisclogo_comp(lps->bfa->bfad, lps->uarg);
1779 bfa_cb_lps_flogo_comp(lps->bfa->bfad, lps->uarg);
1786 bfa_lps_logout_comp(struct bfa_lps_s *lps)
1788 if (!lps->bfa->fcs) {
1789 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_logout_comp_cb,
1790 lps);
1793 if (lps->fdisc)
1794 bfa_cb_lps_fdisclogo_comp(lps->bfa->bfad, lps->uarg);
1803 struct bfa_lps_s *lps = arg;
1809 if (lps->fdisc)
1810 bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
1818 bfa_lps_cvl_event(struct bfa_lps_s *lps)
1820 if (!lps->bfa->fcs) {
1821 bfa_cb_queue(lps->bfa, &lps->hcb_qe, bfa_lps_cvl_event_cb,
1822 lps);
1827 if (lps->fdisc)
1828 bfa_cb_lps_cvl_event(lps->bfa->bfad, lps->uarg);
1853 struct bfa_lps_s *lps = NULL;
1855 bfa_q_deq(&mod->lps_free_q, &lps);
1857 if (lps == NULL)
1860 list_add_tail(&lps->qe, &mod->lps_active_q);
1862 bfa_sm_set_state(lps, bfa_lps_sm_init);
1863 return lps;
1871 bfa_lps_delete(struct bfa_lps_s *lps)
1873 bfa_sm_send_event(lps, BFA_LPS_SM_DELETE);
1880 bfa_lps_flogi(struct bfa_lps_s *lps, void *uarg, u8 alpa, u16 pdusz,
1883 lps->uarg = uarg;
1884 lps->alpa = alpa;
1885 lps->pdusz = pdusz;
1886 lps->pwwn = pwwn;
1887 lps->nwwn = nwwn;
1888 lps->fdisc = BFA_FALSE;
1889 lps->auth_en = auth_en;
1890 bfa_sm_send_event(lps, BFA_LPS_SM_LOGIN);
1897 bfa_lps_fdisc(struct bfa_lps_s *lps, void *uarg, u16 pdusz, wwn_t pwwn,
1900 lps->uarg = uarg;
1901 lps->alpa = 0;
1902 lps->pdusz = pdusz;
1903 lps->pwwn = pwwn;
1904 lps->nwwn = nwwn;
1905 lps->fdisc = BFA_TRUE;
1906 lps->auth_en = BFA_FALSE;
1907 bfa_sm_send_event(lps, BFA_LPS_SM_LOGIN);
1915 bfa_lps_fdisclogo(struct bfa_lps_s *lps)
1917 bfa_sm_send_event(lps, BFA_LPS_SM_LOGOUT);
1935 struct bfa_lps_s *lps;
1938 for (i = 0, lps = mod->lps_arr; i < mod->num_lps; i++, lps++) {
1939 if (lps->lp_pid == pid)
1940 return lps->bfa_tag;
1963 bfa_lps_set_n2n_pid(struct bfa_lps_s *lps, uint32_t n2n_pid)
1965 bfa_trc(lps->bfa, lps->bfa_tag);
1966 bfa_trc(lps->bfa, n2n_pid);
1968 lps->lp_pid = n2n_pid;
1969 bfa_sm_send_event(lps, BFA_LPS_SM_SET_N2N_PID);