Lines Matching refs:frm

106 static int fcoet_process_sol_fcp_data(fcoe_frame_t *frm);
107 static int fcoet_process_unsol_fcp_cmd(fcoe_frame_t *frm);
108 static int fcoet_process_unsol_els_req(fcoe_frame_t *frm);
109 static int fcoet_process_sol_els_rsp(fcoe_frame_t *frm);
113 static int fcoet_process_unsol_ct_req(fcoe_frame_t *frm);
116 static int fcoet_send_sol_fcp_data_done(fcoe_frame_t *frm);
117 static int fcoet_send_fcp_status_done(fcoe_frame_t *frm);
118 static int fcoet_send_unsol_els_rsp_done(fcoe_frame_t *frm);
119 static int fcoet_send_sol_els_req_done(fcoe_frame_t *frm);
120 static int fcoet_send_unsol_bls_acc_done(fcoe_frame_t *frm);
121 static int fcoet_send_unsol_bls_rjt_done(fcoe_frame_t *frm);
122 static int fcoet_send_sol_bls_req_done(fcoe_frame_t *frm);
123 static int fcoet_send_sol_ct_req_done(fcoe_frame_t *frm);
134 fcoet_rx_frame(fcoe_frame_t *frm) in fcoet_rx_frame() argument
136 uint8_t rctl = FRM_R_CTL(frm); in fcoet_rx_frame()
143 if (fcoet_process_sol_fcp_data(frm)) { in fcoet_rx_frame()
153 if (fcoet_process_unsol_fcp_cmd(frm)) { in fcoet_rx_frame()
163 if (fcoet_process_unsol_els_req(frm)) { in fcoet_rx_frame()
173 if (fcoet_process_sol_els_rsp(frm)) { in fcoet_rx_frame()
183 if (fcoet_process_unsol_abts_req(frm)) { in fcoet_rx_frame()
193 if (fcoet_process_sol_abts_acc(frm)) { in fcoet_rx_frame()
202 if (fcoet_process_sol_abts_rjt(frm)) { in fcoet_rx_frame()
212 if (fcoet_process_unsol_ct_req(frm)) { in fcoet_rx_frame()
222 if (fcoet_process_sol_ct_rsp(frm)) { in fcoet_rx_frame()
232 PRT_FRM_HDR("Unsupported unsol frame: ", frm); in fcoet_rx_frame()
239 frm->frm_eport->eport_free_netb(frm->frm_netb); in fcoet_rx_frame()
240 frm->frm_eport->eport_release_frame(frm); in fcoet_rx_frame()
248 fcoet_release_sol_frame(fcoe_frame_t *frm) in fcoet_release_sol_frame() argument
250 fcoet_exchange_t *xch = FRM2TFM(frm)->tfm_xch; in fcoet_release_sol_frame()
256 switch (FRM2TFM(frm)->tfm_rctl) { in fcoet_release_sol_frame()
262 if (fcoet_send_sol_fcp_data_done(frm)) { in fcoet_release_sol_frame()
276 if (fcoet_send_fcp_status_done(frm)) { in fcoet_release_sol_frame()
286 if (fcoet_send_unsol_els_rsp_done(frm)) { in fcoet_release_sol_frame()
292 if (fcoet_send_sol_els_req_done(frm)) { in fcoet_release_sol_frame()
298 if (fcoet_send_unsol_bls_acc_done(frm)) { in fcoet_release_sol_frame()
304 if (fcoet_send_unsol_bls_rjt_done(frm)) { in fcoet_release_sol_frame()
310 if (fcoet_send_sol_bls_req_done(frm)) { in fcoet_release_sol_frame()
316 if (fcoet_send_sol_ct_req_done(frm)) { in fcoet_release_sol_frame()
326 PRT_FRM_HDR("Unsupported sol frame: ", frm); in fcoet_release_sol_frame()
333 FRM2SS(frm)->ss_eport->eport_release_frame(frm); in fcoet_release_sol_frame()
373 fcoet_create_unsol_exchange(fcoe_frame_t *frm) in fcoet_create_unsol_exchange() argument
382 r_ctl = FRM_R_CTL(frm); in fcoet_create_unsol_exchange()
390 frm->frm_payload_size, 0); in fcoet_create_unsol_exchange()
402 cmd = fct_scsi_task_alloc(FRM2SS(frm)->ss_port, FCT_HANDLE_NONE, in fcoet_create_unsol_exchange()
403 FRM_S_ID(frm), frm->frm_payload, cdb_size, in fcoet_create_unsol_exchange()
409 ffc = (fcoe_fcp_cmnd_t *)frm->frm_payload; in fcoet_create_unsol_exchange()
422 xch->xch_oxid = FRM_OXID(frm); in fcoet_create_unsol_exchange()
424 xch->xch_ss = FRM2SS(frm); in fcoet_create_unsol_exchange()
444 } while (mod_hash_find(FRM2SS(frm)->ss_unsol_rxid_hash, in fcoet_create_unsol_exchange()
457 cmd->cmd_port = FRM2SS(frm)->ss_port; in fcoet_create_unsol_exchange()
459 cmd->cmd_rportid = FRM_S_ID(frm); in fcoet_create_unsol_exchange()
460 cmd->cmd_lportid = FRM_D_ID(frm); in fcoet_create_unsol_exchange()
464 fcoet_init_tfm(frm, xch); in fcoet_create_unsol_exchange()
506 fcoet_process_sol_fcp_data(fcoe_frame_t *frm) in fcoet_process_sol_fcp_data() argument
517 unsol_rxid = FRM_RXID(frm); in fcoet_process_sol_fcp_data()
518 if (mod_hash_find_cb(FRM2SS(frm)->ss_unsol_rxid_hash, in fcoet_process_sol_fcp_data()
527 data_offset = FRM_PARAM(frm); in fcoet_process_sol_fcp_data()
535 (frm->frm_payload_size == ss->ss_fcp_data_payload_size)) || in fcoet_process_sol_fcp_data()
537 (frm->frm_payload_size % ss->ss_fcp_data_payload_size == in fcoet_process_sol_fcp_data()
540 bcopy(frm->frm_payload, dbuf->db_sglist[sge_idx].seg_addr, in fcoet_process_sol_fcp_data()
541 frm->frm_payload_size); in fcoet_process_sol_fcp_data()
544 xch->xch_left_data_size -= frm->frm_payload_size; in fcoet_process_sol_fcp_data()
559 fcoet_process_unsol_fcp_cmd(fcoe_frame_t *frm) in fcoet_process_unsol_fcp_cmd() argument
566 xch = fcoet_create_unsol_exchange(frm); in fcoet_process_unsol_fcp_cmd()
572 ffc = (fcoe_fcp_cmnd_t *)frm->frm_payload; in fcoet_process_unsol_fcp_cmd()
608 fcoet_process_unsol_els_req(fcoe_frame_t *frm) in fcoet_process_unsol_els_req() argument
613 xch = fcoet_create_unsol_exchange(frm); in fcoet_process_unsol_els_req()
615 ASSERT(FRM_IS_LAST_FRAME(frm)); in fcoet_process_unsol_els_req()
623 XCH2ELS(xch)->els_req_size = frm->frm_payload_size; in fcoet_process_unsol_els_req()
626 bcopy(frm->frm_payload, XCH2ELS(xch)->els_req_payload, in fcoet_process_unsol_els_req()
651 bcopy((char *)frm->frm_hdr-22, in fcoet_process_unsol_els_req()
652 frm->frm_eport->eport_efh_dst, ETHERADDRL); in fcoet_process_unsol_els_req()
663 fcoet_process_sol_els_rsp(fcoe_frame_t *frm) in fcoet_process_sol_els_rsp() argument
673 sol_oxid = FRM_OXID(frm); in fcoet_process_sol_els_rsp()
674 if (mod_hash_find_cb(FRM2SS(frm)->ss_sol_oxid_hash, in fcoet_process_sol_els_rsp()
679 if (xch != FRM2SS(frm)->ss_sol_flogi) { in fcoet_process_sol_els_rsp()
683 fcoet_init_tfm(frm, xch); in fcoet_process_sol_els_rsp()
685 ASSERT(FRM_IS_LAST_FRAME(frm)); in fcoet_process_sol_els_rsp()
687 if (actual_size > frm->frm_payload_size) { in fcoet_process_sol_els_rsp()
688 actual_size = frm->frm_payload_size; in fcoet_process_sol_els_rsp()
692 bcopy(frm->frm_payload, els->els_resp_payload, actual_size); in fcoet_process_sol_els_rsp()
698 ret = fcoet_process_sol_flogi_rsp(frm); in fcoet_process_sol_els_rsp()
714 fcoet_process_unsol_abts_req(fcoe_frame_t *frm) in fcoet_process_unsol_abts_req() argument
721 FRM_OXID(frm), FRM_RXID(frm)); in fcoet_process_unsol_abts_req()
722 unsol_rxid = FRM_RXID(frm); in fcoet_process_unsol_abts_req()
723 if (mod_hash_find_cb(FRM2SS(frm)->ss_unsol_rxid_hash, in fcoet_process_unsol_abts_req()
731 fcoet_init_tfm(frm, xch); in fcoet_process_unsol_abts_req()
732 if (!FRM_IS_LAST_FRAME(frm)) { in fcoet_process_unsol_abts_req()
758 xch, frm, ddi_get_lbolt()); in fcoet_process_unsol_abts_req()
765 fcoet_process_sol_abts_acc(fcoe_frame_t *frm) in fcoet_process_sol_abts_acc() argument
770 sol_oxid = FRM_OXID(frm); in fcoet_process_sol_abts_acc()
771 if (mod_hash_remove(FRM2SS(frm)->ss_sol_oxid_hash, in fcoet_process_sol_abts_acc()
782 if (!FRM_IS_LAST_FRAME(frm)) { in fcoet_process_sol_abts_acc()
794 fcoet_process_sol_abts_rjt(fcoe_frame_t *frm) in fcoet_process_sol_abts_rjt() argument
799 sol_oxid = FRM_OXID(frm); in fcoet_process_sol_abts_rjt()
800 if (mod_hash_remove(FRM2SS(frm)->ss_sol_oxid_hash, in fcoet_process_sol_abts_rjt()
812 if (!FRM_IS_LAST_FRAME(frm)) { in fcoet_process_sol_abts_rjt()
820 frm->frm_payload[1]); in fcoet_process_sol_abts_rjt()
825 fcoet_process_unsol_ct_req(fcoe_frame_t *frm) in fcoet_process_unsol_ct_req() argument
831 if (!FRM_IS_LAST_FRAME(frm)) { in fcoet_process_unsol_ct_req()
843 fcoet_process_sol_ct_rsp(fcoe_frame_t *frm) in fcoet_process_sol_ct_rsp() argument
852 sol_oxid = FRM_OXID(frm); in fcoet_process_sol_ct_rsp()
854 if (mod_hash_remove(FRM2SS(frm)->ss_sol_oxid_hash, in fcoet_process_sol_ct_rsp()
861 fcoet_init_tfm(frm, xch); in fcoet_process_sol_ct_rsp()
863 ASSERT(FRM_IS_LAST_FRAME(frm)); in fcoet_process_sol_ct_rsp()
865 if (actual_size > frm->frm_payload_size) { in fcoet_process_sol_ct_rsp()
866 actual_size = frm->frm_payload_size; in fcoet_process_sol_ct_rsp()
871 bcopy(frm->frm_payload, in fcoet_process_sol_ct_rsp()
882 fcoet_send_sol_fcp_data_done(fcoe_frame_t *frm) in fcoet_send_sol_fcp_data_done() argument
884 fcoet_exchange_t *xch = FRM2TFM(frm)->tfm_xch; in fcoet_send_sol_fcp_data_done()
889 dbuf_index = FRM2TFM(frm)->tfm_buf_idx; in fcoet_send_sol_fcp_data_done()
890 xch->xch_left_data_size -= frm->frm_payload_size; in fcoet_send_sol_fcp_data_done()
917 fcoet_send_fcp_status_done(fcoe_frame_t *frm) in fcoet_send_fcp_status_done() argument
919 fcoet_exchange_t *xch = FRM2TFM(frm)->tfm_xch; in fcoet_send_fcp_status_done()
943 fcoet_send_unsol_els_rsp_done(fcoe_frame_t *frm) in fcoet_send_unsol_els_rsp_done() argument
945 fcoet_exchange_t *xch = FRM2TFM(frm)->tfm_xch; in fcoet_send_unsol_els_rsp_done()
951 frm, FRM_OXID(frm), XCH2ELS(xch)->els_req_payload[0]); in fcoet_send_unsol_els_rsp_done()
976 if (frm->frm_eport->eport_link_speed == FCOE_PORT_SPEED_1G) { in fcoet_send_unsol_els_rsp_done()
978 } else if (frm->frm_eport->eport_link_speed == in fcoet_send_unsol_els_rsp_done()
1004 fcoet_send_sol_els_req_done(fcoe_frame_t *frm) in fcoet_send_sol_els_req_done() argument
1015 fcoet_send_unsol_bls_acc_done(fcoe_frame_t *frm) in fcoet_send_unsol_bls_acc_done() argument
1025 fcoet_send_unsol_bls_rjt_done(fcoe_frame_t *frm) in fcoet_send_unsol_bls_rjt_done() argument
1034 fcoet_send_sol_bls_req_done(fcoe_frame_t *frm) in fcoet_send_sol_bls_req_done() argument
1043 fcoet_send_sol_ct_req_done(fcoe_frame_t *frm) in fcoet_send_sol_ct_req_done() argument
1057 fcoe_frame_t *frm; in fcoet_process_unsol_flogi_req() local
1079 frm = xch->xch_ss->ss_eport->eport_alloc_frame(xch->xch_ss->ss_eport, in fcoet_process_unsol_flogi_req()
1081 if (frm == NULL) { in fcoet_process_unsol_flogi_req()
1085 fcoet_init_tfm(frm, xch); in fcoet_process_unsol_flogi_req()
1086 bzero(frm->frm_payload, frm->frm_payload_size); in fcoet_process_unsol_flogi_req()
1089 FFM_R_CTL(0x23, frm); in fcoet_process_unsol_flogi_req()
1090 FRM2TFM(frm)->tfm_rctl = 0x23; in fcoet_process_unsol_flogi_req()
1091 FFM_TYPE(0x01, frm); in fcoet_process_unsol_flogi_req()
1092 FFM_F_CTL(0x980000, frm); in fcoet_process_unsol_flogi_req()
1093 FFM_OXID(xch->xch_oxid, frm); in fcoet_process_unsol_flogi_req()
1094 FFM_RXID(xch->xch_rxid, frm); in fcoet_process_unsol_flogi_req()
1095 FFM_S_ID(0xFFFFFE, frm); in fcoet_process_unsol_flogi_req()
1100 frm->frm_payload[0] = 0x02; in fcoet_process_unsol_flogi_req()
1105 frm->frm_payload[4] = 0x20; in fcoet_process_unsol_flogi_req()
1106 frm->frm_payload[5] = 0x20; in fcoet_process_unsol_flogi_req()
1107 frm->frm_payload[7] = 0x0A; in fcoet_process_unsol_flogi_req()
1108 frm->frm_payload[10] = 0x05; in fcoet_process_unsol_flogi_req()
1109 frm->frm_payload[11] = 0xAC; in fcoet_process_unsol_flogi_req()
1110 bcopy(xch->xch_ss->ss_eport->eport_portwwn, frm->frm_payload + 20, 8); in fcoet_process_unsol_flogi_req()
1111 bcopy(xch->xch_ss->ss_eport->eport_nodewwn, frm->frm_payload + 28, 8); in fcoet_process_unsol_flogi_req()
1116 frm->frm_payload[68] = 0x88; in fcoet_process_unsol_flogi_req()
1123 xch->xch_ss->ss_eport->eport_tx_frame(frm); in fcoet_process_unsol_flogi_req()
1128 fcoet_process_sol_flogi_rsp(fcoe_frame_t *frm) in fcoet_process_sol_flogi_rsp() argument
1131 fcoet_exchange_t *xch = FRM2TFM(frm)->tfm_xch; in fcoet_process_sol_flogi_rsp()
1133 fcoet_soft_state_t *ss = FRM2SS(frm); in fcoet_process_sol_flogi_rsp()
1157 xch->xch_cmd->cmd_lportid = FRM_D_ID(frm); in fcoet_process_sol_flogi_rsp()
1167 frm->frm_eport->eport_flags &= in fcoet_process_sol_flogi_rsp()
1170 bcopy(frm->frm_hdr->hdr_d_id, src_addr + 3, 3); in fcoet_process_sol_flogi_rsp()
1171 bcopy((char *)frm->frm_hdr-22, in fcoet_process_sol_flogi_rsp()
1172 frm->frm_eport->eport_efh_dst, in fcoet_process_sol_flogi_rsp()
1174 frm->frm_eport->eport_set_mac_address( in fcoet_process_sol_flogi_rsp()
1175 frm->frm_eport, src_addr, B_TRUE); in fcoet_process_sol_flogi_rsp()