Lines Matching refs:ioc

92 _ctl_sas_device_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle)  in _ctl_sas_device_find_by_handle()  argument
97 list_for_each_entry(sas_device, &ioc->sas_device_list, list) { in _ctl_sas_device_find_by_handle()
120 _ctl_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid, in _ctl_display_some_debug() argument
126 if (!(ioc->logging_level & MPT_DEBUG_IOCTL)) in _ctl_display_some_debug()
129 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_display_some_debug()
136 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
140 desc = ioc->tmp_string; in _ctl_display_some_debug()
157 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
162 desc = ioc->tmp_string; in _ctl_display_some_debug()
188 snprintf(ioc->tmp_string, MPT_STRING_LENGTH, in _ctl_display_some_debug()
192 desc = ioc->tmp_string; in _ctl_display_some_debug()
216 ioc->name, calling_function_name, desc, smid); in _ctl_display_some_debug()
224 ioc->name, le16_to_cpu(mpi_reply->IOCStatus), in _ctl_display_some_debug()
235 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _ctl_display_some_debug()
236 sas_device = _ctl_sas_device_find_by_handle(ioc, in _ctl_display_some_debug()
240 ioc->name, (unsigned long long) in _ctl_display_some_debug()
244 ioc->name, (unsigned long long) in _ctl_display_some_debug()
247 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _ctl_display_some_debug()
251 "(0x%02x)\n", ioc->name, in _ctl_display_some_debug()
273 mpt3sas_ctl_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt3sas_ctl_done() argument
281 if (ioc->ctl_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_ctl_done()
283 if (ioc->ctl_cmds.smid != smid) in mpt3sas_ctl_done()
285 ioc->ctl_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_ctl_done()
286 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_ctl_done()
288 memcpy(ioc->ctl_cmds.reply, mpi_reply, mpi_reply->MsgLength*4); in mpt3sas_ctl_done()
289 ioc->ctl_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_ctl_done()
299 sense_data = mpt3sas_base_get_sense_buffer(ioc, in mpt3sas_ctl_done()
301 memcpy(ioc->ctl_cmds.sense, sense_data, sz); in mpt3sas_ctl_done()
306 _ctl_display_some_debug(ioc, smid, "ctl_done", mpi_reply); in mpt3sas_ctl_done()
308 ioc->ctl_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_ctl_done()
309 complete(&ioc->ctl_cmds.done); in mpt3sas_ctl_done()
324 _ctl_check_event_type(struct MPT3SAS_ADAPTER *ioc, u16 event) in _ctl_check_event_type() argument
329 if (event >= 128 || !event || !ioc->event_log) in _ctl_check_event_type()
336 return desired_event & ioc->event_type[i]; in _ctl_check_event_type()
347 mpt3sas_ctl_add_to_event_log(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_ctl_add_to_event_log() argument
356 if (!ioc->event_log) in mpt3sas_ctl_add_to_event_log()
361 if (_ctl_check_event_type(ioc, event)) { in mpt3sas_ctl_add_to_event_log()
364 i = ioc->event_context % MPT3SAS_CTL_EVENT_LOG_SIZE; in mpt3sas_ctl_add_to_event_log()
365 event_log = ioc->event_log; in mpt3sas_ctl_add_to_event_log()
367 event_log[i].context = ioc->event_context++; in mpt3sas_ctl_add_to_event_log()
381 (send_aen && !ioc->aen_event_read_flag)) { in mpt3sas_ctl_add_to_event_log()
382 ioc->aen_event_read_flag = 1; in mpt3sas_ctl_add_to_event_log()
403 mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index, in mpt3sas_ctl_event_callback() argument
408 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_ctl_event_callback()
409 mpt3sas_ctl_add_to_event_log(ioc, mpi_reply); in mpt3sas_ctl_event_callback()
423 struct MPT3SAS_ADAPTER *ioc; in _ctl_verify_adapter() local
425 list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { in _ctl_verify_adapter()
426 if (ioc->id != ioc_number) in _ctl_verify_adapter()
428 *iocpp = ioc; in _ctl_verify_adapter()
446 mpt3sas_ctl_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase) in mpt3sas_ctl_reset_handler() argument
453 dtmprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_ctl_reset_handler()
454 "%s: MPT3_IOC_PRE_RESET\n", ioc->name, __func__)); in mpt3sas_ctl_reset_handler()
456 if (!(ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
459 if ((ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
462 mpt3sas_send_diag_release(ioc, i, &issue_reset); in mpt3sas_ctl_reset_handler()
466 dtmprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_ctl_reset_handler()
467 "%s: MPT3_IOC_AFTER_RESET\n", ioc->name, __func__)); in mpt3sas_ctl_reset_handler()
468 if (ioc->ctl_cmds.status & MPT3_CMD_PENDING) { in mpt3sas_ctl_reset_handler()
469 ioc->ctl_cmds.status |= MPT3_CMD_RESET; in mpt3sas_ctl_reset_handler()
470 mpt3sas_base_free_smid(ioc, ioc->ctl_cmds.smid); in mpt3sas_ctl_reset_handler()
471 complete(&ioc->ctl_cmds.done); in mpt3sas_ctl_reset_handler()
475 dtmprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_ctl_reset_handler()
476 "%s: MPT3_IOC_DONE_RESET\n", ioc->name, __func__)); in mpt3sas_ctl_reset_handler()
479 if (!(ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
482 if ((ioc->diag_buffer_status[i] & in mpt3sas_ctl_reset_handler()
485 ioc->diag_buffer_status[i] |= in mpt3sas_ctl_reset_handler()
515 struct MPT3SAS_ADAPTER *ioc; in _ctl_poll() local
519 list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { in _ctl_poll()
520 if (ioc->aen_event_read_flag) in _ctl_poll()
536 _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg, in _ctl_set_task_mid() argument
560 spin_lock_irqsave(&ioc->scsi_lookup_lock, flags); in _ctl_set_task_mid()
561 for (i = ioc->scsiio_depth; i && !found; i--) { in _ctl_set_task_mid()
562 scmd = ioc->scsi_lookup[i - 1].scmd; in _ctl_set_task_mid()
573 tm_request->TaskMID = cpu_to_le16(ioc->scsi_lookup[i - 1].smid); in _ctl_set_task_mid()
576 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags); in _ctl_set_task_mid()
579 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_set_task_mid()
581 ioc->name, in _ctl_set_task_mid()
583 tm_reply = ioc->ctl_cmds.reply; in _ctl_set_task_mid()
590 sz = min_t(u32, karg->max_reply_bytes, ioc->reply_sz); in _ctl_set_task_mid()
591 if (copy_to_user(karg->reply_frame_buf_ptr, ioc->ctl_cmds.reply, in _ctl_set_task_mid()
598 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_set_task_mid()
599 "%s: handle(0x%04x), lun(%d), task_mid(%d)\n", ioc->name, in _ctl_set_task_mid()
612 _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg, in _ctl_do_mpt_command() argument
635 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in _ctl_do_mpt_command()
637 ioc->name, __func__); in _ctl_do_mpt_command()
643 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _ctl_do_mpt_command()
648 ioc->name, __func__); in _ctl_do_mpt_command()
653 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _ctl_do_mpt_command()
656 ioc->name, in _ctl_do_mpt_command()
661 ioc->name, __func__); in _ctl_do_mpt_command()
663 mpi_request = kzalloc(ioc->request_sz, GFP_KERNEL); in _ctl_do_mpt_command()
667 ioc->name, __func__); in _ctl_do_mpt_command()
673 if (karg.data_sge_offset * 4 > ioc->request_sz || in _ctl_do_mpt_command()
688 smid = mpt3sas_base_get_smid_hpr(ioc, ioc->ctl_cb_idx); in _ctl_do_mpt_command()
691 ioc->name, __func__); in _ctl_do_mpt_command()
697 smid = mpt3sas_base_get_smid_scsiio(ioc, ioc->ctl_cb_idx, NULL); in _ctl_do_mpt_command()
700 ioc->name, __func__); in _ctl_do_mpt_command()
707 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in _ctl_do_mpt_command()
708 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_do_mpt_command()
709 request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_do_mpt_command()
711 ioc->ctl_cmds.smid = smid; in _ctl_do_mpt_command()
719 ioc->facts.MaxDevHandle) { in _ctl_do_mpt_command()
721 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
728 data_out = pci_alloc_consistent(ioc->pdev, data_out_sz, in _ctl_do_mpt_command()
734 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
742 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
748 data_in = pci_alloc_consistent(ioc->pdev, data_in_sz, in _ctl_do_mpt_command()
754 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
763 _ctl_display_some_debug(ioc, smid, "ctl_request", NULL); in _ctl_do_mpt_command()
766 init_completion(&ioc->ctl_cmds.done); in _ctl_do_mpt_command()
775 mpt3sas_base_get_sense_buffer_dma(ioc, smid); in _ctl_do_mpt_command()
776 memset(ioc->ctl_cmds.sense, 0, SCSI_SENSE_BUFFERSIZE); in _ctl_do_mpt_command()
777 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
781 mpt3sas_base_put_smid_scsi_io(ioc, smid, in _ctl_do_mpt_command()
784 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
792 dtmprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_do_mpt_command()
794 ioc->name, in _ctl_do_mpt_command()
801 if (_ctl_set_task_mid(ioc, &karg, tm_request)) { in _ctl_do_mpt_command()
802 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
807 mpt3sas_scsih_set_tm_flag(ioc, le16_to_cpu( in _ctl_do_mpt_command()
809 ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
811 mpt3sas_base_put_smid_hi_priority(ioc, smid); in _ctl_do_mpt_command()
829 mpt3sas_base_free_smid(ioc, smid); in _ctl_do_mpt_command()
837 ioc->ioc_link_reset_in_progress = 1; in _ctl_do_mpt_command()
838 ioc->ignore_loginfos = 1; in _ctl_do_mpt_command()
840 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _ctl_do_mpt_command()
842 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
849 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _ctl_do_mpt_command()
851 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
860 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
863 ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
866 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
877 ioc->ioc_link_reset_in_progress = 1; in _ctl_do_mpt_command()
878 ioc->ignore_loginfos = 1; in _ctl_do_mpt_command()
883 ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz, in _ctl_do_mpt_command()
885 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_do_mpt_command()
893 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_do_mpt_command()
898 mpt3sas_scsih_clear_tm_flag(ioc, le16_to_cpu( in _ctl_do_mpt_command()
900 mpt3sas_trigger_master(ioc, MASTER_TRIGGER_TASK_MANAGMENT); in _ctl_do_mpt_command()
903 ioc->ioc_link_reset_in_progress) { in _ctl_do_mpt_command()
904 ioc->ioc_link_reset_in_progress = 0; in _ctl_do_mpt_command()
905 ioc->ignore_loginfos = 0; in _ctl_do_mpt_command()
907 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in _ctl_do_mpt_command()
908 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in _ctl_do_mpt_command()
911 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in _ctl_do_mpt_command()
916 mpi_reply = ioc->ctl_cmds.reply; in _ctl_do_mpt_command()
921 (ioc->logging_level & MPT_DEBUG_TM)) { in _ctl_do_mpt_command()
927 "TerminationCount(0x%08x)\n", ioc->name, in _ctl_do_mpt_command()
946 sz = min_t(u32, karg.max_reply_bytes, ioc->reply_sz); in _ctl_do_mpt_command()
947 if (copy_to_user(karg.reply_frame_buf_ptr, ioc->ctl_cmds.reply, in _ctl_do_mpt_command()
961 if (copy_to_user(karg.sense_data_ptr, ioc->ctl_cmds.sense, in _ctl_do_mpt_command()
978 ioc->name, in _ctl_do_mpt_command()
980 mpt3sas_halt_firmware(ioc); in _ctl_do_mpt_command()
981 mpt3sas_scsih_issue_tm(ioc, in _ctl_do_mpt_command()
986 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_do_mpt_command()
994 pci_free_consistent(ioc->pdev, data_in_sz, data_in, in _ctl_do_mpt_command()
998 pci_free_consistent(ioc->pdev, data_out_sz, data_out, in _ctl_do_mpt_command()
1002 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in _ctl_do_mpt_command()
1012 _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_getiocinfo() argument
1022 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_getiocinfo()
1027 if (ioc->pfacts) in _ctl_getiocinfo()
1028 karg.port_number = ioc->pfacts[0].PortNumber; in _ctl_getiocinfo()
1029 karg.hw_rev = ioc->pdev->revision; in _ctl_getiocinfo()
1030 karg.pci_id = ioc->pdev->device; in _ctl_getiocinfo()
1031 karg.subsystem_device = ioc->pdev->subsystem_device; in _ctl_getiocinfo()
1032 karg.subsystem_vendor = ioc->pdev->subsystem_vendor; in _ctl_getiocinfo()
1033 karg.pci_information.u.bits.bus = ioc->pdev->bus->number; in _ctl_getiocinfo()
1034 karg.pci_information.u.bits.device = PCI_SLOT(ioc->pdev->devfn); in _ctl_getiocinfo()
1035 karg.pci_information.u.bits.function = PCI_FUNC(ioc->pdev->devfn); in _ctl_getiocinfo()
1036 karg.pci_information.segment_id = pci_domain_nr(ioc->pdev->bus); in _ctl_getiocinfo()
1037 karg.firmware_version = ioc->facts.FWVersion.Word; in _ctl_getiocinfo()
1041 karg.bios_version = le32_to_cpu(ioc->bios_pg3.BiosVersion); in _ctl_getiocinfo()
1057 _ctl_eventquery(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventquery() argument
1067 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_eventquery()
1071 memcpy(karg.event_types, ioc->event_type, in _ctl_eventquery()
1088 _ctl_eventenable(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventenable() argument
1098 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_eventenable()
1101 memcpy(ioc->event_type, karg.event_types, in _ctl_eventenable()
1103 mpt3sas_base_validate_event_type(ioc, ioc->event_type); in _ctl_eventenable()
1105 if (ioc->event_log) in _ctl_eventenable()
1108 ioc->event_context = 0; in _ctl_eventenable()
1109 ioc->aen_event_read_flag = 0; in _ctl_eventenable()
1110 ioc->event_log = kcalloc(MPT3SAS_CTL_EVENT_LOG_SIZE, in _ctl_eventenable()
1112 if (!ioc->event_log) { in _ctl_eventenable()
1126 _ctl_eventreport(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_eventreport() argument
1138 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_eventreport()
1149 if (!max || !ioc->event_log) in _ctl_eventreport()
1153 if (copy_to_user(uarg->event_data, ioc->event_log, number_bytes)) { in _ctl_eventreport()
1160 ioc->aen_event_read_flag = 0; in _ctl_eventreport()
1170 _ctl_do_reset(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_do_reset() argument
1181 if (ioc->shost_recovery || ioc->pci_error_recovery || in _ctl_do_reset()
1182 ioc->is_driver_loading) in _ctl_do_reset()
1185 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", ioc->name, in _ctl_do_reset()
1188 retval = mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_do_reset()
1191 ioc->name, ((!retval) ? "SUCCESS" : "FAILED")); in _ctl_do_reset()
1201 _ctl_btdh_search_sas_device(struct MPT3SAS_ADAPTER *ioc, in _ctl_btdh_search_sas_device() argument
1208 if (list_empty(&ioc->sas_device_list)) in _ctl_btdh_search_sas_device()
1211 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _ctl_btdh_search_sas_device()
1212 list_for_each_entry(sas_device, &ioc->sas_device_list, list) { in _ctl_btdh_search_sas_device()
1227 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _ctl_btdh_search_sas_device()
1237 _ctl_btdh_search_raid_device(struct MPT3SAS_ADAPTER *ioc, in _ctl_btdh_search_raid_device() argument
1244 if (list_empty(&ioc->raid_device_list)) in _ctl_btdh_search_raid_device()
1247 spin_lock_irqsave(&ioc->raid_device_lock, flags); in _ctl_btdh_search_raid_device()
1248 list_for_each_entry(raid_device, &ioc->raid_device_list, list) { in _ctl_btdh_search_raid_device()
1263 spin_unlock_irqrestore(&ioc->raid_device_lock, flags); in _ctl_btdh_search_raid_device()
1273 _ctl_btdh_mapping(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_btdh_mapping() argument
1284 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_btdh_mapping()
1287 rc = _ctl_btdh_search_sas_device(ioc, &karg); in _ctl_btdh_mapping()
1289 _ctl_btdh_search_raid_device(ioc, &karg); in _ctl_btdh_mapping()
1307 _ctl_diag_capability(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type) in _ctl_diag_capability() argument
1313 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1318 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1323 if (ioc->facts.IOCCapabilities & in _ctl_diag_capability()
1339 _ctl_diag_register_2(struct MPT3SAS_ADAPTER *ioc, in _ctl_diag_register_2() argument
1355 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_register_2()
1358 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _ctl_diag_register_2()
1362 ioc->name, __func__); in _ctl_diag_register_2()
1367 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in _ctl_diag_register_2()
1369 ioc->name, __func__); in _ctl_diag_register_2()
1375 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_register_2()
1378 ioc->name, __func__, buffer_type); in _ctl_diag_register_2()
1382 if (ioc->diag_buffer_status[buffer_type] & in _ctl_diag_register_2()
1386 ioc->name, __func__, in _ctl_diag_register_2()
1394 ioc->name, __func__); in _ctl_diag_register_2()
1398 smid = mpt3sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_diag_register_2()
1401 ioc->name, __func__); in _ctl_diag_register_2()
1407 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in _ctl_diag_register_2()
1408 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_diag_register_2()
1409 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_diag_register_2()
1410 ioc->ctl_cmds.smid = smid; in _ctl_diag_register_2()
1412 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_register_2()
1414 ioc->unique_id[buffer_type] = diag_register->unique_id; in _ctl_diag_register_2()
1415 ioc->diag_buffer_status[buffer_type] = 0; in _ctl_diag_register_2()
1416 memcpy(ioc->product_specific[buffer_type], in _ctl_diag_register_2()
1418 ioc->diagnostic_flags[buffer_type] = diag_register->diagnostic_flags; in _ctl_diag_register_2()
1421 request_data_dma = ioc->diag_buffer_dma[buffer_type]; in _ctl_diag_register_2()
1422 if (request_data_sz != ioc->diag_buffer_sz[buffer_type]) { in _ctl_diag_register_2()
1423 pci_free_consistent(ioc->pdev, in _ctl_diag_register_2()
1424 ioc->diag_buffer_sz[buffer_type], in _ctl_diag_register_2()
1431 ioc->diag_buffer_sz[buffer_type] = 0; in _ctl_diag_register_2()
1432 ioc->diag_buffer_dma[buffer_type] = 0; in _ctl_diag_register_2()
1434 ioc->pdev, request_data_sz, &request_data_dma); in _ctl_diag_register_2()
1438 ioc->name, __func__, request_data_sz); in _ctl_diag_register_2()
1439 mpt3sas_base_free_smid(ioc, smid); in _ctl_diag_register_2()
1442 ioc->diag_buffer[buffer_type] = request_data; in _ctl_diag_register_2()
1443 ioc->diag_buffer_sz[buffer_type] = request_data_sz; in _ctl_diag_register_2()
1444 ioc->diag_buffer_dma[buffer_type] = request_data_dma; in _ctl_diag_register_2()
1455 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_register_2()
1457 ioc->name, __func__, request_data, in _ctl_diag_register_2()
1463 cpu_to_le32(ioc->product_specific[buffer_type][i]); in _ctl_diag_register_2()
1465 init_completion(&ioc->ctl_cmds.done); in _ctl_diag_register_2()
1466 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_diag_register_2()
1467 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_diag_register_2()
1470 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in _ctl_diag_register_2()
1471 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in _ctl_diag_register_2()
1475 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in _ctl_diag_register_2()
1481 if ((ioc->ctl_cmds.status & MPT3_CMD_REPLY_VALID) == 0) { in _ctl_diag_register_2()
1483 ioc->name, __func__); in _ctl_diag_register_2()
1488 mpi_reply = ioc->ctl_cmds.reply; in _ctl_diag_register_2()
1492 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_register_2()
1494 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: success\n", in _ctl_diag_register_2()
1495 ioc->name, __func__)); in _ctl_diag_register_2()
1499 ioc->name, __func__, in _ctl_diag_register_2()
1506 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_register_2()
1512 pci_free_consistent(ioc->pdev, request_data_sz, in _ctl_diag_register_2()
1515 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in _ctl_diag_register_2()
1528 mpt3sas_enable_diag_buffer(struct MPT3SAS_ADAPTER *ioc, u8 bits_to_register) in mpt3sas_enable_diag_buffer() argument
1536 ioc->name); in mpt3sas_enable_diag_buffer()
1537 ioc->diag_trigger_master.MasterData = in mpt3sas_enable_diag_buffer()
1543 _ctl_diag_register_2(ioc, &diag_register); in mpt3sas_enable_diag_buffer()
1548 ioc->name); in mpt3sas_enable_diag_buffer()
1553 _ctl_diag_register_2(ioc, &diag_register); in mpt3sas_enable_diag_buffer()
1558 ioc->name); in mpt3sas_enable_diag_buffer()
1563 _ctl_diag_register_2(ioc, &diag_register); in mpt3sas_enable_diag_buffer()
1576 _ctl_diag_register(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_register() argument
1587 rc = _ctl_diag_register_2(ioc, &karg); in _ctl_diag_register()
1600 _ctl_diag_unregister(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_unregister() argument
1614 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_unregister()
1618 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_unregister()
1621 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1625 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_unregister()
1629 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1632 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_unregister()
1636 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1640 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_unregister()
1643 ioc->name, __func__, karg.unique_id); in _ctl_diag_unregister()
1647 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_unregister()
1651 ioc->name, __func__, buffer_type); in _ctl_diag_unregister()
1655 request_data_sz = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_unregister()
1656 request_data_dma = ioc->diag_buffer_dma[buffer_type]; in _ctl_diag_unregister()
1657 pci_free_consistent(ioc->pdev, request_data_sz, in _ctl_diag_unregister()
1659 ioc->diag_buffer[buffer_type] = NULL; in _ctl_diag_unregister()
1660 ioc->diag_buffer_status[buffer_type] = 0; in _ctl_diag_unregister()
1674 _ctl_diag_query(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_query() argument
1687 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_query()
1693 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_query()
1696 ioc->name, __func__, buffer_type); in _ctl_diag_query()
1700 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_query()
1704 ioc->name, __func__, buffer_type); in _ctl_diag_query()
1709 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_query()
1712 ioc->name, __func__, karg.unique_id); in _ctl_diag_query()
1717 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_query()
1721 ioc->name, __func__, buffer_type); in _ctl_diag_query()
1725 if (ioc->diag_buffer_status[buffer_type] & MPT3_DIAG_BUFFER_IS_RELEASED) in _ctl_diag_query()
1735 ioc->product_specific[buffer_type][i]; in _ctl_diag_query()
1737 karg.total_buffer_size = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_query()
1739 karg.unique_id = ioc->unique_id[buffer_type]; in _ctl_diag_query()
1740 karg.diagnostic_flags = ioc->diagnostic_flags[buffer_type]; in _ctl_diag_query()
1745 ioc->name, __func__, arg); in _ctl_diag_query()
1759 mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type, in mpt3sas_send_diag_release() argument
1770 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in mpt3sas_send_diag_release()
1776 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in mpt3sas_send_diag_release()
1778 if (ioc->diag_buffer_status[buffer_type] & in mpt3sas_send_diag_release()
1780 ioc->diag_buffer_status[buffer_type] |= in mpt3sas_send_diag_release()
1782 dctlprintk(ioc, pr_info(MPT3SAS_FMT in mpt3sas_send_diag_release()
1783 "%s: skipping due to FAULT state\n", ioc->name, in mpt3sas_send_diag_release()
1789 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in mpt3sas_send_diag_release()
1791 ioc->name, __func__); in mpt3sas_send_diag_release()
1796 smid = mpt3sas_base_get_smid(ioc, ioc->ctl_cb_idx); in mpt3sas_send_diag_release()
1799 ioc->name, __func__); in mpt3sas_send_diag_release()
1804 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in mpt3sas_send_diag_release()
1805 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in mpt3sas_send_diag_release()
1806 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in mpt3sas_send_diag_release()
1807 ioc->ctl_cmds.smid = smid; in mpt3sas_send_diag_release()
1814 init_completion(&ioc->ctl_cmds.done); in mpt3sas_send_diag_release()
1815 mpt3sas_base_put_smid_default(ioc, smid); in mpt3sas_send_diag_release()
1816 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in mpt3sas_send_diag_release()
1819 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in mpt3sas_send_diag_release()
1820 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in mpt3sas_send_diag_release()
1824 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in mpt3sas_send_diag_release()
1831 if ((ioc->ctl_cmds.status & MPT3_CMD_REPLY_VALID) == 0) { in mpt3sas_send_diag_release()
1833 ioc->name, __func__); in mpt3sas_send_diag_release()
1838 mpi_reply = ioc->ctl_cmds.reply; in mpt3sas_send_diag_release()
1842 ioc->diag_buffer_status[buffer_type] |= in mpt3sas_send_diag_release()
1844 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: success\n", in mpt3sas_send_diag_release()
1845 ioc->name, __func__)); in mpt3sas_send_diag_release()
1849 ioc->name, __func__, in mpt3sas_send_diag_release()
1855 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in mpt3sas_send_diag_release()
1868 _ctl_diag_release(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_release() argument
1882 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_release()
1886 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_release()
1889 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1893 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1897 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1901 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_release()
1904 ioc->name, __func__, karg.unique_id); in _ctl_diag_release()
1908 if (ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1912 ioc->name, __func__, in _ctl_diag_release()
1917 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_release()
1922 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1927 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_release()
1929 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_release()
1931 ioc->diag_buffer_status[buffer_type] &= in _ctl_diag_release()
1935 ioc->name, __func__, buffer_type); in _ctl_diag_release()
1939 rc = mpt3sas_send_diag_release(ioc, buffer_type, &issue_reset); in _ctl_diag_release()
1942 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_release()
1954 _ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg) in _ctl_diag_read_buffer() argument
1974 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name, in _ctl_diag_read_buffer()
1978 if (!_ctl_diag_capability(ioc, buffer_type)) { in _ctl_diag_read_buffer()
1981 ioc->name, __func__, buffer_type); in _ctl_diag_read_buffer()
1985 if (karg.unique_id != ioc->unique_id[buffer_type]) { in _ctl_diag_read_buffer()
1988 ioc->name, __func__, karg.unique_id); in _ctl_diag_read_buffer()
1992 request_data = ioc->diag_buffer[buffer_type]; in _ctl_diag_read_buffer()
1996 ioc->name, __func__, buffer_type); in _ctl_diag_read_buffer()
2000 request_size = ioc->diag_buffer_sz[buffer_type]; in _ctl_diag_read_buffer()
2004 "or bytes_to_read are not 4 byte aligned\n", ioc->name, in _ctl_diag_read_buffer()
2013 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_read_buffer()
2015 ioc->name, __func__, in _ctl_diag_read_buffer()
2029 ioc->name, __func__, diag_data); in _ctl_diag_read_buffer()
2036 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_read_buffer()
2038 ioc->name, __func__, buffer_type)); in _ctl_diag_read_buffer()
2039 if ((ioc->diag_buffer_status[buffer_type] & in _ctl_diag_read_buffer()
2041 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_diag_read_buffer()
2043 ioc->name, __func__, buffer_type)); in _ctl_diag_read_buffer()
2049 if (ioc->ctl_cmds.status != MPT3_CMD_NOT_USED) { in _ctl_diag_read_buffer()
2051 ioc->name, __func__); in _ctl_diag_read_buffer()
2056 smid = mpt3sas_base_get_smid(ioc, ioc->ctl_cb_idx); in _ctl_diag_read_buffer()
2059 ioc->name, __func__); in _ctl_diag_read_buffer()
2065 ioc->ctl_cmds.status = MPT3_CMD_PENDING; in _ctl_diag_read_buffer()
2066 memset(ioc->ctl_cmds.reply, 0, ioc->reply_sz); in _ctl_diag_read_buffer()
2067 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _ctl_diag_read_buffer()
2068 ioc->ctl_cmds.smid = smid; in _ctl_diag_read_buffer()
2073 cpu_to_le32(ioc->diag_buffer_sz[buffer_type]); in _ctl_diag_read_buffer()
2075 cpu_to_le64(ioc->diag_buffer_dma[buffer_type]); in _ctl_diag_read_buffer()
2078 cpu_to_le32(ioc->product_specific[buffer_type][i]); in _ctl_diag_read_buffer()
2082 init_completion(&ioc->ctl_cmds.done); in _ctl_diag_read_buffer()
2083 mpt3sas_base_put_smid_default(ioc, smid); in _ctl_diag_read_buffer()
2084 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, in _ctl_diag_read_buffer()
2087 if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) { in _ctl_diag_read_buffer()
2088 pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name, in _ctl_diag_read_buffer()
2092 if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET)) in _ctl_diag_read_buffer()
2098 if ((ioc->ctl_cmds.status & MPT3_CMD_REPLY_VALID) == 0) { in _ctl_diag_read_buffer()
2100 ioc->name, __func__); in _ctl_diag_read_buffer()
2105 mpi_reply = ioc->ctl_cmds.reply; in _ctl_diag_read_buffer()
2109 ioc->diag_buffer_status[buffer_type] |= in _ctl_diag_read_buffer()
2111 dctlprintk(ioc, pr_info(MPT3SAS_FMT "%s: success\n", in _ctl_diag_read_buffer()
2112 ioc->name, __func__)); in _ctl_diag_read_buffer()
2116 ioc->name, __func__, in _ctl_diag_read_buffer()
2123 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _ctl_diag_read_buffer()
2128 ioc->ctl_cmds.status = MPT3_CMD_NOT_USED; in _ctl_diag_read_buffer()
2144 _ctl_compat_mpt_command(struct MPT3SAS_ADAPTER *ioc, unsigned cmd, in _ctl_compat_mpt_command() argument
2176 return _ctl_do_mpt_command(ioc, karg, &uarg->mf); in _ctl_compat_mpt_command()
2191 struct MPT3SAS_ADAPTER *ioc; in _ctl_ioctl_main() local
2204 if (_ctl_verify_adapter(ioctl_header.ioc_number, &ioc) == -1 || !ioc) in _ctl_ioctl_main()
2207 if (ioc->shost_recovery || ioc->pci_error_recovery || in _ctl_ioctl_main()
2208 ioc->is_driver_loading) in _ctl_ioctl_main()
2213 if (!mutex_trylock(&ioc->ctl_cmds.mutex)) in _ctl_ioctl_main()
2215 } else if (mutex_lock_interruptible(&ioc->ctl_cmds.mutex)) in _ctl_ioctl_main()
2222 ret = _ctl_getiocinfo(ioc, arg); in _ctl_ioctl_main()
2234 ret = _ctl_compat_mpt_command(ioc, cmd, arg); in _ctl_ioctl_main()
2247 ret = _ctl_do_mpt_command(ioc, karg, &uarg->mf); in _ctl_ioctl_main()
2253 ret = _ctl_eventquery(ioc, arg); in _ctl_ioctl_main()
2257 ret = _ctl_eventenable(ioc, arg); in _ctl_ioctl_main()
2260 ret = _ctl_eventreport(ioc, arg); in _ctl_ioctl_main()
2264 ret = _ctl_do_reset(ioc, arg); in _ctl_ioctl_main()
2268 ret = _ctl_btdh_mapping(ioc, arg); in _ctl_ioctl_main()
2272 ret = _ctl_diag_register(ioc, arg); in _ctl_ioctl_main()
2276 ret = _ctl_diag_unregister(ioc, arg); in _ctl_ioctl_main()
2280 ret = _ctl_diag_query(ioc, arg); in _ctl_ioctl_main()
2284 ret = _ctl_diag_release(ioc, arg); in _ctl_ioctl_main()
2288 ret = _ctl_diag_read_buffer(ioc, arg); in _ctl_ioctl_main()
2291 dctlprintk(ioc, pr_info(MPT3SAS_FMT in _ctl_ioctl_main()
2292 "unsupported ioctl opcode(0x%08x)\n", ioc->name, cmd)); in _ctl_ioctl_main()
2296 mutex_unlock(&ioc->ctl_cmds.mutex); in _ctl_ioctl_main()
2347 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_fw_show() local
2350 (ioc->facts.FWVersion.Word & 0xFF000000) >> 24, in _ctl_version_fw_show()
2351 (ioc->facts.FWVersion.Word & 0x00FF0000) >> 16, in _ctl_version_fw_show()
2352 (ioc->facts.FWVersion.Word & 0x0000FF00) >> 8, in _ctl_version_fw_show()
2353 ioc->facts.FWVersion.Word & 0x000000FF); in _ctl_version_fw_show()
2369 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_bios_show() local
2371 u32 version = le32_to_cpu(ioc->bios_pg3.BiosVersion); in _ctl_version_bios_show()
2393 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_mpi_show() local
2396 ioc->facts.MsgVersion, ioc->facts.HeaderVersion >> 8); in _ctl_version_mpi_show()
2412 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_product_show() local
2414 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.ChipName); in _ctl_version_product_show()
2430 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_nvdata_persistent_show() local
2433 le32_to_cpu(ioc->iounit_pg0.NvdataVersionPersistent.Word)); in _ctl_version_nvdata_persistent_show()
2450 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_version_nvdata_default_show() local
2453 le32_to_cpu(ioc->iounit_pg0.NvdataVersionDefault.Word)); in _ctl_version_nvdata_default_show()
2470 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_name_show() local
2472 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardName); in _ctl_board_name_show()
2488 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_assembly_show() local
2490 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardAssembly); in _ctl_board_assembly_show()
2506 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_board_tracer_show() local
2508 return snprintf(buf, 16, "%s\n", ioc->manu_pg0.BoardTracerNumber); in _ctl_board_tracer_show()
2527 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_io_delay_show() local
2529 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->io_missing_delay); in _ctl_io_delay_show()
2548 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_device_delay_show() local
2550 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->device_missing_delay); in _ctl_device_delay_show()
2568 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fw_queue_depth_show() local
2570 return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->facts.RequestCredit); in _ctl_fw_queue_depth_show()
2589 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_sas_address_show() local
2592 (unsigned long long)ioc->sas_hba.sas_address); in _ctl_host_sas_address_show()
2609 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_logging_level_show() local
2611 return snprintf(buf, PAGE_SIZE, "%08xh\n", ioc->logging_level); in _ctl_logging_level_show()
2618 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_logging_level_store() local
2624 ioc->logging_level = val; in _ctl_logging_level_store()
2625 pr_info(MPT3SAS_FMT "logging_level=%08xh\n", ioc->name, in _ctl_logging_level_store()
2626 ioc->logging_level); in _ctl_logging_level_store()
2645 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fwfault_debug_show() local
2647 return snprintf(buf, PAGE_SIZE, "%d\n", ioc->fwfault_debug); in _ctl_fwfault_debug_show()
2654 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_fwfault_debug_store() local
2660 ioc->fwfault_debug = val; in _ctl_fwfault_debug_store()
2661 pr_info(MPT3SAS_FMT "fwfault_debug=%d\n", ioc->name, in _ctl_fwfault_debug_store()
2662 ioc->fwfault_debug); in _ctl_fwfault_debug_store()
2682 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_ioc_reset_count_show() local
2684 return snprintf(buf, PAGE_SIZE, "%d\n", ioc->ioc_reset_count); in _ctl_ioc_reset_count_show()
2703 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_ioc_reply_queue_count_show() local
2705 if ((ioc->facts.IOCCapabilities & in _ctl_ioc_reply_queue_count_show()
2706 MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX) && ioc->msix_enable) in _ctl_ioc_reply_queue_count_show()
2707 reply_queue_count = ioc->reply_queue_count; in _ctl_ioc_reply_queue_count_show()
2738 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_size_show() local
2742 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) { in _ctl_host_trace_buffer_size_show()
2745 ioc->name, __func__); in _ctl_host_trace_buffer_size_show()
2749 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_size_show()
2753 ioc->name, __func__); in _ctl_host_trace_buffer_size_show()
2758 ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]; in _ctl_host_trace_buffer_size_show()
2765 ioc->ring_buffer_sz = size; in _ctl_host_trace_buffer_size_show()
2787 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_show() local
2791 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) { in _ctl_host_trace_buffer_show()
2794 ioc->name, __func__); in _ctl_host_trace_buffer_show()
2798 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_show()
2802 ioc->name, __func__); in _ctl_host_trace_buffer_show()
2806 if (ioc->ring_buffer_offset > ioc->ring_buffer_sz) in _ctl_host_trace_buffer_show()
2809 size = ioc->ring_buffer_sz - ioc->ring_buffer_offset; in _ctl_host_trace_buffer_show()
2811 request_data = ioc->diag_buffer[0] + ioc->ring_buffer_offset; in _ctl_host_trace_buffer_show()
2821 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_store() local
2827 ioc->ring_buffer_offset = val; in _ctl_host_trace_buffer_store()
2850 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_enable_show() local
2852 if ((!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) || in _ctl_host_trace_buffer_enable_show()
2853 ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_show()
2856 else if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_show()
2868 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_host_trace_buffer_enable_store() local
2874 if (ioc->shost_recovery || ioc->remove_host || in _ctl_host_trace_buffer_enable_store()
2875 ioc->pci_error_recovery || ioc->is_driver_loading) in _ctl_host_trace_buffer_enable_store()
2883 if ((ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) && in _ctl_host_trace_buffer_enable_store()
2884 (ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2886 ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2891 ioc->name); in _ctl_host_trace_buffer_enable_store()
2895 ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] = 0; in _ctl_host_trace_buffer_enable_store()
2896 _ctl_diag_register_2(ioc, &diag_register); in _ctl_host_trace_buffer_enable_store()
2899 if (!ioc->diag_buffer[MPI2_DIAG_BUF_TYPE_TRACE]) in _ctl_host_trace_buffer_enable_store()
2901 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2904 if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & in _ctl_host_trace_buffer_enable_store()
2908 ioc->name); in _ctl_host_trace_buffer_enable_store()
2909 mpt3sas_send_diag_release(ioc, MPI2_DIAG_BUF_TYPE_TRACE, in _ctl_host_trace_buffer_enable_store()
2935 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_master_show() local
2939 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_show()
2941 memcpy(buf, &ioc->diag_trigger_master, rc); in _ctl_diag_trigger_master_show()
2942 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_show()
2959 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_master_store() local
2963 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_store()
2965 memset(&ioc->diag_trigger_master, 0, in _ctl_diag_trigger_master_store()
2967 memcpy(&ioc->diag_trigger_master, buf, rc); in _ctl_diag_trigger_master_store()
2968 ioc->diag_trigger_master.MasterData |= in _ctl_diag_trigger_master_store()
2970 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_master_store()
2989 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_event_show() local
2993 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_show()
2995 memcpy(buf, &ioc->diag_trigger_event, rc); in _ctl_diag_trigger_event_show()
2996 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_show()
3013 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_event_store() local
3017 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_store()
3019 memset(&ioc->diag_trigger_event, 0, in _ctl_diag_trigger_event_store()
3021 memcpy(&ioc->diag_trigger_event, buf, sz); in _ctl_diag_trigger_event_store()
3022 if (ioc->diag_trigger_event.ValidEntries > NUM_VALID_ENTRIES) in _ctl_diag_trigger_event_store()
3023 ioc->diag_trigger_event.ValidEntries = NUM_VALID_ENTRIES; in _ctl_diag_trigger_event_store()
3024 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_event_store()
3043 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_scsi_show() local
3047 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_show()
3049 memcpy(buf, &ioc->diag_trigger_scsi, rc); in _ctl_diag_trigger_scsi_show()
3050 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_show()
3066 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_scsi_store() local
3070 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_store()
3072 memset(&ioc->diag_trigger_scsi, 0, in _ctl_diag_trigger_scsi_store()
3074 memcpy(&ioc->diag_trigger_scsi, buf, sz); in _ctl_diag_trigger_scsi_store()
3075 if (ioc->diag_trigger_scsi.ValidEntries > NUM_VALID_ENTRIES) in _ctl_diag_trigger_scsi_store()
3076 ioc->diag_trigger_scsi.ValidEntries = NUM_VALID_ENTRIES; in _ctl_diag_trigger_scsi_store()
3077 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_scsi_store()
3096 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_mpi_show() local
3100 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_show()
3102 memcpy(buf, &ioc->diag_trigger_mpi, rc); in _ctl_diag_trigger_mpi_show()
3103 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_show()
3119 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _ctl_diag_trigger_mpi_store() local
3123 spin_lock_irqsave(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_store()
3125 memset(&ioc->diag_trigger_mpi, 0, in _ctl_diag_trigger_mpi_store()
3126 sizeof(ioc->diag_trigger_mpi)); in _ctl_diag_trigger_mpi_store()
3127 memcpy(&ioc->diag_trigger_mpi, buf, sz); in _ctl_diag_trigger_mpi_store()
3128 if (ioc->diag_trigger_mpi.ValidEntries > NUM_VALID_ENTRIES) in _ctl_diag_trigger_mpi_store()
3129 ioc->diag_trigger_mpi.ValidEntries = NUM_VALID_ENTRIES; in _ctl_diag_trigger_mpi_store()
3130 spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); in _ctl_diag_trigger_mpi_store()
3259 struct MPT3SAS_ADAPTER *ioc; in mpt3sas_ctl_exit() local
3262 list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { in mpt3sas_ctl_exit()
3266 if (!ioc->diag_buffer[i]) in mpt3sas_ctl_exit()
3268 if (!(ioc->diag_buffer_status[i] & in mpt3sas_ctl_exit()
3271 if ((ioc->diag_buffer_status[i] & in mpt3sas_ctl_exit()
3274 pci_free_consistent(ioc->pdev, ioc->diag_buffer_sz[i], in mpt3sas_ctl_exit()
3275 ioc->diag_buffer[i], ioc->diag_buffer_dma[i]); in mpt3sas_ctl_exit()
3276 ioc->diag_buffer[i] = NULL; in mpt3sas_ctl_exit()
3277 ioc->diag_buffer_status[i] = 0; in mpt3sas_ctl_exit()
3280 kfree(ioc->event_log); in mpt3sas_ctl_exit()