Lines Matching refs:dfc

32 static int32_t		emlxs_dfc_get_rev(emlxs_hba_t *hba, dfc_t *dfc,
34 static int32_t emlxs_dfc_get_hbainfo(emlxs_hba_t *hba, dfc_t *dfc,
36 static int32_t emlxs_dfc_get_hbastats(emlxs_hba_t *hba, dfc_t *dfc,
38 static int32_t emlxs_dfc_get_drvstats(emlxs_hba_t *hba, dfc_t *dfc,
40 static int32_t emlxs_dfc_set_diag(emlxs_hba_t *hba, dfc_t *dfc,
42 static int32_t emlxs_dfc_send_mbox(emlxs_hba_t *hba, dfc_t *dfc,
44 static int32_t emlxs_dfc_read_pci(emlxs_hba_t *hba, dfc_t *dfc,
46 static int32_t emlxs_dfc_write_pci(emlxs_hba_t *hba, dfc_t *dfc,
48 static int32_t emlxs_dfc_get_cfg(emlxs_hba_t *hba, dfc_t *dfc,
50 static int32_t emlxs_dfc_set_cfg(emlxs_hba_t *hba, dfc_t *dfc,
52 static int32_t emlxs_dfc_send_menlo(emlxs_hba_t *hba, dfc_t *dfc,
54 static int32_t emlxs_dfc_send_ct(emlxs_hba_t *hba, dfc_t *dfc,
56 static int32_t emlxs_dfc_send_ct_rsp(emlxs_hba_t *hba, dfc_t *dfc,
58 static int32_t emlxs_dfc_write_flash(emlxs_hba_t *hba, dfc_t *dfc,
60 static int32_t emlxs_dfc_read_flash(emlxs_hba_t *hba, dfc_t *dfc,
62 static int32_t emlxs_dfc_send_els(emlxs_hba_t *hba, dfc_t *dfc,
64 static int32_t emlxs_dfc_loopback_test(emlxs_hba_t *hba, dfc_t *dfc,
66 static int32_t emlxs_dfc_reset_port(emlxs_hba_t *hba, dfc_t *dfc,
68 static int32_t emlxs_dfc_get_dump_region(emlxs_hba_t *hba, dfc_t *dfc,
70 static int32_t emlxs_dfc_loopback_mode(emlxs_hba_t *hba, dfc_t *dfc,
72 static int32_t emlxs_dfc_get_ioinfo(emlxs_hba_t *hba, dfc_t *dfc,
74 static int32_t emlxs_dfc_get_linkinfo(emlxs_hba_t *hba, dfc_t *dfc,
76 static int32_t emlxs_dfc_read_mem(emlxs_hba_t *hba, dfc_t *dfc,
78 static int32_t emlxs_dfc_write_mem(emlxs_hba_t *hba, dfc_t *dfc,
80 static int32_t emlxs_dfc_write_ctlreg(emlxs_hba_t *hba, dfc_t *dfc,
82 static int32_t emlxs_dfc_read_ctlreg(emlxs_hba_t *hba, dfc_t *dfc,
84 static int32_t emlxs_dfc_get_event(emlxs_hba_t *hba, dfc_t *dfc,
86 static int32_t emlxs_dfc_set_event(emlxs_hba_t *hba, dfc_t *dfc,
88 static int32_t emlxs_dfc_get_eventinfo(emlxs_hba_t *hba, dfc_t *dfc,
90 static int32_t emlxs_dfc_get_nodeinfo(emlxs_hba_t *hba, dfc_t *dfc,
94 static int32_t emlxs_dfc_get_fctstat(emlxs_hba_t *hba, dfc_t *dfc,
98 static int32_t emlxs_dfc_create_vport(emlxs_hba_t *hba, dfc_t *dfc,
100 static int32_t emlxs_dfc_destroy_vport(emlxs_hba_t *hba, dfc_t *dfc,
102 static int32_t emlxs_dfc_get_vportinfo(emlxs_hba_t *hba, dfc_t *dfc,
104 static int32_t emlxs_dfc_npiv_resource(emlxs_hba_t *hba, dfc_t *dfc,
106 static int32_t emlxs_dfc_npiv_test(emlxs_hba_t *hba, dfc_t *dfc,
111 static int32_t emlxs_dfc_init_auth(emlxs_hba_t *hba, dfc_t *dfc,
113 static int32_t emlxs_dfc_get_auth_cfg(emlxs_hba_t *hba, dfc_t *dfc,
115 static int32_t emlxs_dfc_set_auth_cfg(emlxs_hba_t *hba, dfc_t *dfc,
117 static int32_t emlxs_dfc_get_auth_pwd(emlxs_hba_t *hba, dfc_t *dfc,
119 static int32_t emlxs_dfc_set_auth_pwd(emlxs_hba_t *hba, dfc_t *dfc,
121 static int32_t emlxs_dfc_get_auth_status(emlxs_hba_t *hba, dfc_t *dfc,
124 dfc_t *dfc, int32_t mode);
126 dfc_t *dfc, int32_t mode);
130 static int32_t emlxs_dfc_sd_set_bucket(emlxs_hba_t *hba, dfc_t *dfc,
133 dfc_t *dfc, int32_t mode);
134 static int32_t emlxs_dfc_sd_get_bucket(emlxs_hba_t *hba, dfc_t *dfc,
137 dfc_t *dfc, int32_t mode);
139 dfc_t *dfc, int32_t mode);
141 dfc_t *dfc, int32_t mode);
142 static int32_t emlxs_dfc_sd_get_data(emlxs_hba_t *hba, dfc_t *dfc,
144 static int32_t emlxs_dfc_sd_set_event(emlxs_hba_t *hba, dfc_t *dfc,
146 static int32_t emlxs_dfc_sd_get_event(emlxs_hba_t *hba, dfc_t *dfc,
150 static int32_t emlxs_dfc_send_scsi_fcp(emlxs_hba_t *hba, dfc_t *dfc,
153 static int32_t emlxs_fcio_manage(emlxs_hba_t *hba, dfc_t *dfc,
212 dfc_t *dfc, int32_t mode);
214 dfc_t *dfc, int32_t mode);
217 static int32_t emlxs_dfc_get_fcflist(emlxs_hba_t *hba, dfc_t *dfc,
219 static int32_t emlxs_dfc_send_mbox4(emlxs_hba_t *hba, dfc_t *dfc,
221 static int emlxs_dfc_rd_be_fcf(emlxs_hba_t *hba, dfc_t *dfc,
223 static int emlxs_dfc_set_be_dcbx(emlxs_hba_t *hba, dfc_t *dfc,
225 static int emlxs_dfc_get_be_dcbx(emlxs_hba_t *hba, dfc_t *dfc,
227 static int emlxs_dfc_get_qos(emlxs_hba_t *hba, dfc_t *dfc,
236 int (*func)(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode);
362 emlxs_dfc_func(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
371 if (dfc->cmd == emlxs_dfc_table[i].code) {
372 if ((dfc->cmd != EMLXS_FCIO_CMD) ||
373 (dfc->data1 != FCIO_DIAG) ||
374 (dfc->data2 != EMLXS_LOG_GET)) {
380 rval = emlxs_dfc_table[i].func(hba, dfc, mode);
386 "Unknown DFC command. (0x%x)", dfc->cmd);
802 emlxs_fcio_manage(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
810 vpi = (dfc->data4 < MAX_VPORTS)? dfc->data4:0;
814 fcio.fcio_flags = dfc->flag;
815 fcio.fcio_cmd = dfc->data1;
816 fcio.fcio_cmd_flags = dfc->data2;
817 fcio.fcio_xfer = dfc->data3;
819 if (dfc->buf1_size && dfc->buf1) {
820 fcio.fcio_ilen = dfc->buf1_size;
821 fcio.fcio_ibuf = dfc->buf1;
824 if (dfc->buf2_size && dfc->buf2) {
825 fcio.fcio_olen = dfc->buf2_size;
826 fcio.fcio_obuf = dfc->buf2;
829 if (dfc->buf3_size && dfc->buf3) {
830 fcio.fcio_alen = dfc->buf3_size;
831 fcio.fcio_abuf = dfc->buf3;
834 if (!dfc->buf4 || (dfc->buf4_size < sizeof (uint32_t))) {
838 emlxs_dfc_xlate(dfc->cmd), emlxs_fcio_xlate(dfc->data1),
839 dfc->buf4, dfc->buf4_size);
848 dfc->flag = fcio.fcio_flags;
849 dfc->data1 = fcio.fcio_cmd;
850 dfc->data2 = fcio.fcio_cmd_flags;
851 dfc->data3 = fcio.fcio_xfer;
859 bcopy((void *)&fcio.fcio_errno, (void *)dfc->buf4, sizeof (uint32_t));
2912 emlxs_dfc_create_vport(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
2924 options = dfc->data1;
2926 if (!dfc->buf1 || !dfc->buf1_size) {
2928 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
2933 if (dfc->buf1_size < sizeof (dfc_vportinfo_t)) {
2936 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
2941 dfc_vport = (dfc_vportinfo_t *)dfc->buf1;
2947 emlxs_dfc_xlate(dfc->cmd));
2955 emlxs_dfc_xlate(dfc->cmd));
2981 emlxs_dfc_xlate(dfc->cmd));
3004 emlxs_dfc_xlate(dfc->cmd));
3027 emlxs_dfc_xlate(dfc->cmd), vpi);
3113 emlxs_dfc_destroy_vport(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
3123 if (!dfc->buf1 || !dfc->buf1_size) {
3125 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
3131 if (dfc->buf1_size < 8) {
3134 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
3141 bcopy((void *)dfc->buf1, (void *)wwpn, 8);
3149 "%s: WWPN does not exists. %s", emlxs_dfc_xlate(dfc->cmd),
3163 emlxs_dfc_xlate(dfc->cmd));
3225 emlxs_dfc_get_vportinfo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
3236 if (!dfc->buf1 || !dfc->buf1_size) {
3238 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
3249 emlxs_dfc_xlate(dfc->cmd));
3293 if (max_count > dfc->buf1_size) {
3296 emlxs_dfc_xlate(dfc->cmd), max_count, dfc->buf1_size);
3302 bcopy((void *)dfc_vport_list, (void *)dfc->buf1, dfc->buf1_size);
3354 emlxs_dfc_npiv_resource(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
3362 if (!dfc->buf1 || !dfc->buf1_size) {
3364 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
3369 if (dfc->buf1_size < sizeof (dfc_vport_resource_t)) {
3372 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
3377 vres = (dfc_vport_resource_t *)dfc->buf1;
3411 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
3419 "%s: %s failed. status=%x", emlxs_dfc_xlate(dfc->cmd),
3452 emlxs_dfc_npiv_test(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
3468 if (!dfc->buf1 || !dfc->buf1_size) {
3470 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
3475 if (dfc->buf1_size < sizeof (uint32_t)) {
3478 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
3610 "%s: Unable to send packet.", emlxs_dfc_xlate(dfc->cmd));
3665 emlxs_dfc_xlate(dfc->cmd));
3676 emlxs_dfc_xlate(dfc->cmd));
3681 emlxs_dfc_xlate(dfc->cmd),
3703 bcopy((void *)&checklist, (void *)dfc->buf1, sizeof (uint32_t));
3722 emlxs_dfc_get_rev(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
3727 if (!dfc->buf1 || !dfc->buf1_size) {
3729 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
3734 if (dfc->buf1_size < sizeof (uint32_t)) {
3737 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
3743 bcopy((void *)&rev, (void *)dfc->buf1, sizeof (uint32_t));
3752 emlxs_dfc_get_hbainfo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
3760 if (!dfc->buf1 || !dfc->buf1_size) {
3762 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
3767 if (dfc->buf1_size < sizeof (dfc_hbainfo_t)) {
3770 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
3775 hbainfo = (dfc_hbainfo_t *)dfc->buf1;
4056 emlxs_dfc_get_hbastats(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
4064 if (!dfc->buf1 || !dfc->buf1_size) {
4066 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
4071 if (dfc->buf1_size < sizeof (dfc_hbastats_t)) {
4074 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
4091 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4099 "%s: %s failed. status=%x", emlxs_dfc_xlate(dfc->cmd),
4106 stats = (dfc_hbastats_t *)dfc->buf1;
4127 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4135 "%s: %s failed. status=%x", emlxs_dfc_xlate(dfc->cmd),
4218 emlxs_dfc_get_drvstats(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
4224 if (!dfc->buf1 || !dfc->buf1_size) {
4226 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
4231 stats = (dfc_drvstats_t *)dfc->buf1;
4570 emlxs_dfc_set_diag(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
4576 if (!dfc->buf1 || !dfc->buf1_size) {
4578 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
4583 if (dfc->buf1_size < sizeof (uint32_t)) {
4586 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
4591 flag = emlxs_set_hba_mode(hba, dfc->flag);
4592 bcopy((void *)&flag, (void *)dfc->buf1, sizeof (uint32_t));
4602 emlxs_dfc_send_mbox(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
4620 "%s: SLI Mode %d not supported.", emlxs_dfc_xlate(dfc->cmd),
4626 if (!dfc->buf1 || !dfc->buf1_size) {
4628 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
4633 if (!dfc->buf2 || !dfc->buf2_size) {
4635 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
4640 if (dfc->buf1_size > MAILBOX_CMD_BSIZE) {
4643 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
4648 if (dfc->buf3_size || dfc->buf4_size) {
4649 if (dfc->buf3_size && !dfc->buf3) {
4652 emlxs_dfc_xlate(dfc->cmd));
4657 if (dfc->buf3_size > MBOX_EXTENSION_SIZE) {
4660 emlxs_dfc_xlate(dfc->cmd), dfc->buf3_size);
4665 if (dfc->buf4_size && !dfc->buf4) {
4668 emlxs_dfc_xlate(dfc->cmd));
4673 if (dfc->buf4_size > MBOX_EXTENSION_SIZE) {
4676 emlxs_dfc_xlate(dfc->cmd), dfc->buf3_size);
4681 extsize = (dfc->buf3_size > dfc->buf4_size) ?
4682 dfc->buf3_size : dfc->buf4_size;
4685 if (dfc->buf3_size) {
4686 bcopy((void *)dfc->buf3, (void *)extbuf,
4687 dfc->buf3_size);
4694 bcopy((void *)dfc->buf1, (void *)mb, dfc->buf1_size);
4705 "cmd=%x", emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4728 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4755 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand,
4773 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand, did);
4815 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand, did);
4835 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4845 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4867 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4877 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4899 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4909 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4931 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4941 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4952 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4975 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
4985 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5008 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand, did);
5018 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5032 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5042 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5053 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5077 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5087 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5106 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5139 "%s: %s sent. (%x %x %x %x)", emlxs_dfc_xlate(dfc->cmd),
5149 emlxs_dfc_xlate(dfc->cmd),
5154 bcopy((void *)mb, (void *)dfc->buf2, dfc->buf2_size);
5164 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
5172 if (dfc->buf4_size) {
5173 bcopy((void *)extbuf, (void *)dfc->buf4, dfc->buf4_size);
5231 emlxs_dfc_read_pci(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5242 offset = dfc->data1;
5243 cnt = dfc->data2;
5244 outsz = dfc->buf1_size;
5247 "%s: offset=%x count=%d", emlxs_dfc_xlate(dfc->cmd), offset, cnt);
5249 if (!dfc->buf1_size || !dfc->buf1) {
5251 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
5259 emlxs_dfc_xlate(dfc->cmd), offset);
5267 emlxs_dfc_xlate(dfc->cmd), cnt);
5275 emlxs_dfc_xlate(dfc->cmd), outsz);
5290 emlxs_dfc_xlate(dfc->cmd), offset, cnt, max);
5303 bptr = (uint32_t *)dfc->buf1;
5328 emlxs_dfc_write_pci(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5340 offset = dfc->data1;
5341 cnt = dfc->data2;
5344 "%s: offset=%x count=%d", emlxs_dfc_xlate(dfc->cmd), offset, cnt);
5346 if (!dfc->buf1 || !dfc->buf1_size) {
5348 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
5356 emlxs_dfc_xlate(dfc->cmd), offset);
5361 if (cnt > dfc->buf1_size) {
5364 emlxs_dfc_xlate(dfc->cmd), cnt);
5372 emlxs_dfc_xlate(dfc->cmd), cnt);
5387 emlxs_dfc_xlate(dfc->cmd), offset, cnt, max);
5392 bptr = (uint32_t *)dfc->buf1;
5403 * emlxs_dfc_xlate(dfc->cmd), i, value, word0, word1);
5432 emlxs_dfc_get_cfg(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5440 if (!dfc->buf1 || !dfc->buf1_size) {
5442 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
5447 count = dfc->buf1_size / sizeof (dfc_cfgparam_t);
5453 cfgparam = (dfc_cfgparam_t *)dfc->buf1;
5524 emlxs_dfc_set_cfg(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5531 index = dfc->data1;
5532 new_value = dfc->data2;
5539 emlxs_dfc_xlate(dfc->cmd), rc);
5557 emlxs_dfc_send_ct(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5572 cmd_buf = dfc->buf1;
5573 cmd_size = dfc->buf1_size;
5574 rsp_buf = dfc->buf2;
5575 rsp_size = dfc->buf2_size;
5576 timeout = dfc->data1;
5583 "%s: csize=%d rsize=%d", emlxs_dfc_xlate(dfc->cmd), cmd_size,
5589 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
5597 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
5603 if (!dfc->buf3 || !dfc->buf3_size) {
5605 "%s: Null buffer3 found.", emlxs_dfc_xlate(dfc->cmd));
5611 if (!dfc->buf4 || !dfc->buf4_size) {
5613 "%s: Null buffer4 found.", emlxs_dfc_xlate(dfc->cmd));
5622 emlxs_dfc_xlate(dfc->cmd), rsp_size);
5631 emlxs_dfc_xlate(dfc->cmd), cmd_size);
5637 if (dfc->buf3_size < sizeof (dfc_destid_t)) {
5640 emlxs_dfc_xlate(dfc->cmd), dfc->buf3_size);
5646 if (dfc->buf4_size < sizeof (uint32_t)) {
5649 emlxs_dfc_xlate(dfc->cmd), dfc->buf4_size);
5655 destid = (dfc_destid_t *)dfc->buf3;
5662 emlxs_dfc_xlate(dfc->cmd), emlxs_wwn_xlate(buffer,
5673 emlxs_dfc_xlate(dfc->cmd), destid->d_id);
5688 emlxs_dfc_xlate(dfc->cmd));
5721 "%s: Unable to send packet.", emlxs_dfc_xlate(dfc->cmd));
5744 bcopy((void *)&rsp_size, (void *)dfc->buf4, sizeof (uint32_t));
5761 emlxs_dfc_send_ct_rsp(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5771 cmd_buf = dfc->buf1;
5772 cmd_size = dfc->buf1_size;
5773 rx_id = dfc->flag;
5777 emlxs_dfc_xlate(dfc->cmd), cmd_size);
5781 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
5790 emlxs_dfc_xlate(dfc->cmd));
5823 "%s: Unable to send packet.", emlxs_dfc_xlate(dfc->cmd));
5859 emlxs_dfc_send_menlo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
5869 "%s: csize=%d rsize=%d", emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size,
5870 dfc->buf2_size);
5875 emlxs_dfc_xlate(dfc->cmd), hba->model_info.device_id,
5882 if (!dfc->buf1_size || !dfc->buf1) {
5884 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
5890 if (!dfc->buf2_size || !dfc->buf2) {
5892 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
5898 if (!dfc->buf3 || !dfc->buf3_size) {
5900 "%s: Null buffer3 found.", emlxs_dfc_xlate(dfc->cmd));
5906 if (dfc->buf3_size < sizeof (uint32_t)) {
5909 emlxs_dfc_xlate(dfc->cmd), dfc->buf3_size,
5916 cmd_size = dfc->buf1_size;
5917 cmd_buf = (uint8_t *)dfc->buf1;
5919 rsp_size = dfc->buf2_size;
5920 rsp_buf = (uint8_t *)dfc->buf2;
5928 bcopy((void *)rsp_buf, (void *)dfc->buf2, rsp_size);
5929 bcopy((void *)&rsp_size, (void *)dfc->buf3, sizeof (uint32_t));
6482 emlxs_dfc_write_flash(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
6493 emlxs_dfc_xlate(dfc->cmd), hba->bus_type);
6500 "%s: Adapter not offline.", emlxs_dfc_xlate(dfc->cmd));
6505 if (!dfc->buf1 || !dfc->buf1_size) {
6507 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
6512 offset = dfc->data1;
6513 cnt = dfc->data2;
6518 emlxs_dfc_xlate(dfc->cmd), offset);
6523 if (cnt > dfc->buf1_size) {
6526 emlxs_dfc_xlate(dfc->cmd), cnt);
6534 emlxs_dfc_xlate(dfc->cmd), cnt, offset);
6543 bptr = (uint8_t *)dfc->buf1;
6567 emlxs_dfc_read_flash(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
6579 emlxs_dfc_xlate(dfc->cmd), hba->bus_type);
6586 "%s: Adapter not offline.", emlxs_dfc_xlate(dfc->cmd));
6591 if (!dfc->buf1 || !dfc->buf1_size) {
6593 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
6598 offset = dfc->data1;
6599 count = dfc->data2;
6600 outsz = dfc->buf1_size;
6605 emlxs_dfc_xlate(dfc->cmd), offset);
6613 emlxs_dfc_xlate(dfc->cmd), count, offset);
6622 bptr = (uint8_t *)dfc->buf1;
6644 emlxs_dfc_send_els(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
6659 cmd_buf = dfc->buf1;
6660 cmd_size = dfc->buf1_size;
6661 rsp_buf = dfc->buf2;
6662 rsp_size = dfc->buf2_size;
6668 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
6676 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
6682 if (!dfc->buf3 || !dfc->buf3_size) {
6684 "%s: Null buffer3 found.", emlxs_dfc_xlate(dfc->cmd));
6690 if (dfc->buf3_size < sizeof (dfc_destid_t)) {
6693 emlxs_dfc_xlate(dfc->cmd), dfc->buf3_size);
6699 if (!dfc->buf4 || !dfc->buf4_size) {
6701 "%s: Null buffer4 found.", emlxs_dfc_xlate(dfc->cmd));
6707 if (dfc->buf4_size < sizeof (uint32_t)) {
6710 emlxs_dfc_xlate(dfc->cmd), dfc->buf4_size);
6716 destid = (dfc_destid_t *)dfc->buf3;
6723 emlxs_dfc_xlate(dfc->cmd), emlxs_wwn_xlate(buffer,
6734 emlxs_dfc_xlate(dfc->cmd), destid->d_id);
6749 emlxs_dfc_xlate(dfc->cmd));
6783 bzero((void *)dfc->buf4, sizeof (uint32_t));
6801 bcopy((void *)&rsp_size, (void *)dfc->buf4,
6817 bzero((void *)dfc->buf4, sizeof (uint32_t));
6823 bcopy((void *)&rsp_size, (void *)dfc->buf4, sizeof (uint32_t));
6839 emlxs_dfc_get_ioinfo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
6845 if (!dfc->buf1 || !dfc->buf1_size) {
6847 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
6852 if (dfc->buf1_size < sizeof (dfc_ioinfo_t)) {
6855 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
6860 ioinfo = (dfc_ioinfo_t *)dfc->buf1;
6909 emlxs_dfc_get_linkinfo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
6914 if (!dfc->buf1 || !dfc->buf1_size) {
6916 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
6921 if (dfc->buf1_size < sizeof (dfc_linkinfo_t)) {
6924 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
6929 linkinfo = (dfc_linkinfo_t *)dfc->buf1;
6993 emlxs_dfc_get_fctstat(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
6999 if (!dfc->buf1 || !dfc->buf1_size) {
7001 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
7006 if (dfc->buf1_size < sizeof (emlxs_tgtport_stat_t)) {
7009 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
7014 dfcstat = (dfc_tgtport_stat_t *)dfc->buf1;
7049 if (dfc->flag) { /* Clear counters after read */
7080 emlxs_dfc_get_nodeinfo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7089 port = &VPORT(dfc->data1);
7091 if (!dfc->buf1 || !dfc->buf1_size) {
7093 "%s: NULL buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
7098 if (dfc->buf1_size < (sizeof (dfc_node_t) * MAX_NODES)) {
7101 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
7106 if (!dfc->buf2 || !dfc->buf2_size) {
7108 "%s: NULL buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
7113 if (dfc->buf2_size < sizeof (uint32_t)) {
7116 emlxs_dfc_xlate(dfc->cmd), dfc->buf2_size);
7127 dnp = (dfc_node_t *)dfc->buf1;
7170 bcopy((void *)&node_count, (void *)dfc->buf2, sizeof (uint32_t));
7178 emlxs_dfc_read_mem(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7186 offset = dfc->data1;
7187 size = dfc->data2;
7189 if (!dfc->buf1 || !dfc->buf1_size) {
7191 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
7196 if (size > dfc->buf1_size) {
7197 size = dfc->buf1_size;
7203 emlxs_dfc_xlate(dfc->cmd), offset);
7211 emlxs_dfc_xlate(dfc->cmd), size);
7225 emlxs_dfc_xlate(dfc->cmd), offset);
7236 BE_SWAP32_BCOPY((uint8_t *)slim, (uint8_t *)dfc->buf1, size);
7239 READ_SLIM_COPY(hba, (uint32_t *)dfc->buf1, (uint32_t *)slim,
7260 emlxs_dfc_write_mem(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7268 offset = dfc->data1;
7269 size = dfc->data2;
7271 if (!dfc->buf1 || !dfc->buf1_size) {
7273 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
7278 if (size > dfc->buf1_size) {
7279 size = dfc->buf1_size;
7285 emlxs_dfc_xlate(dfc->cmd), offset);
7293 emlxs_dfc_xlate(dfc->cmd), size);
7307 emlxs_dfc_xlate(dfc->cmd), offset);
7318 BE_SWAP32_BCOPY((uint8_t *)dfc->buf1, (uint8_t *)slim, size);
7321 WRITE_SLIM_COPY(hba, (uint32_t *)dfc->buf1, (uint32_t *)slim,
7342 emlxs_dfc_write_ctlreg(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7348 offset = dfc->data1;
7349 value = dfc->data2;
7353 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
7360 "%s: Adapter not offline.", emlxs_dfc_xlate(dfc->cmd));
7368 emlxs_dfc_xlate(dfc->cmd), offset);
7376 emlxs_dfc_xlate(dfc->cmd), offset);
7400 emlxs_dfc_read_ctlreg(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7406 offset = dfc->data1;
7410 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
7418 emlxs_dfc_xlate(dfc->cmd), offset);
7426 emlxs_dfc_xlate(dfc->cmd), offset);
7431 if (!dfc->buf1 || !dfc->buf1_size) {
7433 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
7438 if (dfc->buf1_size < sizeof (uint32_t)) {
7441 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
7447 bcopy((void *)&value, (void *)dfc->buf1, sizeof (uint32_t));
7466 emlxs_dfc_set_event(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7476 event = dfc->data1;
7477 pid = dfc->data2;
7478 enable = dfc->flag;
7481 "%s: %s. pid=%d enable=%d", emlxs_dfc_xlate(dfc->cmd),
7498 emlxs_dfc_xlate(dfc->cmd), emlxs_dfc_event_xlate(event),
7505 if (dfc->buf1_size < sizeof (uint32_t)) {
7506 dfc->buf1 = NULL;
7507 } else if (!dfc->buf1) {
7508 dfc->buf1_size = 0;
7538 emlxs_dfc_xlate(dfc->cmd),
7556 if (dfc->buf1) {
7557 bcopy((void *)&dfc_event->last_id, dfc->buf1,
7563 * "%s: %s. Enabled. pid=%d id=%d", emlxs_dfc_xlate(dfc->cmd),
7585 emlxs_dfc_xlate(dfc->cmd),
7618 emlxs_dfc_get_eventinfo(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7627 if (!dfc->buf1 || !dfc->buf1_size) {
7629 "%s: Null buffer1 buffer.", emlxs_dfc_xlate(dfc->cmd));
7634 event_count = dfc->buf1_size / sizeof (HBA_EVENTINFO);
7639 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
7644 if (!dfc->buf2 || !dfc->buf2_size) {
7646 "%s: Null buffer2 buffer.", emlxs_dfc_xlate(dfc->cmd));
7651 if (dfc->buf2_size < sizeof (uint32_t)) {
7654 emlxs_dfc_xlate(dfc->cmd), dfc->buf2_size);
7659 if (!dfc->buf3 || !dfc->buf3_size) {
7661 "%s: Null buffer3 found.", emlxs_dfc_xlate(dfc->cmd));
7666 if (dfc->buf3_size < sizeof (uint32_t)) {
7669 emlxs_dfc_xlate(dfc->cmd), dfc->buf3_size);
7675 emlxs_dfc_xlate(dfc->cmd), event_count);
7684 emlxs_dfc_xlate(dfc->cmd));
7691 bcopy((void *)event_buffer, dfc->buf1,
7695 bcopy((void *)&event_count, dfc->buf2, sizeof (uint32_t));
7696 bcopy((void *)&missed, dfc->buf3, sizeof (uint32_t));
7700 emlxs_dfc_xlate(dfc->cmd), event_count, hba->hba_event.missed,
7716 emlxs_dfc_get_event(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
7726 event = dfc->data1;
7727 pid = dfc->data2;
7729 if (!dfc->buf1_size) {
7730 dfc->buf1 = NULL;
7731 } else if (!dfc->buf1) {
7732 dfc->buf1_size = 0;
7735 if (dfc->buf2_size < sizeof (uint32_t)) {
7736 dfc->buf2 = NULL;
7737 } else if (!dfc->buf2) {
7738 dfc->buf2_size = 0;
7741 if (dfc->buf3_size < sizeof (uint32_t)) {
7742 dfc->buf3 = NULL;
7743 } else if (!dfc->buf3) {
7744 dfc->buf3_size = 0;
7749 emlxs_dfc_xlate(dfc->cmd), emlxs_dfc_event_xlate(event), pid,
7750 dfc->buf1_size, dfc->buf1, dfc->buf2_size, dfc->buf2, dfc->data3);
7765 emlxs_dfc_xlate(dfc->cmd), emlxs_dfc_event_xlate(event),
7774 emlxs_dfc_xlate(dfc->cmd), emlxs_dfc_event_xlate(event),
7781 dfc_event->dataout = dfc->buf1;
7782 dfc_event->size = dfc->buf1_size;
7783 dfc_event->last_id = dfc->data3;
7786 sleep = (dfc->flag & 0x01) ? 1 : 0;
7790 if (dfc->buf2) {
7791 bcopy((void *)&dfc_event->size, dfc->buf2, sizeof (uint32_t));
7794 if (dfc->buf3) {
7795 bcopy((void *)&dfc_event->last_id, dfc->buf3,
7801 emlxs_dfc_xlate(dfc->cmd), emlxs_dfc_event_xlate(event), pid,
8087 emlxs_dfc_get_dump_region(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
8096 emlxs_dfc_xlate(dfc->cmd), dfc->data1, dfc->buf1_size);
8098 if (!dfc->buf1 || !dfc->buf1_size) {
8102 if (!dfc->buf2 || !dfc->buf2_size) {
8104 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
8109 if (dfc->buf2_size < sizeof (uint32_t)) {
8112 emlxs_dfc_xlate(dfc->cmd), dfc->buf2_size);
8119 rval = emlxs_get_dump_region(hba, dfc->data1, NULL, &size);
8126 if (dfc->buf1_size < size) {
8129 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size, size);
8136 rval = emlxs_get_dump_region(hba, dfc->data1, dfc->buf1, &size);
8144 bcopy((void *) &size, (void *) dfc->buf2, sizeof (uint32_t));
8491 emlxs_dfc_loopback_mode(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
8508 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
8514 switch (dfc->flag) {
8518 "%s: Disabling Loopback.", emlxs_dfc_xlate(dfc->cmd));
8523 emlxs_dfc_xlate(dfc->cmd));
8535 "%s: Enabling ILB.", emlxs_dfc_xlate(dfc->cmd));
8541 emlxs_dfc_xlate(dfc->cmd));
8558 "%s: Enabling ELB.", emlxs_dfc_xlate(dfc->cmd));
8564 emlxs_dfc_xlate(dfc->cmd));
8574 emlxs_dfc_xlate(dfc->cmd), dfc->flag);
8583 emlxs_dfc_xlate(dfc->cmd));
8592 emlxs_dfc_xlate(dfc->cmd), new_mode);
8615 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
8623 "%s: %s failed. status=%x", emlxs_dfc_xlate(dfc->cmd),
8633 timeout = dfc->data1;
8649 "%s: Linkdown timeout.", emlxs_dfc_xlate(dfc->cmd));
8669 emlxs_dfc_xlate(dfc->cmd), mb->mbxCommand);
8677 "%s: %s failed. status=%x", emlxs_dfc_xlate(dfc->cmd),
8693 "%s: Linkup timeout.", emlxs_dfc_xlate(dfc->cmd));
8704 emlxs_dfc_xlate(dfc->cmd));
8723 emlxs_dfc_xlate(dfc->cmd));
8730 "%s: Node created. node=%p", emlxs_dfc_xlate(dfc->cmd), ndlp);
8736 emlxs_dfc_xlate(dfc->cmd), new_mode);
8762 emlxs_dfc_xlate(dfc->cmd));
8769 "%s: XRI created. xri=%d", emlxs_dfc_xlate(dfc->cmd),
8779 emlxs_dfc_xlate(dfc->cmd));
8787 "%s: XRI reserved. xri=%d", emlxs_dfc_xlate(dfc->cmd),
8807 emlxs_dfc_xlate(dfc->cmd), rval);
8821 emlxs_dfc_loopback_test(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
8833 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
8844 emlxs_dfc_xlate(dfc->cmd));
8854 "%s: Adapter offline.", emlxs_dfc_xlate(dfc->cmd));
8862 "%s: Link not up.", emlxs_dfc_xlate(dfc->cmd));
8868 if (!dfc->buf1 || !dfc->buf1_size) {
8870 "%s: NULL buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
8876 if (!dfc->buf2 || !dfc->buf2_size) {
8878 "%s: NULL buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
8884 if (dfc->buf1_size > MAX_CT_PAYLOAD) {
8887 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
8898 "%s: Host node not found.", emlxs_dfc_xlate(dfc->cmd));
8906 "%s: Host XRI not found.", emlxs_dfc_xlate(dfc->cmd));
8912 pkt = emlxs_pkt_alloc(port, dfc->buf1_size + 16,
8913 dfc->buf2_size + 16, 0, KM_SLEEP);
8917 "%s: Unable to allocate pkt.", emlxs_dfc_xlate(dfc->cmd));
8926 bcopy((void *)dfc->buf1, (void *)&CtCmd->un.data, dfc->buf1_size);
9008 bcopy((void *)&CtCmd->un.data, (void *)dfc->buf2, dfc->buf2_size);
9013 emlxs_dfc_xlate(dfc->cmd));
9039 emlxs_dfc_reset_port(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9044 switch (dfc->flag) {
9064 emlxs_dfc_xlate(dfc->cmd), dfc->flag);
9212 emlxs_dfc_init_auth(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9219 if (!dfc->buf1 || !dfc->buf1_size) {
9221 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
9226 if (dfc->buf1_size < 8) {
9229 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9234 if (!dfc->buf2 || !dfc->buf2_size) {
9236 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
9241 if (dfc->buf2_size < 8) {
9244 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9249 lwwpn = (uint8_t *)dfc->buf1;
9250 rwwpn = (uint8_t *)dfc->buf2;
9262 emlxs_dfc_get_auth_cfg(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9268 if (!dfc->buf1 || !dfc->buf1_size) {
9270 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
9275 if (dfc->buf1_size < sizeof (dfc_fcsp_config_t)) {
9278 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9283 fcsp_config = (dfc_fcsp_config_t *)dfc->buf1;
9297 emlxs_dfc_set_auth_cfg(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9304 if (!dfc->buf1 || !dfc->buf1_size) {
9306 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
9311 if (dfc->buf1_size < sizeof (dfc_fcsp_config_t)) {
9314 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9319 if (!dfc->buf2 || !dfc->buf2_size) {
9321 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
9326 if (dfc->buf2_size < sizeof (dfc_password_t)) {
9329 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9334 fcsp_config = (dfc_fcsp_config_t *)dfc->buf1;
9335 dfc_pwd = (dfc_password_t *)dfc->buf2;
9337 switch (dfc->flag) {
9359 emlxs_dfc_get_auth_pwd(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9365 if (!dfc->buf1 || !dfc->buf1_size) {
9367 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
9372 if (dfc->buf1_size < sizeof (dfc_auth_password_t)) {
9375 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9381 dfc_pwd = (dfc_auth_password_t *)dfc->buf1;
9394 emlxs_dfc_set_auth_pwd(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9400 if (!dfc->buf1 || !dfc->buf1_size) {
9402 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
9407 if (dfc->buf1_size < sizeof (dfc_auth_password_t)) {
9410 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9415 dfc_pwd = (dfc_auth_password_t *)dfc->buf1;
9428 emlxs_dfc_get_auth_status(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9434 if (!dfc->buf1 || !dfc->buf1_size) {
9437 emlxs_dfc_xlate(dfc->cmd));
9442 if (dfc->buf1_size < sizeof (dfc_auth_status_t)) {
9445 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
9450 fcsp_status = (dfc_auth_status_t *)dfc->buf1;
9463 emlxs_dfc_get_auth_cfg_table(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9473 if (!dfc->buf2 || !dfc->buf2_size) {
9476 emlxs_dfc_xlate(dfc->cmd));
9482 if (dfc->buf2_size < sizeof (uint32_t)) {
9485 emlxs_dfc_xlate(dfc->cmd), dfc->buf2_size);
9491 bcopy((void *)&hba->auth_cfg_count, (void *)dfc->buf2,
9494 if (!dfc->buf1 || !dfc->buf1_size) {
9500 count = dfc->buf1_size / sizeof (dfc_fcsp_config_t);
9504 emlxs_dfc_xlate(dfc->cmd), count, hba->auth_cfg_count);
9511 (dfc_fcsp_config_t *)dfc->buf1);
9520 emlxs_dfc_get_auth_key_table(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9530 if (!dfc->buf2 || !dfc->buf2_size) {
9533 emlxs_dfc_xlate(dfc->cmd));
9539 if (dfc->buf2_size < sizeof (uint32_t)) {
9542 emlxs_dfc_xlate(dfc->cmd), dfc->buf2_size);
9548 bcopy((void *)&hba->auth_key_count, (void *)dfc->buf2,
9551 if (!dfc->buf1 || !dfc->buf1_size) {
9557 count = dfc->buf1_size / sizeof (dfc_auth_password_t);
9561 emlxs_dfc_xlate(dfc->cmd), count, hba->auth_key_count);
9568 (dfc_auth_password_t *)dfc->buf1);
9581 emlxs_dfc_sd_set_bucket(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9587 type = dfc->data1;
9588 search_type = dfc->data2;
9601 bcopy(dfc->buf3, (void *) &emlxs_sd_bucket,
9612 emlxs_dfc_sd_destroy_bucket(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9617 type = dfc->data1;
9639 emlxs_dfc_sd_get_bucket(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9644 type = dfc->data1;
9653 bcopy(&emlxs_sd_bucket, dfc->buf3,
9665 emlxs_dfc_sd_start_collection(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9673 if (dfc->data1 != SD_SCSI_IO_LATENCY_TYPE) {
9684 bcopy((void *)dfc->buf3, (void *)wwpn, 8);
9727 emlxs_dfc_sd_stop_collection(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9735 if (dfc->data1 != SD_SCSI_IO_LATENCY_TYPE) {
9746 bcopy((void *)dfc->buf3, (void *)wwpn, 8);
9790 emlxs_dfc_sd_reset_collection(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9798 if (dfc->data1 != SD_SCSI_IO_LATENCY_TYPE) {
9809 bcopy((void *)dfc->buf3, (void *)wwpn, 8);
9840 emlxs_dfc_sd_get_data(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9850 if (dfc->data1 != SD_SCSI_IO_LATENCY_TYPE) {
9861 bcopy((void *)dfc->buf3, (void *)wwpn, 8);
9871 bufsize = dfc->buf4_size;
9906 (void *)((char *)dfc->buf4 + skip_bytes),
9912 (void *)((char *)dfc->buf4 + skip_bytes),
9931 bcopy((void *)&count, (void *)dfc->buf2, sizeof (uint16_t));
9941 emlxs_dfc_sd_set_event(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
9957 event = dfc->data1;
9958 pid = dfc->data3;
9959 enable = dfc->flag;
9962 bcopy((void *)dfc->buf3, (void *)wwpn, 8);
9998 if (dfc->buf1) {
9999 bcopy((void *) &dfc_event->last_id, dfc->buf1,
10046 emlxs_dfc_sd_get_event(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10054 event = dfc->data1;
10055 pid = dfc->data2;
10058 bcopy((void *)dfc->buf4, (void *)wwpn, 8);
10088 dfc_event->dataout = dfc->buf1;
10089 dfc_event->size = dfc->buf1_size;
10090 dfc_event->last_id = dfc->data3;
10093 sleep = (dfc->flag & 0x01) ? 1 : 0;
10100 if (dfc->buf2) {
10101 bcopy((void *) &dfc_event->size, dfc->buf2,
10108 if (dfc->buf3) {
10109 bcopy((void *) &dfc_event->last_id, dfc->buf3,
10120 emlxs_dfc_send_scsi_fcp(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10133 if (!dfc->buf1 ||
10134 (dfc->buf1_size != sizeof (dfc_send_scsi_fcp_cmd_info_t))) {
10136 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
10143 if (!dfc->buf2 || (dfc->buf2_size != sizeof (FCP_CMND))) {
10145 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
10152 if (!dfc->buf3 && dfc->buf3_size) {
10154 "%s: Null buffer3 found.", emlxs_dfc_xlate(dfc->cmd));
10161 if (!dfc->buf4 || !dfc->buf4_size) {
10163 "%s: Null buffer4 found.", emlxs_dfc_xlate(dfc->cmd));
10169 cmdinfo = (dfc_send_scsi_fcp_cmd_info_t *)dfc->buf1;
10177 emlxs_dfc_xlate(dfc->cmd), emlxs_wwn_xlate(buffer,
10188 "%s: WWPN does not exists. %s", emlxs_dfc_xlate(dfc->cmd),
10197 dfc->buf3_size, KM_NOSLEEP))) {
10200 emlxs_dfc_xlate(dfc->cmd));
10208 bcopy((void *)dfc->buf2, (void *)fcp_cmd, sizeof (FCP_CMND));
10229 if ((fcp_cmd->fcpCntl3 == WRITE_DATA) && dfc->buf3_size) {
10231 bcopy((void *)dfc->buf3, (void *)pkt->pkt_data, dfc->buf3_size);
10255 if (pkt->pkt_data_resid < dfc->buf3_size)
10256 dfc->buf3_size -= pkt->pkt_data_resid;
10258 dfc->buf3_size = 0;
10261 SCSI_RSP_CNT(cmdinfo) = dfc->buf3_size;
10268 if (dfc->flag) {
10278 bcopy(ptr, (void *)dfc->buf4, SCSI_SNS_CNT(cmdinfo));
10282 bcopy((void *)pkt->pkt_data, (void *)dfc->buf3,
10300 emlxs_dfc_get_persist_linkdown(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10309 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
10314 if (!dfc->buf1 || !dfc->buf1_size) {
10316 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
10322 bcopy((void *)&linkdown, dfc->buf1, sizeof (uint16_t));
10331 emlxs_dfc_set_persist_linkdown(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10339 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
10344 if (dfc->data1) {
10357 emlxs_dfc_get_fcflist(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10368 if (!dfc->buf1 || !dfc->buf1_size) {
10370 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
10375 if (dfc->buf1_size < sizeof (DFC_FCoEFCFList_t)) {
10378 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
10385 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
10392 "%s: HBA not ready.", emlxs_dfc_xlate(dfc->cmd));
10401 bcopy(dfc->buf1, (void *)fcflist, sizeof (DFC_FCoEFCFList_t));
10442 bcopy((void *)fcflist, dfc->buf1, i);
10453 emlxs_dfc_send_mbox4(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10468 "%s: SLI Mode %d not supported.", emlxs_dfc_xlate(dfc->cmd),
10474 if (!dfc->buf1 || !dfc->buf1_size) {
10476 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
10481 if (!dfc->buf2 || !dfc->buf2_size) {
10483 "%s: Null buffer2 found.", emlxs_dfc_xlate(dfc->cmd));
10488 if ((dfc->buf1_size != dfc->buf2_size) ||
10489 (dfc->buf1_size < sizeof (MAILBOX4))) {
10492 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
10499 bcopy(dfc->buf1, (void *)mb4, sizeof (MAILBOX4));
10514 emlxs_dfc_xlate(dfc->cmd));
10522 (dfc->buf1_size - sizeof (MAILBOX4)))) {
10525 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
10537 emlxs_dfc_xlate(dfc->cmd));
10543 bcopy((uint8_t *)dfc->buf1 + sizeof (MAILBOX4),
10574 emlxs_dfc_xlate(dfc->cmd));
10581 (dfc->buf1_size - sizeof (MAILBOX4))) {
10584 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
10598 emlxs_dfc_xlate(dfc->cmd));
10604 bcopy((uint8_t *)dfc->buf1 + sizeof (MAILBOX4),
10622 (dfc->buf1_size - sizeof (MAILBOX4))) {
10625 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
10637 emlxs_dfc_xlate(dfc->cmd));
10643 bcopy((uint8_t *)dfc->buf1 + sizeof (MAILBOX4),
10657 (dfc->buf1_size - sizeof (MAILBOX4))) {
10660 emlxs_dfc_xlate(dfc->cmd), dfc->buf1_size);
10672 emlxs_dfc_xlate(dfc->cmd));
10678 bcopy((uint8_t *)dfc->buf1 + sizeof (MAILBOX4),
10695 emlxs_dfc_xlate(dfc->cmd), mb4->mbxCommand);
10705 emlxs_dfc_xlate(dfc->cmd), mb4->mbxCommand);
10716 emlxs_dfc_xlate(dfc->cmd), mb4->mbxCommand);
10737 emlxs_dfc_xlate(dfc->cmd), mb4->mbxCommand);
10747 emlxs_dfc_xlate(dfc->cmd), mb4->mbxCommand);
10768 "%s: %s sent. (%x %x %x %x)", emlxs_dfc_xlate(dfc->cmd),
10778 emlxs_dfc_xlate(dfc->cmd),
10782 bcopy((void *)mb4, dfc->buf2, sizeof (MAILBOX4));
10784 bcopy(mp->virt, (uint8_t *)dfc->buf2 + sizeof (MAILBOX4),
10796 emlxs_dfc_xlate(dfc->cmd), mb4->mbxCommand);
10827 emlxs_dfc_rd_be_fcf(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10841 if (!dfc->buf1 || !dfc->buf1_size) {
10843 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd));
10851 index = dfc->data1;
10886 bcopy((void *)fcfrec, (void *)dfc->buf1, dfc->buf1_size);
10888 (void *)dfc->buf2, dfc->buf2_size);
10891 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd),
10918 emlxs_dfc_set_be_dcbx(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
10948 dcbx_mode->params.request.dcbx_mode = dfc->data1;
10951 "%s requested on port %d.", emlxs_dfc_xlate(dfc->cmd), port_num);
10956 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd),
10974 emlxs_dfc_get_be_dcbx(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
11006 "%s requested on port %d.", emlxs_dfc_xlate(dfc->cmd), port_num);
11011 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd),
11019 (void *)dfc->buf1, dfc->buf1_size);
11033 emlxs_dfc_get_qos(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode)
11040 "%s: FCoE not supported.", emlxs_dfc_xlate(dfc->cmd));
11045 if (dfc->buf1_size) {
11046 bcopy((void *)&hba->qos_linkspeed, (void *)dfc->buf1,
11047 dfc->buf1_size);