Lines Matching refs:dport

56 	BFA_FCPORT_SM_DPORTENABLE = 10, /*  enable dport      */
57 BFA_FCPORT_SM_DPORTDISABLE = 11,/* disable dport */
2684 * Ignore event for a port that is dport
5643 BFA_DPORT_ST_DISABLED = 0, /*!< dport is disabled */
5647 BFA_DPORT_ST_NOTSTART = 4, /*!< test not start dport is enabled */
5654 BFA_DPORT_SM_ENABLE = 1, /* dport enable event */
5655 BFA_DPORT_SM_DISABLE = 2, /* dport disable event */
5659 BFA_DPORT_SM_START = 6, /* re-start dport test */
5664 static void bfa_dport_sm_disabled(struct bfa_dport_s *dport,
5666 static void bfa_dport_sm_enabling_qwait(struct bfa_dport_s *dport,
5668 static void bfa_dport_sm_enabling(struct bfa_dport_s *dport,
5670 static void bfa_dport_sm_enabled(struct bfa_dport_s *dport,
5672 static void bfa_dport_sm_disabling_qwait(struct bfa_dport_s *dport,
5674 static void bfa_dport_sm_disabling(struct bfa_dport_s *dport,
5676 static void bfa_dport_sm_starting_qwait(struct bfa_dport_s *dport,
5678 static void bfa_dport_sm_starting(struct bfa_dport_s *dport,
5680 static void bfa_dport_sm_dynamic_disabling(struct bfa_dport_s *dport,
5682 static void bfa_dport_sm_dynamic_disabling_qwait(struct bfa_dport_s *dport,
5685 static void bfa_dport_req_comp(struct bfa_dport_s *dport,
5687 static void bfa_dport_scn(struct bfa_dport_s *dport,
5714 struct bfa_dport_s *dport = &fcdiag->dport;
5719 dport->bfa = bfa;
5720 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
5721 bfa_reqq_winit(&dport->reqq_wait, bfa_dport_qresume, dport);
5722 dport->cbfn = NULL;
5723 dport->cbarg = NULL;
5724 dport->test_state = BFA_DPORT_ST_DISABLED;
5725 memset(&dport->result, 0, sizeof(struct bfa_diag_dport_result_s));
5732 struct bfa_dport_s *dport = &fcdiag->dport;
5742 bfa_sm_send_event(dport, BFA_DPORT_SM_HWFAIL);
5913 bfa_dport_req_comp(&fcdiag->dport,
5917 bfa_dport_scn(&fcdiag->dport,
6013 /* check to see if fcport is dport */
6130 static bfa_boolean_t bfa_dport_send_req(struct bfa_dport_s *dport,
6133 bfa_cb_fcdiag_dport(struct bfa_dport_s *dport, bfa_status_t bfa_status)
6135 if (dport->cbfn != NULL) {
6136 dport->cbfn(dport->cbarg, bfa_status);
6137 dport->cbfn = NULL;
6138 dport->cbarg = NULL;
6143 bfa_dport_sm_disabled(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6145 bfa_trc(dport->bfa, event);
6149 bfa_fcport_dportenable(dport->bfa);
6150 if (bfa_dport_send_req(dport, BFI_DPORT_ENABLE))
6151 bfa_sm_set_state(dport, bfa_dport_sm_enabling);
6153 bfa_sm_set_state(dport, bfa_dport_sm_enabling_qwait);
6165 if (dport->i2hmsg.scn.state == BFI_DPORT_SCN_DDPORT_ENABLE) {
6166 bfa_fcport_ddportenable(dport->bfa);
6167 dport->dynamic = BFA_TRUE;
6168 dport->test_state = BFA_DPORT_ST_NOTSTART;
6169 bfa_sm_set_state(dport, bfa_dport_sm_enabled);
6171 bfa_trc(dport->bfa, dport->i2hmsg.scn.state);
6177 bfa_sm_fault(dport->bfa, event);
6182 bfa_dport_sm_enabling_qwait(struct bfa_dport_s *dport,
6185 bfa_trc(dport->bfa, event);
6189 bfa_sm_set_state(dport, bfa_dport_sm_enabling);
6190 bfa_dport_send_req(dport, BFI_DPORT_ENABLE);
6194 bfa_reqq_wcancel(&dport->reqq_wait);
6195 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6196 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6200 bfa_sm_fault(dport->bfa, event);
6205 bfa_dport_sm_enabling(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6207 bfa_trc(dport->bfa, event);
6211 memset(&dport->result, 0,
6213 if (dport->i2hmsg.rsp.status == BFA_STATUS_DPORT_INV_SFP) {
6214 dport->test_state = BFA_DPORT_ST_NO_SFP;
6216 dport->test_state = BFA_DPORT_ST_INP;
6217 bfa_dport_result_start(dport, BFA_DPORT_OPMODE_AUTO);
6219 bfa_sm_set_state(dport, bfa_dport_sm_enabled);
6223 dport->test_state = BFA_DPORT_ST_DISABLED;
6224 bfa_fcport_dportdisable(dport->bfa);
6225 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6229 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6230 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6234 bfa_sm_fault(dport->bfa, event);
6239 bfa_dport_sm_enabled(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6241 bfa_trc(dport->bfa, event);
6245 if (bfa_dport_send_req(dport, BFI_DPORT_START))
6246 bfa_sm_set_state(dport, bfa_dport_sm_starting);
6248 bfa_sm_set_state(dport, bfa_dport_sm_starting_qwait);
6252 bfa_fcport_dportdisable(dport->bfa);
6253 if (bfa_dport_send_req(dport, BFI_DPORT_DISABLE))
6254 bfa_sm_set_state(dport, bfa_dport_sm_disabling);
6256 bfa_sm_set_state(dport, bfa_dport_sm_disabling_qwait);
6260 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6264 switch (dport->i2hmsg.scn.state) {
6266 dport->test_state = BFA_DPORT_ST_COMP;
6270 dport->test_state = BFA_DPORT_ST_INP;
6279 dport->test_state = BFA_DPORT_ST_NO_SFP;
6283 bfa_fcport_ddportdisable(dport->bfa);
6285 if (bfa_dport_send_req(dport, BFI_DPORT_DYN_DISABLE))
6286 bfa_sm_set_state(dport,
6289 bfa_sm_set_state(dport,
6294 bfa_fcport_ddportdisable(dport->bfa);
6296 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6297 dport->dynamic = BFA_FALSE;
6301 bfa_trc(dport->bfa, dport->i2hmsg.scn.state);
6302 bfa_sm_fault(dport->bfa, event);
6306 bfa_sm_fault(dport->bfa, event);
6311 bfa_dport_sm_disabling_qwait(struct bfa_dport_s *dport,
6314 bfa_trc(dport->bfa, event);
6318 bfa_sm_set_state(dport, bfa_dport_sm_disabling);
6319 bfa_dport_send_req(dport, BFI_DPORT_DISABLE);
6323 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6324 bfa_reqq_wcancel(&dport->reqq_wait);
6325 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6333 bfa_sm_fault(dport->bfa, event);
6338 bfa_dport_sm_disabling(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6340 bfa_trc(dport->bfa, event);
6344 dport->test_state = BFA_DPORT_ST_DISABLED;
6345 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6349 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6350 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6358 bfa_sm_fault(dport->bfa, event);
6363 bfa_dport_sm_starting_qwait(struct bfa_dport_s *dport,
6366 bfa_trc(dport->bfa, event);
6370 bfa_sm_set_state(dport, bfa_dport_sm_starting);
6371 bfa_dport_send_req(dport, BFI_DPORT_START);
6375 bfa_reqq_wcancel(&dport->reqq_wait);
6376 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6377 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6381 bfa_sm_fault(dport->bfa, event);
6386 bfa_dport_sm_starting(struct bfa_dport_s *dport, enum bfa_dport_sm_event event)
6388 bfa_trc(dport->bfa, event);
6392 memset(&dport->result, 0,
6394 if (dport->i2hmsg.rsp.status == BFA_STATUS_DPORT_INV_SFP) {
6395 dport->test_state = BFA_DPORT_ST_NO_SFP;
6397 dport->test_state = BFA_DPORT_ST_INP;
6398 bfa_dport_result_start(dport, BFA_DPORT_OPMODE_MANU);
6403 bfa_sm_set_state(dport, bfa_dport_sm_enabled);
6407 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6408 bfa_cb_fcdiag_dport(dport, BFA_STATUS_FAILED);
6412 bfa_sm_fault(dport->bfa, event);
6417 bfa_dport_sm_dynamic_disabling(struct bfa_dport_s *dport,
6420 bfa_trc(dport->bfa, event);
6424 switch (dport->i2hmsg.scn.state) {
6426 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6427 dport->dynamic = BFA_FALSE;
6428 bfa_fcport_enable(dport->bfa);
6432 bfa_trc(dport->bfa, dport->i2hmsg.scn.state);
6433 bfa_sm_fault(dport->bfa, event);
6439 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6440 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6444 bfa_sm_fault(dport->bfa, event);
6449 bfa_dport_sm_dynamic_disabling_qwait(struct bfa_dport_s *dport,
6452 bfa_trc(dport->bfa, event);
6456 bfa_sm_set_state(dport, bfa_dport_sm_dynamic_disabling);
6457 bfa_dport_send_req(dport, BFI_DPORT_DYN_DISABLE);
6461 bfa_sm_set_state(dport, bfa_dport_sm_disabled);
6462 bfa_reqq_wcancel(&dport->reqq_wait);
6463 bfa_cb_fcdiag_dport(dport, BFA_STATUS_OK);
6471 bfa_sm_fault(dport->bfa, event);
6476 bfa_dport_send_req(struct bfa_dport_s *dport, enum bfi_dport_req req)
6483 m = bfa_reqq_next(dport->bfa, BFA_REQQ_DIAG);
6485 bfa_reqq_wait(dport->bfa, BFA_REQQ_PORT, &dport->reqq_wait);
6490 bfa_fn_lpu(dport->bfa));
6493 m->lpcnt = cpu_to_be32(dport->lpcnt);
6494 m->payload = cpu_to_be32(dport->payload);
6500 bfa_reqq_produce(dport->bfa, BFA_REQQ_DIAG, m->mh);
6508 struct bfa_dport_s *dport = cbarg;
6510 bfa_sm_send_event(dport, BFA_DPORT_SM_QRESUME);
6514 bfa_dport_req_comp(struct bfa_dport_s *dport, struct bfi_diag_dport_rsp_s *msg)
6517 dport->i2hmsg.rsp.status = msg->status;
6518 dport->rp_pwwn = msg->pwwn;
6519 dport->rp_nwwn = msg->nwwn;
6523 bfa_trc(dport->bfa, msg->status);
6524 bfa_trc(dport->bfa, dport->rp_pwwn);
6525 bfa_trc(dport->bfa, dport->rp_nwwn);
6526 bfa_sm_send_event(dport, BFA_DPORT_SM_FWRSP);
6529 bfa_trc(dport->bfa, msg->status);
6530 bfa_sm_send_event(dport, BFA_DPORT_SM_REQFAIL);
6532 bfa_cb_fcdiag_dport(dport, msg->status);
6536 bfa_dport_is_sending_req(struct bfa_dport_s *dport)
6538 if (bfa_sm_cmp_state(dport, bfa_dport_sm_enabling) ||
6539 bfa_sm_cmp_state(dport, bfa_dport_sm_enabling_qwait) ||
6540 bfa_sm_cmp_state(dport, bfa_dport_sm_disabling) ||
6541 bfa_sm_cmp_state(dport, bfa_dport_sm_disabling_qwait) ||
6542 bfa_sm_cmp_state(dport, bfa_dport_sm_starting) ||
6543 bfa_sm_cmp_state(dport, bfa_dport_sm_starting_qwait)) {
6551 bfa_dport_scn(struct bfa_dport_s *dport, struct bfi_diag_dport_scn_s *msg)
6556 bfa_trc(dport->bfa, msg->state);
6557 dport->i2hmsg.scn.state = msg->state;
6559 switch (dport->i2hmsg.scn.state) {
6561 dport->result.end_time = ktime_get_real_seconds();
6562 bfa_trc(dport->bfa, dport->result.end_time);
6564 dport->result.status = msg->info.testcomp.status;
6565 bfa_trc(dport->bfa, dport->result.status);
6567 dport->result.roundtrip_latency =
6569 dport->result.est_cable_distance =
6571 dport->result.buffer_required =
6574 dport->result.frmsz = be16_to_cpu(msg->info.testcomp.frm_sz);
6575 dport->result.speed = msg->info.testcomp.speed;
6577 bfa_trc(dport->bfa, dport->result.roundtrip_latency);
6578 bfa_trc(dport->bfa, dport->result.est_cable_distance);
6579 bfa_trc(dport->bfa, dport->result.buffer_required);
6580 bfa_trc(dport->bfa, dport->result.frmsz);
6581 bfa_trc(dport->bfa, dport->result.speed);
6584 dport->result.subtest[i].status =
6586 bfa_trc(dport->bfa, dport->result.subtest[i].status);
6592 memset(&dport->result, 0,
6597 memset(&dport->result, 0,
6599 dport->rp_pwwn = msg->info.teststart.pwwn;
6600 dport->rp_nwwn = msg->info.teststart.nwwn;
6601 dport->lpcnt = cpu_to_be32(msg->info.teststart.numfrm);
6602 bfa_dport_result_start(dport, msg->info.teststart.mode);
6607 dport->result.subtest[subtesttype].start_time =
6609 dport->result.subtest[subtesttype].status =
6612 bfa_trc(dport->bfa, subtesttype);
6613 bfa_trc(dport->bfa,
6614 dport->result.subtest[subtesttype].start_time);
6621 dport->result.status = DPORT_TEST_ST_IDLE;
6625 bfa_sm_fault(dport->bfa, msg->state);
6628 bfa_sm_send_event(dport, BFA_DPORT_SM_SCN);
6641 struct bfa_dport_s *dport = &fcdiag->dport;
6646 if (bfa_mfg_is_mezz(dport->bfa->ioc.attr->card_type)) {
6647 bfa_trc(dport->bfa, BFA_STATUS_PBC);
6654 if (!(bfa_asic_id_ct2(dport->bfa->ioc.pcidev.device_id))) {
6655 bfa_trc(dport->bfa, dport->bfa->ioc.pcidev.device_id);
6667 bfa_trc(dport->bfa, BFA_STATUS_PBC);
6675 bfa_trc(dport->bfa, bfa_ioc_get_type(&bfa->ioc));
6684 bfa_trc(dport->bfa, 0);
6692 bfa_trc(dport->bfa, 0);
6700 bfa_trc(dport->bfa, 0);
6705 * Check to see if port is disable or in dport state
6709 bfa_trc(dport->bfa, 0);
6714 * Check if dport is in dynamic mode
6716 if (dport->dynamic)
6720 * Check if dport is busy
6722 if (bfa_dport_is_sending_req(dport))
6726 * Check if dport is already enabled
6728 if (bfa_sm_cmp_state(dport, bfa_dport_sm_enabled)) {
6729 bfa_trc(dport->bfa, 0);
6733 bfa_trc(dport->bfa, lpcnt);
6734 bfa_trc(dport->bfa, pat);
6735 dport->lpcnt = (lpcnt) ? lpcnt : DPORT_ENABLE_LOOPCNT_DEFAULT;
6736 dport->payload = (pat) ? pat : LB_PATTERN_DEFAULT;
6737 dport->cbfn = cbfn;
6738 dport->cbarg = cbarg;
6740 bfa_sm_send_event(dport, BFA_DPORT_SM_ENABLE);
6753 struct bfa_dport_s *dport = &fcdiag->dport;
6760 bfa_trc(dport->bfa, BFA_STATUS_PBC);
6765 * Check if dport is in dynamic mode
6767 if (dport->dynamic) {
6772 * Check to see if port is disable or in dport state
6776 bfa_trc(dport->bfa, 0);
6781 * Check if dport is busy
6783 if (bfa_dport_is_sending_req(dport))
6787 * Check if dport is already disabled
6789 if (bfa_sm_cmp_state(dport, bfa_dport_sm_disabled)) {
6790 bfa_trc(dport->bfa, 0);
6794 dport->cbfn = cbfn;
6795 dport->cbarg = cbarg;
6797 bfa_sm_send_event(dport, BFA_DPORT_SM_DISABLE);
6802 * Dport start -- restart dport test
6811 struct bfa_dport_s *dport = &fcdiag->dport;
6820 * Check if dport is in dynamic mode
6822 if (dport->dynamic)
6826 * Check if dport is busy
6828 if (bfa_dport_is_sending_req(dport))
6832 * Check if dport is in enabled state.
6835 if (!bfa_sm_cmp_state(dport, bfa_dport_sm_enabled)) {
6836 bfa_trc(dport->bfa, 0);
6840 if (dport->test_state == BFA_DPORT_ST_NO_SFP)
6843 if (dport->test_state == BFA_DPORT_ST_INP)
6846 WARN_ON(dport->test_state != BFA_DPORT_ST_COMP);
6849 bfa_trc(dport->bfa, lpcnt);
6850 bfa_trc(dport->bfa, pat);
6852 dport->lpcnt = (lpcnt) ? lpcnt : DPORT_ENABLE_LOOPCNT_DEFAULT;
6853 dport->payload = (pat) ? pat : LB_PATTERN_DEFAULT;
6855 dport->cbfn = cbfn;
6856 dport->cbarg = cbarg;
6858 bfa_sm_send_event(dport, BFA_DPORT_SM_START);
6863 * Dport show -- return dport test result
6871 struct bfa_dport_s *dport = &fcdiag->dport;
6880 * Check if dport is busy
6882 if (bfa_dport_is_sending_req(dport))
6886 * Check if dport is in enabled state.
6888 if (!bfa_sm_cmp_state(dport, bfa_dport_sm_enabled)) {
6889 bfa_trc(dport->bfa, 0);
6897 if (dport->test_state == BFA_DPORT_ST_NO_SFP)
6900 memcpy(result, &dport->result, sizeof(struct bfa_diag_dport_result_s));