diff options
| author | Mateusz Guzik <mjg@FreeBSD.org> | 2020-09-01 21:53:21 +0000 |
|---|---|---|
| committer | Mateusz Guzik <mjg@FreeBSD.org> | 2020-09-01 21:53:21 +0000 |
| commit | 7368632c18fa8371cf65b3a94d324830486420c1 (patch) | |
| tree | ac299fcde94880b8e6328265fe28011ffd0c67ce /sys/dev/smartpqi/smartpqi_discovery.c | |
| parent | 75d41981c0e9db8079219efd17c0179d4a093da2 (diff) | |
Notes
Diffstat (limited to 'sys/dev/smartpqi/smartpqi_discovery.c')
| -rw-r--r-- | sys/dev/smartpqi/smartpqi_discovery.c | 54 |
1 files changed, 21 insertions, 33 deletions
diff --git a/sys/dev/smartpqi/smartpqi_discovery.c b/sys/dev/smartpqi/smartpqi_discovery.c index c86b47cc07d1e..f7d4b18bb154d 100644 --- a/sys/dev/smartpqi/smartpqi_discovery.c +++ b/sys/dev/smartpqi/smartpqi_discovery.c @@ -58,7 +58,7 @@ int pqisrc_alloc_tid(pqisrc_softstate_t *softs) DBG_ERR("Target ID exhausted\n"); return INVALID_ELEM; } - + return softs->tid_pool.tid[softs->tid_pool.index--]; } @@ -68,7 +68,7 @@ void pqisrc_free_tid(pqisrc_softstate_t *softs, int tid) DBG_ERR("Target ID queue is full\n"); return; } - + softs->tid_pool.index++; softs->tid_pool.tid[softs->tid_pool.index] = tid; } @@ -126,7 +126,7 @@ int pqisrc_build_send_raid_request(pqisrc_softstate_t *softs, pqisrc_raid_req_t void *buff, size_t datasize, uint8_t cmd, uint16_t vpd_page, uint8_t *scsi3addr, raid_path_error_info_elem_t *error_info) { - + uint8_t *cdb; int ret = PQI_STATUS_SUCCESS; uint32_t tag = 0; @@ -137,7 +137,7 @@ int pqisrc_build_send_raid_request(pqisrc_softstate_t *softs, pqisrc_raid_req_t ob_queue_t *ob_q = &softs->op_ob_q[PQI_DEFAULT_IB_QUEUE]; rcb_t *rcb = NULL; - + DBG_FUNC("IN\n"); memset(&device_mem, 0, sizeof(struct dma_mem)); @@ -149,7 +149,7 @@ int pqisrc_build_send_raid_request(pqisrc_softstate_t *softs, pqisrc_raid_req_t device_mem.align = PQISRC_DEFAULT_DMA_ALIGN; ret = os_dma_mem_alloc(softs, &device_mem); - + if (ret) { DBG_ERR("failed to allocate dma memory for device_mem return code %d\n", ret); return ret; @@ -160,7 +160,6 @@ int pqisrc_build_send_raid_request(pqisrc_softstate_t *softs, pqisrc_raid_req_t sgd->addr = device_mem.dma_addr; sgd->len = datasize; sgd->flags = SG_FLAG_LAST; - } /* Build raid path request */ @@ -278,7 +277,7 @@ int pqisrc_build_send_raid_request(pqisrc_softstate_t *softs, pqisrc_raid_req_t } os_dma_mem_free(softs, &device_mem); } - + ret = rcb->status; if (ret) { if(error_info) { @@ -422,7 +421,6 @@ static int pqisrc_get_phys_log_device_list(pqisrc_softstate_t *softs, reportlun_data_ext_t *local_logdev_list; reportlun_data_ext_t *logdev_data; reportlun_header_t report_lun_header; - DBG_FUNC("IN\n"); @@ -438,7 +436,6 @@ static int pqisrc_get_phys_log_device_list(pqisrc_softstate_t *softs, return ret; } - logdev_data = *logical_dev_list; if (logdev_data) { @@ -592,7 +589,7 @@ static uint8_t pqisrc_get_volume_offline_status(pqisrc_softstate_t *softs, uint8_t *buff = NULL; DBG_FUNC("IN\n"); - + buff = os_mem_alloc(softs, 64); if (!buff) return PQI_STATUS_FAILURE; @@ -621,7 +618,6 @@ out: return status; } - /* Determine offline status of a volume. Returns appropriate SA_LV_* status.*/ static uint8_t pqisrc_get_dev_vol_status(pqisrc_softstate_t *softs, uint8_t *scsi3addr) @@ -642,7 +638,7 @@ static uint8_t pqisrc_get_dev_vol_status(pqisrc_softstate_t *softs, memset(&request, 0, sizeof(request)); ret = pqisrc_build_send_raid_request(softs, &request, NULL, 0, TEST_UNIT_READY, 0, scsi3addr, &error_info); - + if (ret) goto error; sense_data = error_info.data; @@ -824,7 +820,7 @@ static void pqisrc_get_dev_ioaccel_status(pqisrc_softstate_t *softs, DBG_ERR("error in send scsi inquiry ret=%d\n", ret); goto err_out; } - + ioaccel_status = buff[IOACCEL_STATUS_BYTE]; device->offload_config = !!(ioaccel_status & OFFLOAD_CONFIGURED_BIT); @@ -835,7 +831,7 @@ static void pqisrc_get_dev_ioaccel_status(pqisrc_softstate_t *softs, if (pqisrc_get_device_raidmap(softs, device)) device->offload_enabled_pending = false; } - + DBG_DISC("offload_config: 0x%x offload_enabled_pending: 0x%x \n", device->offload_config, device->offload_enabled_pending); @@ -995,7 +991,6 @@ static int pqisrc_identify_physical_disk(pqisrc_softstate_t *softs, uint16_t bmic_device_index; pqisrc_raid_req_t request; - DBG_FUNC("IN\n"); memset(&request, 0, sizeof(request)); @@ -1046,7 +1041,6 @@ static void pqisrc_get_physical_device_info(pqisrc_softstate_t *softs, DBG_FUNC("OUT\n"); } - /* Function used to find the entry of the device in a list */ static device_status_t pqisrc_scsi_find_entry(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device_to_find, @@ -1077,7 +1071,6 @@ static device_status_t pqisrc_scsi_find_entry(pqisrc_softstate_t *softs, return DEVICE_NOT_FOUND; } - /* Update the newly added devices as existed device */ static void pqisrc_exist_device_update(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device_exist, @@ -1241,7 +1234,6 @@ void pqisrc_remove_device(pqisrc_softstate_t *softs, DBG_FUNC("OUT\n"); } - /* * When exposing new device to OS fails then adjst list according to the * mid scsi list @@ -1331,7 +1323,7 @@ void pqisrc_device_mem_free(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) } os_mem_free(softs, (char *)device,sizeof(*device)); DBG_FUNC("OUT\n"); - + } /* OS should call this function to free the scsi device */ @@ -1347,7 +1339,6 @@ void pqisrc_free_device(pqisrc_softstate_t * softs,pqi_scsi_dev_t *device) } - /* Update the newly added devices to the device list */ static void pqisrc_update_device_list(pqisrc_softstate_t *softs, pqi_scsi_dev_t *new_device_list[], int num_new_devices) @@ -1372,9 +1363,9 @@ static void pqisrc_update_device_list(pqisrc_softstate_t *softs, DBG_WARN("Out of memory \n"); goto free_and_out; } - + OS_ACQUIRE_SPINLOCK(&softs->devlist_lock); - + for(i = 0; i < PQI_MAX_DEVICES; i++) { for(j = 0; j < PQI_MAX_MULTILUN; j++) { if(softs->device_list[i][j] == NULL) @@ -1448,7 +1439,7 @@ static void pqisrc_update_device_list(pqisrc_softstate_t *softs, } pqisrc_update_log_dev_qdepth(softs); - + for(i = 0; i < PQI_MAX_DEVICES; i++) { for(j = 0; j < PQI_MAX_MULTILUN; j++) { if(softs->device_list[i][j] == NULL) @@ -1571,7 +1562,7 @@ int pqisrc_write_driver_version_to_host_wellness(pqisrc_softstate_t *softs) BMIC_WRITE_HOST_WELLNESS, 0, (uint8_t *)RAID_CTLR_LUNID, NULL); os_mem_free(softs, (char *)host_wellness_driver_ver, data_length); - + DBG_FUNC("OUT"); return rval; } @@ -1613,10 +1604,10 @@ int pqisrc_write_current_time_to_host_wellness(pqisrc_softstate_t *softs) host_wellness_time->dont_write_tag[1] = 'W'; host_wellness_time->end_tag[0] = 'Z'; host_wellness_time->end_tag[1] = 'Z'; - + rval = pqisrc_build_send_raid_request(softs, &request, host_wellness_time,data_length, BMIC_WRITE_HOST_WELLNESS, 0, (uint8_t *)RAID_CTLR_LUNID, NULL); - + os_mem_free(softs, (char *)host_wellness_time, data_length); DBG_FUNC("OUT"); @@ -1645,7 +1636,6 @@ int pqisrc_scan_devices(pqisrc_softstate_t *softs) bmic_ident_physdev_t *bmic_phy_info = NULL; pqi_scsi_dev_t **new_device_list = NULL; pqi_scsi_dev_t *device = NULL; - DBG_FUNC("IN\n"); @@ -1657,7 +1647,7 @@ int pqisrc_scan_devices(pqisrc_softstate_t *softs) physical_cnt = BE_32(physical_dev_list->header.list_length) / sizeof(physical_dev_list->lun_entries[0]); - + logical_cnt = BE_32(logical_dev_list->header.list_length) / sizeof(logical_dev_list->lun_entries[0]); @@ -1695,7 +1685,6 @@ int pqisrc_scan_devices(pqisrc_softstate_t *softs) ndev_allocated = phy_log_dev_cnt; new_dev_cnt = 0; for (i = 0; i < phy_log_dev_cnt; i++) { - if (i < physical_cnt) { is_physical_device = true; lun_ext_entry = &physical_dev_list->lun_entries[i]; @@ -1803,7 +1792,7 @@ int pqisrc_scan_devices(pqisrc_softstate_t *softs) DBG_DISC("new_dev_cnt %d\n", new_dev_cnt); pqisrc_update_device_list(softs, new_device_list, new_dev_cnt); - + err_out: if (new_device_list) { for (i = 0; i < ndev_allocated; i++) { @@ -1824,7 +1813,7 @@ err_out: os_mem_free(softs, (char *)logical_dev_list, log_data_length); if (bmic_phy_info) os_mem_free(softs, (char *)bmic_phy_info, sizeof(*bmic_phy_info)); - + DBG_FUNC("OUT \n"); return ret; @@ -1839,7 +1828,7 @@ void pqisrc_cleanup_devices(pqisrc_softstate_t *softs) int i = 0,j = 0; pqi_scsi_dev_t *dvp = NULL; DBG_FUNC("IN\n"); - + for(i = 0; i < PQI_MAX_DEVICES; i++) { for(j = 0; j < PQI_MAX_MULTILUN; j++) { if (softs->device_list[i][j] == NULL) @@ -1850,4 +1839,3 @@ void pqisrc_cleanup_devices(pqisrc_softstate_t *softs) } DBG_FUNC("OUT\n"); } - |
