Lines Matching refs:ioc
68 static int _ctl_send_release(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type,
95 _ctl_sas_device_find_by_handle(struct MPT2SAS_ADAPTER *ioc, u16 handle) in _ctl_sas_device_find_by_handle() argument
100 list_for_each_entry(sas_device, &ioc->sas_device_list, list) { in _ctl_sas_device_find_by_handle()
123 _ctl_display_some_debug(struct MPT2SAS_ADAPTER *ioc, u16 smid, in _ctl_display_some_debug() argument
129 if (!(ioc->logging_level & MPT_DEBUG_IOCTL)) in _ctl_display_some_debug()
132 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _ctl_display_some_debug()
139 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
143 desc = ioc->tmp_string; in _ctl_display_some_debug()
160 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
165 desc = ioc->tmp_string; in _ctl_display_some_debug()
191 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
195 desc = ioc->tmp_string; in _ctl_display_some_debug()
219 ioc->name, calling_function_name, desc, smid); in _ctl_display_some_debug()
227 ioc->name, le16_to_cpu(mpi_reply->IOCStatus), in _ctl_display_some_debug()
238 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _ctl_display_some_debug()
239 sas_device = _ctl_sas_device_find_by_handle(ioc, in _ctl_display_some_debug()
243 "phy(%d)\n", ioc->name, (unsigned long long) in _ctl_display_some_debug()
247 ioc->name, sas_device->enclosure_logical_id, in _ctl_display_some_debug()
250 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _ctl_display_some_debug()
254 "(0x%02x)\n", ioc->name, in _ctl_display_some_debug()
275 mpt2sas_ctl_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt2sas_ctl_done() argument
283 if (ioc->ctl_cmds.status == MPT2_CMD_NOT_USED) in mpt2sas_ctl_done()
285 if (ioc->ctl_cmds.smid != smid) in mpt2sas_ctl_done()
287 ioc->ctl_cmds.status |= MPT2_CMD_COMPLETE; in mpt2sas_ctl_done()
288 mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply); in mpt2sas_ctl_done()
290 memcpy(ioc->ctl_cmds.reply, mpi_reply, mpi_reply->MsgLength*4); in mpt2sas_ctl_done()
291 ioc->ctl_cmds.status |= MPT2_CMD_REPLY_VALID; in mpt2sas_ctl_done()
301 sense_data = mpt2sas_base_get_sense_buffer(ioc, in mpt2sas_ctl_done()
303 memcpy(ioc->ctl_cmds.sense, sense_data, sz); in mpt2sas_ctl_done()
308 _ctl_display_some_debug(ioc, smid, "ctl_done", mpi_reply); in mpt2sas_ctl_done()
310 ioc->ctl_cmds.status &= ~MPT2_CMD_PENDING; in mpt2sas_ctl_done()
311 complete(&ioc->ctl_cmds.done); in mpt2sas_ctl_done()
326 _ctl_check_event_type(struct MPT2SAS_ADAPTER *ioc, u16 event) in _ctl_check_event_type() argument
331 if (event >= 128 || !event || !ioc->event_log) in _ctl_check_event_type()
338 return desired_event & ioc->event_type[i]; in _ctl_check_event_type()
349 mpt2sas_ctl_add_to_event_log(struct MPT2SAS_ADAPTER *ioc, in mpt2sas_ctl_add_to_event_log() argument
358 if (!ioc->event_log) in mpt2sas_ctl_add_to_event_log()
363 if (_ctl_check_event_type(ioc, event)) { in mpt2sas_ctl_add_to_event_log()
366 i = ioc->event_context % MPT2SAS_CTL_EVENT_LOG_SIZE; in mpt2sas_ctl_add_to_event_log()
367 event_log = ioc->event_log; in mpt2sas_ctl_add_to_event_log()
369 event_log[i].context = ioc->event_context++; in mpt2sas_ctl_add_to_event_log()
383 (send_aen && !ioc->aen_event_read_flag)) { in mpt2sas_ctl_add_to_event_log()
384 ioc->aen_event_read_flag = 1; in mpt2sas_ctl_add_to_event_log()
404 mpt2sas_ctl_event_callback(struct MPT2SAS_ADAPTER *ioc, u8 msix_index, in mpt2sas_ctl_event_callback() argument
409 mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply); in mpt2sas_ctl_event_callback()
412 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_ctl_event_callback()
415 mpt2sas_ctl_add_to_event_log(ioc, mpi_reply); in mpt2sas_ctl_event_callback()
429 struct MPT2SAS_ADAPTER *ioc; in _ctl_verify_adapter() local
431 list_for_each_entry(ioc, &mpt2sas_ioc_list, list) { in _ctl_verify_adapter()
432 if (ioc->id != ioc_number) in _ctl_verify_adapter()
434 *iocpp = ioc; in _ctl_verify_adapter()
452 mpt2sas_ctl_reset_handler(struct MPT2SAS_ADAPTER *ioc, int reset_phase) in mpt2sas_ctl_reset_handler() argument
459 dtmprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in mpt2sas_ctl_reset_handler()
460 "MPT2_IOC_PRE_RESET\n", ioc->name, __func__)); in mpt2sas_ctl_reset_handler()
462 if (!(ioc->diag_buffer_status[i] & in mpt2sas_ctl_reset_handler()
465 if ((ioc->diag_buffer_status[i] & in mpt2sas_ctl_reset_handler()
468 _ctl_send_release(ioc, i, &issue_reset); in mpt2sas_ctl_reset_handler()
472 dtmprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in mpt2sas_ctl_reset_handler()
473 "MPT2_IOC_AFTER_RESET\n", ioc->name, __func__)); in mpt2sas_ctl_reset_handler()
474 if (ioc->ctl_cmds.status & MPT2_CMD_PENDING) { in mpt2sas_ctl_reset_handler()
475 ioc->ctl_cmds.status |= MPT2_CMD_RESET; in mpt2sas_ctl_reset_handler()
476 mpt2sas_base_free_smid(ioc, ioc->ctl_cmds.smid); in mpt2sas_ctl_reset_handler()
477 complete(&ioc->ctl_cmds.done); in mpt2sas_ctl_reset_handler()
481 dtmprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in mpt2sas_ctl_reset_handler()
482 "MPT2_IOC_DONE_RESET\n", ioc->name, __func__)); in mpt2sas_ctl_reset_handler()
485 if (!(ioc->diag_buffer_status[i] & in mpt2sas_ctl_reset_handler()
488 if ((ioc->diag_buffer_status[i] & in mpt2sas_ctl_reset_handler()
491 ioc->diag_buffer_status[i] |= in mpt2sas_ctl_reset_handler()
521 struct MPT2SAS_ADAPTER *ioc; in _ctl_poll() local
525 list_for_each_entry(ioc, &mpt2sas_ioc_list, list) { in _ctl_poll()
526 if (ioc->aen_event_read_flag) in _ctl_poll()
542 _ctl_set_task_mid(struct MPT2SAS_ADAPTER *ioc, struct mpt2_ioctl_command *karg, in _ctl_set_task_mid() argument
566 spin_lock_irqsave(&ioc->scsi_lookup_lock, flags); in _ctl_set_task_mid()
567 for (i = ioc->scsiio_depth; i && !found; i--) { in _ctl_set_task_mid()
568 scmd = ioc->scsi_lookup[i - 1].scmd; in _ctl_set_task_mid()
579 tm_request->TaskMID = cpu_to_le16(ioc->scsi_lookup[i - 1].smid); in _ctl_set_task_mid()
582 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags); in _ctl_set_task_mid()
585 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in _ctl_set_task_mid()
586 "handle(0x%04x), lun(%d), no active mid!!\n", ioc->name, in _ctl_set_task_mid()
588 tm_reply = ioc->ctl_cmds.reply; in _ctl_set_task_mid()
595 sz = min_t(u32, karg->max_reply_bytes, ioc->reply_sz); in _ctl_set_task_mid()
596 if (copy_to_user(karg->reply_frame_buf_ptr, ioc->ctl_cmds.reply, in _ctl_set_task_mid()
603 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in _ctl_set_task_mid()
604 "handle(0x%04x), lun(%d), task_mid(%d)\n", ioc->name, in _ctl_set_task_mid()
617 _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc, struct mpt2_ioctl_command karg, in _ctl_do_mpt_command() argument
641 if (ioc->ctl_cmds.status != MPT2_CMD_NOT_USED) { in _ctl_do_mpt_command()
643 ioc->name, __func__); in _ctl_do_mpt_command()
649 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _ctl_do_mpt_command()
654 ioc->name, __func__); in _ctl_do_mpt_command()
659 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _ctl_do_mpt_command()
661 "operational state(count=%d)\n", ioc->name, in _ctl_do_mpt_command()
666 ioc->name, __func__); in _ctl_do_mpt_command()
668 mpi_request = kzalloc(ioc->request_sz, GFP_KERNEL); in _ctl_do_mpt_command()
671 "mpi_request\n", ioc->name, __func__); in _ctl_do_mpt_command()
677 if (karg.data_sge_offset * 4 > ioc->request_sz || in _ctl_do_mpt_command()
692 smid = mpt2sas_base_get_smid_hpr(ioc, ioc->ctl_cb_idx); in _ctl_do_mpt_command()
695 ioc->name, __func__); in _ctl_do_mpt_command()
701 smid = mpt2sas_base_get_smid_scsiio(ioc, ioc->ctl_cb_idx, NULL); in _ctl_do_mpt_command()
704 ioc->name, __func__); in _ctl_do_mpt_command()
711 ioc->ctl_cmds.status = MPT2_CMD_PENDING; in _ctl_do_mpt_command()
712 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_do_mpt_command()
713 request = mpt2sas_base_get_msg_frame(ioc, smid); in _ctl_do_mpt_command()
715 ioc->ctl_cmds.smid = smid; in _ctl_do_mpt_command()
723 ioc->facts.MaxDevHandle) { in _ctl_do_mpt_command()
725 mpt2sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
732 data_out = pci_alloc_consistent(ioc->pdev, data_out_sz, in _ctl_do_mpt_command()
738 mpt2sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
746 mpt2sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
752 data_in = pci_alloc_consistent(ioc->pdev, data_in_sz, in _ctl_do_mpt_command()
758 mpt2sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
767 mpt2sas_base_build_zero_len_sge(ioc, psge); in _ctl_do_mpt_command()
773 ioc->base_add_sg_single(psge, sgl_flags | in _ctl_do_mpt_command()
777 psge += ioc->sge_size; in _ctl_do_mpt_command()
784 ioc->base_add_sg_single(psge, sgl_flags | in _ctl_do_mpt_command()
791 ioc->base_add_sg_single(psge, sgl_flags | in _ctl_do_mpt_command()
798 ioc->base_add_sg_single(psge, sgl_flags | in _ctl_do_mpt_command()
804 _ctl_display_some_debug(ioc, smid, "ctl_request", NULL); in _ctl_do_mpt_command()
807 init_completion(&ioc->ctl_cmds.done); in _ctl_do_mpt_command()
816 mpt2sas_base_get_sense_buffer_dma(ioc, smid); in _ctl_do_mpt_command()
817 memset(ioc->ctl_cmds.sense, 0, SCSI_SENSE_BUFFERSIZE); in _ctl_do_mpt_command()
819 mpt2sas_base_put_smid_scsi_io(ioc, smid, in _ctl_do_mpt_command()
822 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
830 dtmprintk(ioc, printk(MPT2SAS_INFO_FMT "TASK_MGMT: " in _ctl_do_mpt_command()
831 "handle(0x%04x), task_type(0x%02x)\n", ioc->name, in _ctl_do_mpt_command()
838 if (_ctl_set_task_mid(ioc, &karg, tm_request)) { in _ctl_do_mpt_command()
839 mpt2sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
844 mpt2sas_scsih_set_tm_flag(ioc, le16_to_cpu( in _ctl_do_mpt_command()
846 mpt2sas_base_put_smid_hi_priority(ioc, smid); in _ctl_do_mpt_command()
864 mpt2sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
872 ioc->ioc_link_reset_in_progress = 1; in _ctl_do_mpt_command()
873 ioc->ignore_loginfos = 1; in _ctl_do_mpt_command()
875 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
886 ioc->ioc_link_reset_in_progress = 1; in _ctl_do_mpt_command()
887 ioc->ignore_loginfos = 1; in _ctl_do_mpt_command()
889 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
893 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
901 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_do_mpt_command()
906 mpt2sas_scsih_clear_tm_flag(ioc, le16_to_cpu( in _ctl_do_mpt_command()
910 ioc->ioc_link_reset_in_progress) { in _ctl_do_mpt_command()
911 ioc->ioc_link_reset_in_progress = 0; in _ctl_do_mpt_command()
912 ioc->ignore_loginfos = 0; in _ctl_do_mpt_command()
914 if (!(ioc->ctl_cmds.status & MPT2_CMD_COMPLETE)) { in _ctl_do_mpt_command()
915 printk(MPT2SAS_ERR_FMT "%s: timeout\n", ioc->name, in _ctl_do_mpt_command()
918 if (!(ioc->ctl_cmds.status & MPT2_CMD_RESET)) in _ctl_do_mpt_command()
923 mpi_reply = ioc->ctl_cmds.reply; in _ctl_do_mpt_command()
928 (ioc->logging_level & MPT_DEBUG_TM)) { in _ctl_do_mpt_command()
934 "TerminationCount(0x%08x)\n", ioc->name, in _ctl_do_mpt_command()
953 sz = min_t(u32, karg.max_reply_bytes, ioc->reply_sz); in _ctl_do_mpt_command()
954 if (copy_to_user(karg.reply_frame_buf_ptr, ioc->ctl_cmds.reply, in _ctl_do_mpt_command()
969 ioc->ctl_cmds.sense, sz)) { in _ctl_do_mpt_command()
985 "= (0x%04x)\n", ioc->name, in _ctl_do_mpt_command()
987 mpt2sas_halt_firmware(ioc); in _ctl_do_mpt_command()
988 mpt2sas_scsih_issue_tm(ioc, in _ctl_do_mpt_command()
992 ioc->tm_cmds.status = MPT2_CMD_NOT_USED; in _ctl_do_mpt_command()
994 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_do_mpt_command()
1002 pci_free_consistent(ioc->pdev, data_in_sz, data_in, in _ctl_do_mpt_command()
1006 pci_free_consistent(ioc->pdev, data_out_sz, data_out, in _ctl_do_mpt_command()
1010 ioc->ctl_cmds.status = MPT2_CMD_NOT_USED; in _ctl_do_mpt_command()
1020 _ctl_getiocinfo(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_getiocinfo() argument
1030 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: enter\n", ioc->name, in _ctl_getiocinfo()
1034 if (ioc->is_warpdrive) in _ctl_getiocinfo()
1038 if (ioc->pfacts) in _ctl_getiocinfo()
1039 karg.port_number = ioc->pfacts[0].PortNumber; in _ctl_getiocinfo()
1040 karg.hw_rev = ioc->pdev->revision; in _ctl_getiocinfo()
1041 karg.pci_id = ioc->pdev->device; in _ctl_getiocinfo()
1042 karg.subsystem_device = ioc->pdev->subsystem_device; in _ctl_getiocinfo()
1043 karg.subsystem_vendor = ioc->pdev->subsystem_vendor; in _ctl_getiocinfo()
1044 karg.pci_information.u.bits.bus = ioc->pdev->bus->number; in _ctl_getiocinfo()
1045 karg.pci_information.u.bits.device = PCI_SLOT(ioc->pdev->devfn); in _ctl_getiocinfo()
1046 karg.pci_information.u.bits.function = PCI_FUNC(ioc->pdev->devfn); in _ctl_getiocinfo()
1047 karg.pci_information.segment_id = pci_domain_nr(ioc->pdev->bus); in _ctl_getiocinfo()
1048 karg.firmware_version = ioc->facts.FWVersion.Word; in _ctl_getiocinfo()
1052 karg.bios_version = le32_to_cpu(ioc->bios_pg3.BiosVersion); in _ctl_getiocinfo()
1068 _ctl_eventquery(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventquery() argument
1078 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: enter\n", ioc->name, in _ctl_eventquery()
1082 memcpy(karg.event_types, ioc->event_type, in _ctl_eventquery()
1099 _ctl_eventenable(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventenable() argument
1109 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: enter\n", ioc->name, in _ctl_eventenable()
1112 if (ioc->event_log) in _ctl_eventenable()
1114 memcpy(ioc->event_type, karg.event_types, in _ctl_eventenable()
1116 mpt2sas_base_validate_event_type(ioc, ioc->event_type); in _ctl_eventenable()
1119 ioc->event_context = 0; in _ctl_eventenable()
1120 ioc->aen_event_read_flag = 0; in _ctl_eventenable()
1121 ioc->event_log = kcalloc(MPT2SAS_CTL_EVENT_LOG_SIZE, in _ctl_eventenable()
1123 if (!ioc->event_log) { in _ctl_eventenable()
1137 _ctl_eventreport(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventreport() argument
1149 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: enter\n", ioc->name, in _ctl_eventreport()
1160 if (!max || !ioc->event_log) in _ctl_eventreport()
1164 if (copy_to_user(uarg->event_data, ioc->event_log, number_bytes)) { in _ctl_eventreport()
1171 ioc->aen_event_read_flag = 0; in _ctl_eventreport()
1181 _ctl_do_reset(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_do_reset() argument
1192 if (ioc->shost_recovery || ioc->pci_error_recovery || in _ctl_do_reset()
1193 ioc->is_driver_loading) in _ctl_do_reset()
1195 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: enter\n", ioc->name, in _ctl_do_reset()
1198 retval = mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_do_reset()
1201 ioc->name, ((!retval) ? "SUCCESS" : "FAILED")); in _ctl_do_reset()
1211 _ctl_btdh_search_sas_device(struct MPT2SAS_ADAPTER *ioc, in _ctl_btdh_search_sas_device() argument
1218 if (list_empty(&ioc->sas_device_list)) in _ctl_btdh_search_sas_device()
1221 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _ctl_btdh_search_sas_device()
1222 list_for_each_entry(sas_device, &ioc->sas_device_list, list) { in _ctl_btdh_search_sas_device()
1237 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _ctl_btdh_search_sas_device()
1247 _ctl_btdh_search_raid_device(struct MPT2SAS_ADAPTER *ioc, in _ctl_btdh_search_raid_device() argument
1254 if (list_empty(&ioc->raid_device_list)) in _ctl_btdh_search_raid_device()
1257 spin_lock_irqsave(&ioc->raid_device_lock, flags); in _ctl_btdh_search_raid_device()
1258 list_for_each_entry(raid_device, &ioc->raid_device_list, list) { in _ctl_btdh_search_raid_device()
1273 spin_unlock_irqrestore(&ioc->raid_device_lock, flags); in _ctl_btdh_search_raid_device()
1283 _ctl_btdh_mapping(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_btdh_mapping() argument
1294 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_btdh_mapping()
1297 rc = _ctl_btdh_search_sas_device(ioc, &karg); in _ctl_btdh_mapping()
1299 _ctl_btdh_search_raid_device(ioc, &karg); in _ctl_btdh_mapping()
1317 _ctl_diag_capability(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type) in _ctl_diag_capability() argument
1323 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1328 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1333 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1348 _ctl_diag_register_2(struct MPT2SAS_ADAPTER *ioc, in _ctl_diag_register_2() argument
1363 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_diag_register_2()
1366 if (ioc->ctl_cmds.status != MPT2_CMD_NOT_USED) { in _ctl_diag_register_2()
1368 ioc->name, __func__); in _ctl_diag_register_2()
1374 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_register_2()
1376 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_register_2()
1380 if (ioc->diag_buffer_status[buffer_type] & in _ctl_diag_register_2()
1383 "buffer for buffer_type(0x%02x)\n", ioc->name, __func__, in _ctl_diag_register_2()
1390 "is not 4 byte aligned\n", ioc->name, __func__); in _ctl_diag_register_2()
1394 smid = mpt2sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_diag_register_2()
1397 ioc->name, __func__); in _ctl_diag_register_2()
1403 ioc->ctl_cmds.status = MPT2_CMD_PENDING; in _ctl_diag_register_2()
1404 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_diag_register_2()
1405 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _ctl_diag_register_2()
1406 ioc->ctl_cmds.smid = smid; in _ctl_diag_register_2()
1408 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_register_2()
1410 ioc->unique_id[buffer_type] = diag_register->unique_id; in _ctl_diag_register_2()
1411 ioc->diag_buffer_status[buffer_type] = 0; in _ctl_diag_register_2()
1412 memcpy(ioc->product_specific[buffer_type], in _ctl_diag_register_2()
1414 ioc->diagnostic_flags[buffer_type] = diag_register->diagnostic_flags; in _ctl_diag_register_2()
1417 request_data_dma = ioc->diag_buffer_dma[buffer_type]; in _ctl_diag_register_2()
1418 if (request_data_sz != ioc->diag_buffer_sz[buffer_type]) { in _ctl_diag_register_2()
1419 pci_free_consistent(ioc->pdev, in _ctl_diag_register_2()
1420 ioc->diag_buffer_sz[buffer_type], in _ctl_diag_register_2()
1427 ioc->diag_buffer_sz[buffer_type] = 0; in _ctl_diag_register_2()
1428 ioc->diag_buffer_dma[buffer_type] = 0; in _ctl_diag_register_2()
1430 ioc->pdev, request_data_sz, &request_data_dma); in _ctl_diag_register_2()
1434 ioc->name, __func__, request_data_sz); in _ctl_diag_register_2()
1435 mpt2sas_base_free_smid(ioc, smid); in _ctl_diag_register_2()
1438 ioc->diag_buffer[buffer_type] = request_data; in _ctl_diag_register_2()
1439 ioc->diag_buffer_sz[buffer_type] = request_data_sz; in _ctl_diag_register_2()
1440 ioc->diag_buffer_dma[buffer_type] = request_data_dma; in _ctl_diag_register_2()
1451 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: diag_buffer(0x%p), " in _ctl_diag_register_2()
1452 "dma(0x%llx), sz(%d)\n", ioc->name, __func__, request_data, in _ctl_diag_register_2()
1458 cpu_to_le32(ioc->product_specific[buffer_type][i]); in _ctl_diag_register_2()
1460 init_completion(&ioc->ctl_cmds.done); in _ctl_diag_register_2()
1461 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_diag_register_2()
1462 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_diag_register_2()
1465 if (!(ioc->ctl_cmds.status & MPT2_CMD_COMPLETE)) { in _ctl_diag_register_2()
1466 printk(MPT2SAS_ERR_FMT "%s: timeout\n", ioc->name, in _ctl_diag_register_2()
1470 if (!(ioc->ctl_cmds.status & MPT2_CMD_RESET)) in _ctl_diag_register_2()
1476 if ((ioc->ctl_cmds.status & MPT2_CMD_REPLY_VALID) == 0) { in _ctl_diag_register_2()
1478 ioc->name, __func__); in _ctl_diag_register_2()
1483 mpi_reply = ioc->ctl_cmds.reply; in _ctl_diag_register_2()
1487 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_register_2()
1489 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: success\n", in _ctl_diag_register_2()
1490 ioc->name, __func__)); in _ctl_diag_register_2()
1493 "log_info(0x%08x)\n", ioc->name, __func__, in _ctl_diag_register_2()
1500 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_register_2()
1506 pci_free_consistent(ioc->pdev, request_data_sz, in _ctl_diag_register_2()
1509 ioc->ctl_cmds.status = MPT2_CMD_NOT_USED; in _ctl_diag_register_2()
1522 mpt2sas_enable_diag_buffer(struct MPT2SAS_ADAPTER *ioc, u8 bits_to_register) in mpt2sas_enable_diag_buffer() argument
1530 ioc->name); in mpt2sas_enable_diag_buffer()
1535 _ctl_diag_register_2(ioc, &diag_register); in mpt2sas_enable_diag_buffer()
1540 ioc->name); in mpt2sas_enable_diag_buffer()
1545 _ctl_diag_register_2(ioc, &diag_register); in mpt2sas_enable_diag_buffer()
1550 ioc->name); in mpt2sas_enable_diag_buffer()
1555 _ctl_diag_register_2(ioc, &diag_register); in mpt2sas_enable_diag_buffer()
1568 _ctl_diag_register(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_register() argument
1579 rc = _ctl_diag_register_2(ioc, &karg); in _ctl_diag_register()
1592 _ctl_diag_unregister(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_unregister() argument
1606 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_diag_unregister()
1610 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_unregister()
1612 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1616 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_unregister()
1619 "registered\n", ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1622 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_unregister()
1625 "released\n", ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1629 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_unregister()
1631 "registered\n", ioc->name, __func__, karg.unique_id); in _ctl_diag_unregister()
1635 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_unregister()
1638 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1642 request_data_sz = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_unregister()
1643 request_data_dma = ioc->diag_buffer_dma[buffer_type]; in _ctl_diag_unregister()
1644 pci_free_consistent(ioc->pdev, request_data_sz, in _ctl_diag_unregister()
1646 ioc->diag_buffer[buffer_type] = NULL; in _ctl_diag_unregister()
1647 ioc->diag_buffer_status[buffer_type] = 0; in _ctl_diag_unregister()
1661 _ctl_diag_query(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_query() argument
1674 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_diag_query()
1680 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_query()
1682 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_query()
1686 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_query()
1689 "registered\n", ioc->name, __func__, buffer_type); in _ctl_diag_query()
1694 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_query()
1696 "registered\n", ioc->name, __func__, in _ctl_diag_query()
1702 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_query()
1705 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_query()
1709 if (ioc->diag_buffer_status[buffer_type] & MPT2_DIAG_BUFFER_IS_RELEASED) in _ctl_diag_query()
1719 ioc->product_specific[buffer_type][i]; in _ctl_diag_query()
1721 karg.total_buffer_size = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_query()
1723 karg.unique_id = ioc->unique_id[buffer_type]; in _ctl_diag_query()
1724 karg.diagnostic_flags = ioc->diagnostic_flags[buffer_type]; in _ctl_diag_query()
1728 "data @ %p\n", ioc->name, __func__, arg); in _ctl_diag_query()
1742 _ctl_send_release(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type, u8 *issue_reset) in _ctl_send_release() argument
1752 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_send_release()
1758 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _ctl_send_release()
1760 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in _ctl_send_release()
1761 "skipping due to FAULT state\n", ioc->name, in _ctl_send_release()
1767 if (ioc->ctl_cmds.status != MPT2_CMD_NOT_USED) { in _ctl_send_release()
1769 ioc->name, __func__); in _ctl_send_release()
1774 smid = mpt2sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_send_release()
1777 ioc->name, __func__); in _ctl_send_release()
1782 ioc->ctl_cmds.status = MPT2_CMD_PENDING; in _ctl_send_release()
1783 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_send_release()
1784 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _ctl_send_release()
1785 ioc->ctl_cmds.smid = smid; in _ctl_send_release()
1792 init_completion(&ioc->ctl_cmds.done); in _ctl_send_release()
1793 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_send_release()
1794 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_send_release()
1797 if (!(ioc->ctl_cmds.status & MPT2_CMD_COMPLETE)) { in _ctl_send_release()
1798 printk(MPT2SAS_ERR_FMT "%s: timeout\n", ioc->name, in _ctl_send_release()
1802 if (!(ioc->ctl_cmds.status & MPT2_CMD_RESET)) in _ctl_send_release()
1809 if ((ioc->ctl_cmds.status & MPT2_CMD_REPLY_VALID) == 0) { in _ctl_send_release()
1811 ioc->name, __func__); in _ctl_send_release()
1816 mpi_reply = ioc->ctl_cmds.reply; in _ctl_send_release()
1820 ioc->diag_buffer_status[buffer_type] |= in _ctl_send_release()
1822 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: success\n", in _ctl_send_release()
1823 ioc->name, __func__)); in _ctl_send_release()
1826 "log_info(0x%08x)\n", ioc->name, __func__, in _ctl_send_release()
1832 ioc->ctl_cmds.status = MPT2_CMD_NOT_USED; in _ctl_send_release()
1845 _ctl_diag_release(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_release() argument
1859 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_diag_release()
1863 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_release()
1865 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_release()
1869 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1872 "registered\n", ioc->name, __func__, buffer_type); in _ctl_diag_release()
1876 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_release()
1878 "registered\n", ioc->name, __func__, karg.unique_id); in _ctl_diag_release()
1882 if (ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1885 "is already released\n", ioc->name, __func__, in _ctl_diag_release()
1890 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_release()
1894 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_release()
1899 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1901 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_release()
1903 ioc->diag_buffer_status[buffer_type] &= in _ctl_diag_release()
1906 "was released due to host reset\n", ioc->name, __func__, in _ctl_diag_release()
1911 rc = _ctl_send_release(ioc, buffer_type, &issue_reset); in _ctl_diag_release()
1914 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_release()
1926 _ctl_diag_read_buffer(struct MPT2SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_read_buffer() argument
1946 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name, in _ctl_diag_read_buffer()
1950 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_read_buffer()
1952 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_read_buffer()
1956 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_read_buffer()
1958 "registered\n", ioc->name, __func__, karg.unique_id); in _ctl_diag_read_buffer()
1962 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_read_buffer()
1965 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type); in _ctl_diag_read_buffer()
1969 request_size = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_read_buffer()
1973 "or bytes_to_read are not 4 byte aligned\n", ioc->name, in _ctl_diag_read_buffer()
1982 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: diag_buffer(%p), " in _ctl_diag_read_buffer()
1983 "offset(%d), sz(%d)\n", ioc->name, __func__, in _ctl_diag_read_buffer()
1996 "mpt_diag_read_buffer_t data @ %p\n", ioc->name, in _ctl_diag_read_buffer()
2004 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: Reregister " in _ctl_diag_read_buffer()
2005 "buffer_type(0x%02x)\n", ioc->name, __func__, buffer_type)); in _ctl_diag_read_buffer()
2006 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_read_buffer()
2008 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: " in _ctl_diag_read_buffer()
2009 "buffer_type(0x%02x) is still registered\n", ioc->name, in _ctl_diag_read_buffer()
2016 if (ioc->ctl_cmds.status != MPT2_CMD_NOT_USED) { in _ctl_diag_read_buffer()
2018 ioc->name, __func__); in _ctl_diag_read_buffer()
2023 smid = mpt2sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_diag_read_buffer()
2026 ioc->name, __func__); in _ctl_diag_read_buffer()
2032 ioc->ctl_cmds.status = MPT2_CMD_PENDING; in _ctl_diag_read_buffer()
2033 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_diag_read_buffer()
2034 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _ctl_diag_read_buffer()
2035 ioc->ctl_cmds.smid = smid; in _ctl_diag_read_buffer()
2040 cpu_to_le32(ioc->diag_buffer_sz[buffer_type]); in _ctl_diag_read_buffer()
2042 cpu_to_le64(ioc->diag_buffer_dma[buffer_type]); in _ctl_diag_read_buffer()
2045 cpu_to_le32(ioc->product_specific[buffer_type][i]); in _ctl_diag_read_buffer()
2049 init_completion(&ioc->ctl_cmds.done); in _ctl_diag_read_buffer()
2050 mpt2sas_base_put_smid_default(ioc, smid); in _ctl_diag_read_buffer()
2051 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_diag_read_buffer()
2054 if (!(ioc->ctl_cmds.status & MPT2_CMD_COMPLETE)) { in _ctl_diag_read_buffer()
2055 printk(MPT2SAS_ERR_FMT "%s: timeout\n", ioc->name, in _ctl_diag_read_buffer()
2059 if (!(ioc->ctl_cmds.status & MPT2_CMD_RESET)) in _ctl_diag_read_buffer()
2065 if ((ioc->ctl_cmds.status & MPT2_CMD_REPLY_VALID) == 0) { in _ctl_diag_read_buffer()
2067 ioc->name, __func__); in _ctl_diag_read_buffer()
2072 mpi_reply = ioc->ctl_cmds.reply; in _ctl_diag_read_buffer()
2076 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_read_buffer()
2078 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT "%s: success\n", in _ctl_diag_read_buffer()
2079 ioc->name, __func__)); in _ctl_diag_read_buffer()
2082 "log_info(0x%08x)\n", ioc->name, __func__, in _ctl_diag_read_buffer()
2089 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_read_buffer()
2094 ioc->ctl_cmds.status = MPT2_CMD_NOT_USED; in _ctl_diag_read_buffer()
2109 _ctl_compat_mpt_command(struct MPT2SAS_ADAPTER *ioc, unsigned cmd, in _ctl_compat_mpt_command() argument
2141 return _ctl_do_mpt_command(ioc, karg, &uarg->mf); in _ctl_compat_mpt_command()
2156 struct MPT2SAS_ADAPTER *ioc; in _ctl_ioctl_main() local
2169 if (_ctl_verify_adapter(ioctl_header.ioc_number, &ioc) == -1 || !ioc) in _ctl_ioctl_main()
2171 if (ioc->shost_recovery || ioc->pci_error_recovery || in _ctl_ioctl_main()
2172 ioc->is_driver_loading) in _ctl_ioctl_main()
2177 if (!mutex_trylock(&ioc->ctl_cmds.mutex)) in _ctl_ioctl_main()
2179 } else if (mutex_lock_interruptible(&ioc->ctl_cmds.mutex)) { in _ctl_ioctl_main()
2186 ret = _ctl_getiocinfo(ioc, arg); in _ctl_ioctl_main()
2197 ret = _ctl_compat_mpt_command(ioc, cmd, arg); in _ctl_ioctl_main()
2210 ret = _ctl_do_mpt_command(ioc, karg, &uarg->mf); in _ctl_ioctl_main()
2216 ret = _ctl_eventquery(ioc, arg); in _ctl_ioctl_main()
2220 ret = _ctl_eventenable(ioc, arg); in _ctl_ioctl_main()
2223 ret = _ctl_eventreport(ioc, arg); in _ctl_ioctl_main()
2227 ret = _ctl_do_reset(ioc, arg); in _ctl_ioctl_main()
2231 ret = _ctl_btdh_mapping(ioc, arg); in _ctl_ioctl_main()
2235 ret = _ctl_diag_register(ioc, arg); in _ctl_ioctl_main()
2239 ret = _ctl_diag_unregister(ioc, arg); in _ctl_ioctl_main()
2243 ret = _ctl_diag_query(ioc, arg); in _ctl_ioctl_main()
2247 ret = _ctl_diag_release(ioc, arg); in _ctl_ioctl_main()
2251 ret = _ctl_diag_read_buffer(ioc, arg); in _ctl_ioctl_main()
2255 dctlprintk(ioc, printk(MPT2SAS_INFO_FMT in _ctl_ioctl_main()
2256 "unsupported ioctl opcode(0x%08x)\n", ioc->name, cmd)); in _ctl_ioctl_main()
2260 mutex_unlock(&ioc->ctl_cmds.mutex); in _ctl_ioctl_main()
2311 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_fw_show() local
2314 (ioc->facts.FWVersion.Word & 0xFF000000) >> 24, in _ctl_version_fw_show()
2315 (ioc->facts.FWVersion.Word & 0x00FF0000) >> 16, in _ctl_version_fw_show()
2316 (ioc->facts.FWVersion.Word & 0x0000FF00) >> 8, in _ctl_version_fw_show()
2317 ioc->facts.FWVersion.Word & 0x000000FF); in _ctl_version_fw_show()
2333 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_bios_show() local
2335 u32 version = le32_to_cpu(ioc->bios_pg3.BiosVersion); in _ctl_version_bios_show()
2357 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_mpi_show() local
2360 ioc->facts.MsgVersion, ioc->facts.HeaderVersion >> 8); in _ctl_version_mpi_show()
2376 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_product_show() local
2378 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.ChipName); in _ctl_version_product_show()
2395 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_nvdata_persistent_show() local
2398 le32_to_cpu(ioc->iounit_pg0.NvdataVersionPersistent.Word)); in _ctl_version_nvdata_persistent_show()
2415 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_nvdata_default_show() local
2418 le32_to_cpu(ioc->iounit_pg0.NvdataVersionDefault.Word)); in _ctl_version_nvdata_default_show()
2435 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_name_show() local
2437 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardName); in _ctl_board_name_show()
2453 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_assembly_show() local
2455 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardAssembly); in _ctl_board_assembly_show()
2472 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_tracer_show() local
2474 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardTracerNumber); in _ctl_board_tracer_show()
2494 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_io_delay_show() local
2496 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->io_missing_delay); in _ctl_io_delay_show()
2516 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_device_delay_show() local
2518 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->device_missing_delay); in _ctl_device_delay_show()
2537 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fw_queue_depth_show() local
2539 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->facts.RequestCredit); in _ctl_fw_queue_depth_show()
2558 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_sas_address_show() local
2561 (unsigned long long)ioc->sas_hba.sas_address); in _ctl_host_sas_address_show()
2578 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_logging_level_show() local
2580 return snprintf(buf, PAGE_SIZE, "%08xh\n", ioc->logging_level); in _ctl_logging_level_show()
2587 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_logging_level_store() local
2593 ioc->logging_level = val; in _ctl_logging_level_store()
2594 printk(MPT2SAS_INFO_FMT "logging_level=%08xh\n", ioc->name, in _ctl_logging_level_store()
2595 ioc->logging_level); in _ctl_logging_level_store()
2615 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fwfault_debug_show() local
2617 return snprintf(buf, PAGE_SIZE, "%d\n", ioc->fwfault_debug); in _ctl_fwfault_debug_show()
2624 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fwfault_debug_store() local
2630 ioc->fwfault_debug = val; in _ctl_fwfault_debug_store()
2631 printk(MPT2SAS_INFO_FMT "fwfault_debug=%d\n", ioc->name, in _ctl_fwfault_debug_store()
2632 ioc->fwfault_debug); in _ctl_fwfault_debug_store()
2653 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_ioc_reset_count_show() local
2655 return snprintf(buf, PAGE_SIZE, "%08d\n", ioc->ioc_reset_count); in _ctl_ioc_reset_count_show()
2675 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_ioc_reply_queue_count_show() local
2677 if ((ioc->facts.IOCCapabilities & in _ctl_ioc_reply_queue_count_show()
2678 MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX) && ioc->msix_enable) in _ctl_ioc_reply_queue_count_show()
2679 reply_queue_count = ioc->reply_queue_count; in _ctl_ioc_reply_queue_count_show()
2701 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_BRM_status_show() local
2709 if (!ioc->is_warpdrive) { in _ctl_BRM_status_show()
2711 "warpdrive\n", ioc->name, __func__); in _ctl_BRM_status_show()
2720 "for iounit_pg3: (%d) bytes\n", ioc->name, __func__, sz); in _ctl_BRM_status_show()
2724 if (mpt2sas_config_get_iounit_pg3(ioc, &mpi_reply, io_unit_pg3, sz) != in _ctl_BRM_status_show()
2727 "%s: failed reading iounit_pg3\n", ioc->name, in _ctl_BRM_status_show()
2735 "ioc_status(0x%04x)\n", ioc->name, __func__, ioc_status); in _ctl_BRM_status_show()
2741 "25 entries, detected (%d) entries\n", ioc->name, __func__, in _ctl_BRM_status_show()
2777 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_size_show() local
2781 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) { in _ctl_host_trace_buffer_size_show()
2783 "registered\n", ioc->name, __func__); in _ctl_host_trace_buffer_size_show()
2787 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_size_show()
2790 "registered\n", ioc->name, __func__); in _ctl_host_trace_buffer_size_show()
2795 ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]; in _ctl_host_trace_buffer_size_show()
2801 ioc->ring_buffer_sz = size; in _ctl_host_trace_buffer_size_show()
2823 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_show() local
2827 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) { in _ctl_host_trace_buffer_show()
2829 "registered\n", ioc->name, __func__); in _ctl_host_trace_buffer_show()
2833 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_show()
2836 "registered\n", ioc->name, __func__); in _ctl_host_trace_buffer_show()
2840 if (ioc->ring_buffer_offset > ioc->ring_buffer_sz) in _ctl_host_trace_buffer_show()
2843 size = ioc->ring_buffer_sz - ioc->ring_buffer_offset; in _ctl_host_trace_buffer_show()
2845 request_data = ioc->diag_buffer[0] + ioc->ring_buffer_offset; in _ctl_host_trace_buffer_show()
2855 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_store() local
2861 ioc->ring_buffer_offset = val; in _ctl_host_trace_buffer_store()
2883 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_enable_show() local
2885 if ((!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) || in _ctl_host_trace_buffer_enable_show()
2886 ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_show()
2889 else if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_show()
2901 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_enable_store() local
2911 if ((ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) && in _ctl_host_trace_buffer_enable_store()
2912 (ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2914 ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2919 ioc->name); in _ctl_host_trace_buffer_enable_store()
2923 ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] = 0; in _ctl_host_trace_buffer_enable_store()
2924 _ctl_diag_register_2(ioc, &diag_register); in _ctl_host_trace_buffer_enable_store()
2927 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) in _ctl_host_trace_buffer_enable_store()
2929 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2932 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2936 ioc->name); in _ctl_host_trace_buffer_enable_store()
2937 _ctl_send_release(ioc, MPI2_DIAG_BUF_TYPE_TRACE, &issue_reset); in _ctl_host_trace_buffer_enable_store()
3058 struct MPT2SAS_ADAPTER *ioc; in mpt2sas_ctl_exit() local
3061 list_for_each_entry(ioc, &mpt2sas_ioc_list, list) { in mpt2sas_ctl_exit()
3065 if (!ioc->diag_buffer[i]) in mpt2sas_ctl_exit()
3067 pci_free_consistent(ioc->pdev, ioc->diag_buffer_sz[i], in mpt2sas_ctl_exit()
3068 ioc->diag_buffer[i], ioc->diag_buffer_dma[i]); in mpt2sas_ctl_exit()
3069 ioc->diag_buffer[i] = NULL; in mpt2sas_ctl_exit()
3070 ioc->diag_buffer_status[i] = 0; in mpt2sas_ctl_exit()
3073 kfree(ioc->event_log); in mpt2sas_ctl_exit()