Lines Matching refs:dport

56 	BFA_FCPORT_SM_DPORTENABLE = 10, /*  enable dport      */
57 BFA_FCPORT_SM_DPORTDISABLE = 11,/* disable dport */
2678 * Ignore event for a port that is dport
5637 BFA_DPORT_ST_DISABLED = 0, /*!< dport is disabled */
5641 BFA_DPORT_ST_NOTSTART = 4, /*!< test not start dport is enabled */
5648 BFA_DPORT_SM_ENABLE = 1, /* dport enable event */
5649 BFA_DPORT_SM_DISABLE = 2, /* dport disable event */
5653 BFA_DPORT_SM_START = 6, /* re-start dport test */
5658 static void bfa_dport_sm_disabled(struct bfa_dport_s *dport,
5660 static void bfa_dport_sm_enabling_qwait(struct bfa_dport_s *dport,
5662 static void bfa_dport_sm_enabling(struct bfa_dport_s *dport,
5664 static void bfa_dport_sm_enabled(struct bfa_dport_s *dport,
5666 static void bfa_dport_sm_disabling_qwait(struct bfa_dport_s *dport,
5668 static void bfa_dport_sm_disabling(struct bfa_dport_s *dport,
5670 static void bfa_dport_sm_starting_qwait(struct bfa_dport_s *dport,
5672 static void bfa_dport_sm_starting(struct bfa_dport_s *dport,
5674 static void bfa_dport_sm_dynamic_disabling(struct bfa_dport_s *dport,
5676 static void bfa_dport_sm_dynamic_disabling_qwait(struct bfa_dport_s *dport,
5679 static void bfa_dport_req_comp(struct bfa_dport_s *dport,
5681 static void bfa_dport_scn(struct bfa_dport_s *dport,
5708 struct bfa_dport_s *dport = &fcdiag->dport;
5713 dport->bfa = bfa;
5714 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
5715 bfa_reqq_winit(&dport->reqq_wait, bfa_dport_qresume, dport);
5716 dport->cbfn = NULL;
5717 dport->cbarg = NULL;
5718 dport->test_state = BFA_DPORT_ST_DISABLED;
5719 memset(&dport->result, 0, sizeof(struct bfa_diag_dport_result_s));
5726 struct bfa_dport_s *dport = &fcdiag->dport;
5736 bfa_sm_send_event(dport, BFA_DPORT_SM_HWFAIL);
5907 bfa_dport_req_comp(&fcdiag->dport,
5911 bfa_dport_scn(&fcdiag->dport,
6007 /* check to see if fcport is dport */
6124 static bfa_boolean_t bfa_dport_send_req(struct bfa_dport_s *dport,
6127 bfa_cb_fcdiag_dport(struct bfa_dport_s *dport, bfa_status_t bfa_status)
6129 if (dport->cbfn != NULL) {
6130 dport->cbfn(dport->cbarg, bfa_status);
6131 dport->cbfn = NULL;
6132 dport->cbarg = NULL;
6137 bfa_dport_sm_disabled(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6139 bfa_trc(dport->bfa, event);
6143 bfa_fcport_dportenable(dport->bfa);
6144 if (bfa_dport_send_req(dport, BFI_DPORT_ENABLE))
6145 bfa_sm_set_state(dport, bfa_dport_sm_enabling);
6147 bfa_sm_set_state(dport, bfa_dport_sm_enabling_qwait);
6159 if (dport->i2hmsg.scn.state == BFI_DPORT_SCN_DDPORT_ENABLE) {
6160 bfa_fcport_ddportenable(dport->bfa);
6161 dport->dynamic = BFA_TRUE;
6162 dport->test_state = BFA_DPORT_ST_NOTSTART;
6163 bfa_sm_set_state(dport, bfa_dport_sm_enabled);
6165 bfa_trc(dport->bfa, dport->i2hmsg.scn.state);
6171 bfa_sm_fault(dport->bfa, event);
6176 bfa_dport_sm_enabling_qwait(struct bfa_dport_s *dport,
6179 bfa_trc(dport->bfa, event);
6183 bfa_sm_set_state(dport, bfa_dport_sm_enabling);
6184 bfa_dport_send_req(dport, BFI_DPORT_ENABLE);
6188 bfa_reqq_wcancel(&dport->reqq_wait);
6189 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6190 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6194 bfa_sm_fault(dport->bfa, event);
6199 bfa_dport_sm_enabling(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6201 bfa_trc(dport->bfa, event);
6205 memset(&dport->result, 0,
6207 if (dport->i2hmsg.rsp.status == BFA_STATUS_DPORT_INV_SFP) {
6208 dport->test_state = BFA_DPORT_ST_NO_SFP;
6210 dport->test_state = BFA_DPORT_ST_INP;
6211 bfa_dport_result_start(dport, BFA_DPORT_OPMODE_AUTO);
6213 bfa_sm_set_state(dport, bfa_dport_sm_enabled);
6217 dport->test_state = BFA_DPORT_ST_DISABLED;
6218 bfa_fcport_dportdisable(dport->bfa);
6219 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6223 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6224 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6228 bfa_sm_fault(dport->bfa, event);
6233 bfa_dport_sm_enabled(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6235 bfa_trc(dport->bfa, event);
6239 if (bfa_dport_send_req(dport, BFI_DPORT_START))
6240 bfa_sm_set_state(dport, bfa_dport_sm_starting);
6242 bfa_sm_set_state(dport, bfa_dport_sm_starting_qwait);
6246 bfa_fcport_dportdisable(dport->bfa);
6247 if (bfa_dport_send_req(dport, BFI_DPORT_DISABLE))
6248 bfa_sm_set_state(dport, bfa_dport_sm_disabling);
6250 bfa_sm_set_state(dport, bfa_dport_sm_disabling_qwait);
6254 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6258 switch (dport->i2hmsg.scn.state) {
6260 dport->test_state = BFA_DPORT_ST_COMP;
6264 dport->test_state = BFA_DPORT_ST_INP;
6273 dport->test_state = BFA_DPORT_ST_NO_SFP;
6277 bfa_fcport_ddportdisable(dport->bfa);
6279 if (bfa_dport_send_req(dport, BFI_DPORT_DYN_DISABLE))
6280 bfa_sm_set_state(dport,
6283 bfa_sm_set_state(dport,
6288 bfa_fcport_ddportdisable(dport->bfa);
6290 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6291 dport->dynamic = BFA_FALSE;
6295 bfa_trc(dport->bfa, dport->i2hmsg.scn.state);
6296 bfa_sm_fault(dport->bfa, event);
6300 bfa_sm_fault(dport->bfa, event);
6305 bfa_dport_sm_disabling_qwait(struct bfa_dport_s *dport,
6308 bfa_trc(dport->bfa, event);
6312 bfa_sm_set_state(dport, bfa_dport_sm_disabling);
6313 bfa_dport_send_req(dport, BFI_DPORT_DISABLE);
6317 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6318 bfa_reqq_wcancel(&dport->reqq_wait);
6319 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6327 bfa_sm_fault(dport->bfa, event);
6332 bfa_dport_sm_disabling(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6334 bfa_trc(dport->bfa, event);
6338 dport->test_state = BFA_DPORT_ST_DISABLED;
6339 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6343 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6344 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6352 bfa_sm_fault(dport->bfa, event);
6357 bfa_dport_sm_starting_qwait(struct bfa_dport_s *dport,
6360 bfa_trc(dport->bfa, event);
6364 bfa_sm_set_state(dport, bfa_dport_sm_starting);
6365 bfa_dport_send_req(dport, BFI_DPORT_START);
6369 bfa_reqq_wcancel(&dport->reqq_wait);
6370 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6371 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6375 bfa_sm_fault(dport->bfa, event);
6380 bfa_dport_sm_starting(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6382 bfa_trc(dport->bfa, event);
6386 memset(&dport->result, 0,
6388 if (dport->i2hmsg.rsp.status == BFA_STATUS_DPORT_INV_SFP) {
6389 dport->test_state = BFA_DPORT_ST_NO_SFP;
6391 dport->test_state = BFA_DPORT_ST_INP;
6392 bfa_dport_result_start(dport, BFA_DPORT_OPMODE_MANU);
6397 bfa_sm_set_state(dport, bfa_dport_sm_enabled);
6401 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6402 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6406 bfa_sm_fault(dport->bfa, event);
6411 bfa_dport_sm_dynamic_disabling(struct bfa_dport_s *dport,
6414 bfa_trc(dport->bfa, event);
6418 switch (dport->i2hmsg.scn.state) {
6420 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6421 dport->dynamic = BFA_FALSE;
6422 bfa_fcport_enable(dport->bfa);
6426 bfa_trc(dport->bfa, dport->i2hmsg.scn.state);
6427 bfa_sm_fault(dport->bfa, event);
6433 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6434 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6438 bfa_sm_fault(dport->bfa, event);
6443 bfa_dport_sm_dynamic_disabling_qwait(struct bfa_dport_s *dport,
6446 bfa_trc(dport->bfa, event);
6450 bfa_sm_set_state(dport, bfa_dport_sm_dynamic_disabling);
6451 bfa_dport_send_req(dport, BFI_DPORT_DYN_DISABLE);
6455 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6456 bfa_reqq_wcancel(&dport->reqq_wait);
6457 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6465 bfa_sm_fault(dport->bfa, event);
6470 bfa_dport_send_req(struct bfa_dport_s *dport, enum bfi_dport_req req)
6477 m = bfa_reqq_next(dport->bfa, BFA_REQQ_DIAG);
6479 bfa_reqq_wait(dport->bfa, BFA_REQQ_PORT, &dport->reqq_wait);
6484 bfa_fn_lpu(dport->bfa));
6487 m->lpcnt = cpu_to_be32(dport->lpcnt);
6488 m->payload = cpu_to_be32(dport->payload);
6494 bfa_reqq_produce(dport->bfa, BFA_REQQ_DIAG, m->mh);
6502 struct bfa_dport_s *dport = cbarg;
6504 bfa_sm_send_event(dport, BFA_DPORT_SM_QRESUME);
6508 bfa_dport_req_comp(struct bfa_dport_s *dport, struct bfi_diag_dport_rsp_s *msg)
6511 dport->i2hmsg.rsp.status = msg->status;
6512 dport->rp_pwwn = msg->pwwn;
6513 dport->rp_nwwn = msg->nwwn;
6517 bfa_trc(dport->bfa, msg->status);
6518 bfa_trc(dport->bfa, dport->rp_pwwn);
6519 bfa_trc(dport->bfa, dport->rp_nwwn);
6520 bfa_sm_send_event(dport, BFA_DPORT_SM_FWRSP);
6523 bfa_trc(dport->bfa, msg->status);
6524 bfa_sm_send_event(dport, BFA_DPORT_SM_REQFAIL);
6526 bfa_cb_fcdiag_dport(dport, msg->status);
6530 bfa_dport_is_sending_req(struct bfa_dport_s *dport)
6532 if (bfa_sm_cmp_state(dport, bfa_dport_sm_enabling) ||
6533 bfa_sm_cmp_state(dport, bfa_dport_sm_enabling_qwait) ||
6534 bfa_sm_cmp_state(dport, bfa_dport_sm_disabling) ||
6535 bfa_sm_cmp_state(dport, bfa_dport_sm_disabling_qwait) ||
6536 bfa_sm_cmp_state(dport, bfa_dport_sm_starting) ||
6537 bfa_sm_cmp_state(dport, bfa_dport_sm_starting_qwait)) {
6545 bfa_dport_scn(struct bfa_dport_s *dport, struct bfi_diag_dport_scn_s *msg)
6550 bfa_trc(dport->bfa, msg->state);
6551 dport->i2hmsg.scn.state = msg->state;
6553 switch (dport->i2hmsg.scn.state) {
6555 dport->result.end_time = ktime_get_real_seconds();
6556 bfa_trc(dport->bfa, dport->result.end_time);
6558 dport->result.status = msg->info.testcomp.status;
6559 bfa_trc(dport->bfa, dport->result.status);
6561 dport->result.roundtrip_latency =
6563 dport->result.est_cable_distance =
6565 dport->result.buffer_required =
6568 dport->result.frmsz = be16_to_cpu(msg->info.testcomp.frm_sz);
6569 dport->result.speed = msg->info.testcomp.speed;
6571 bfa_trc(dport->bfa, dport->result.roundtrip_latency);
6572 bfa_trc(dport->bfa, dport->result.est_cable_distance);
6573 bfa_trc(dport->bfa, dport->result.buffer_required);
6574 bfa_trc(dport->bfa, dport->result.frmsz);
6575 bfa_trc(dport->bfa, dport->result.speed);
6578 dport->result.subtest[i].status =
6580 bfa_trc(dport->bfa, dport->result.subtest[i].status);
6586 memset(&dport->result, 0,
6591 memset(&dport->result, 0,
6593 dport->rp_pwwn = msg->info.teststart.pwwn;
6594 dport->rp_nwwn = msg->info.teststart.nwwn;
6595 dport->lpcnt = cpu_to_be32(msg->info.teststart.numfrm);
6596 bfa_dport_result_start(dport, msg->info.teststart.mode);
6601 dport->result.subtest[subtesttype].start_time =
6603 dport->result.subtest[subtesttype].status =
6606 bfa_trc(dport->bfa, subtesttype);
6607 bfa_trc(dport->bfa,
6608 dport->result.subtest[subtesttype].start_time);
6615 dport->result.status = DPORT_TEST_ST_IDLE;
6619 bfa_sm_fault(dport->bfa, msg->state);
6622 bfa_sm_send_event(dport, BFA_DPORT_SM_SCN);
6635 struct bfa_dport_s *dport = &fcdiag->dport;
6640 if (bfa_mfg_is_mezz(dport->bfa->ioc.attr->card_type)) {
6641 bfa_trc(dport->bfa, BFA_STATUS_PBC);
6648 if (!(bfa_asic_id_ct2(dport->bfa->ioc.pcidev.device_id))) {
6649 bfa_trc(dport->bfa, dport->bfa->ioc.pcidev.device_id);
6661 bfa_trc(dport->bfa, BFA_STATUS_PBC);
6669 bfa_trc(dport->bfa, bfa_ioc_get_type(&bfa->ioc));
6678 bfa_trc(dport->bfa, 0);
6686 bfa_trc(dport->bfa, 0);
6694 bfa_trc(dport->bfa, 0);
6699 * Check to see if port is disable or in dport state
6703 bfa_trc(dport->bfa, 0);
6708 * Check if dport is in dynamic mode
6710 if (dport->dynamic)
6714 * Check if dport is busy
6716 if (bfa_dport_is_sending_req(dport))
6720 * Check if dport is already enabled
6722 if (bfa_sm_cmp_state(dport, bfa_dport_sm_enabled)) {
6723 bfa_trc(dport->bfa, 0);
6727 bfa_trc(dport->bfa, lpcnt);
6728 bfa_trc(dport->bfa, pat);
6729 dport->lpcnt = (lpcnt) ? lpcnt : DPORT_ENABLE_LOOPCNT_DEFAULT;
6730 dport->payload = (pat) ? pat : LB_PATTERN_DEFAULT;
6731 dport->cbfn = cbfn;
6732 dport->cbarg = cbarg;
6734 bfa_sm_send_event(dport, BFA_DPORT_SM_ENABLE);
6747 struct bfa_dport_s *dport = &fcdiag->dport;
6754 bfa_trc(dport->bfa, BFA_STATUS_PBC);
6759 * Check if dport is in dynamic mode
6761 if (dport->dynamic) {
6766 * Check to see if port is disable or in dport state
6770 bfa_trc(dport->bfa, 0);
6775 * Check if dport is busy
6777 if (bfa_dport_is_sending_req(dport))
6781 * Check if dport is already disabled
6783 if (bfa_sm_cmp_state(dport, bfa_dport_sm_disabled)) {
6784 bfa_trc(dport->bfa, 0);
6788 dport->cbfn = cbfn;
6789 dport->cbarg = cbarg;
6791 bfa_sm_send_event(dport, BFA_DPORT_SM_DISABLE);
6796 * Dport start -- restart dport test
6805 struct bfa_dport_s *dport = &fcdiag->dport;
6814 * Check if dport is in dynamic mode
6816 if (dport->dynamic)
6820 * Check if dport is busy
6822 if (bfa_dport_is_sending_req(dport))
6826 * Check if dport is in enabled state.
6829 if (!bfa_sm_cmp_state(dport, bfa_dport_sm_enabled)) {
6830 bfa_trc(dport->bfa, 0);
6834 if (dport->test_state == BFA_DPORT_ST_NO_SFP)
6837 if (dport->test_state == BFA_DPORT_ST_INP)
6840 WARN_ON(dport->test_state != BFA_DPORT_ST_COMP);
6843 bfa_trc(dport->bfa, lpcnt);
6844 bfa_trc(dport->bfa, pat);
6846 dport->lpcnt = (lpcnt) ? lpcnt : DPORT_ENABLE_LOOPCNT_DEFAULT;
6847 dport->payload = (pat) ? pat : LB_PATTERN_DEFAULT;
6849 dport->cbfn = cbfn;
6850 dport->cbarg = cbarg;
6852 bfa_sm_send_event(dport, BFA_DPORT_SM_START);
6857 * Dport show -- return dport test result
6865 struct bfa_dport_s *dport = &fcdiag->dport;
6874 * Check if dport is busy
6876 if (bfa_dport_is_sending_req(dport))
6880 * Check if dport is in enabled state.
6882 if (!bfa_sm_cmp_state(dport, bfa_dport_sm_enabled)) {
6883 bfa_trc(dport->bfa, 0);
6891 if (dport->test_state == BFA_DPORT_ST_NO_SFP)
6894 memcpy(result, &dport->result, sizeof(struct bfa_diag_dport_result_s));