Lines Matching refs:device
177 pqisrc_set_btl(pqi_scsi_dev_t *device, int bus, int target, int lun) in pqisrc_set_btl() argument
181 device->bus = bus; in pqisrc_set_btl()
182 device->target = target; in pqisrc_set_btl()
183 device->lun = lun; in pqisrc_set_btl()
191 pqisrc_add_softs_entry(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device, in pqisrc_add_softs_entry() argument
208 if(!pqisrc_is_logical_device(device)) { in pqisrc_add_softs_entry()
211 pqisrc_set_btl(device, PQI_PHYSICAL_DEVICE_BUS, tid, 0); in pqisrc_add_softs_entry()
220 if (pqisrc_is_external_raid_device(device)) { in pqisrc_add_softs_entry()
221 memcpy(addr1, device->scsi3addr, 8); in pqisrc_add_softs_entry()
228 pqisrc_set_btl(device, PQI_EXTERNAL_RAID_VOLUME_BUS, in pqisrc_add_softs_entry()
229 temp_device->target,device->scsi3addr[0]); in pqisrc_add_softs_entry()
235 pqisrc_set_btl(device, PQI_EXTERNAL_RAID_VOLUME_BUS, tid, device->scsi3addr[0]); in pqisrc_add_softs_entry()
242 if(pqisrc_is_logical_device(device) && !pqisrc_is_external_raid_device(device)) in pqisrc_add_softs_entry()
250 memcpy(addr1, device->scsi3addr, 8); in pqisrc_add_softs_entry()
266 pqisrc_set_btl(device, temp_device->bus, in pqisrc_add_softs_entry()
272 "B %d: T %d: L %d\n", device->bus, device->target, in pqisrc_add_softs_entry()
273 device->lun ); in pqisrc_add_softs_entry()
283 softs->dev_list[j] = device; in pqisrc_add_softs_entry()
287 j, softs->num_devs, device->bus, device->target, in pqisrc_add_softs_entry()
288 device->lun); in pqisrc_add_softs_entry()
325 pqisrc_find_device_list_index(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_find_device_list_index() argument
336 if(device->bus == temp_device->bus && in pqisrc_find_device_list_index()
337 device->target == temp_device->target in pqisrc_find_device_list_index()
338 && device->lun == temp_device->lun){ in pqisrc_find_device_list_index()
349 pqisrc_delete_softs_entry(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_delete_softs_entry() argument
353 index = pqisrc_find_device_list_index(softs, device); in pqisrc_delete_softs_entry()
358 device->bus, device->target, device->lun, softs->num_devs); in pqisrc_delete_softs_entry()
811 pqisrc_is_external_raid_device(pqi_scsi_dev_t *device) in pqisrc_is_external_raid_device() argument
813 return device->is_external_raid_device; in pqisrc_is_external_raid_device()
824 pqisrc_assign_btl(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_assign_btl() argument
833 scsi3addr = device->scsi3addr; in pqisrc_assign_btl()
838 pqisrc_set_btl(device, PQI_HBA_BUS, PQI_CTLR_INDEX, (lunid & 0x3fff)); in pqisrc_assign_btl()
839 device->target_lun_valid = true; in pqisrc_assign_btl()
846 if (pqisrc_is_logical_device(device)) { in pqisrc_assign_btl()
850 pqisrc_set_btl(device, bus, target, lun); in pqisrc_assign_btl()
851 device->target_lun_valid = true; in pqisrc_assign_btl()
892 pqi_scsi_dev_t *device) in pqisrc_get_dev_vol_status() argument
908 ret = pqisrc_send_scsi_inquiry(softs, device->scsi3addr, VPD_PAGE | SA_VPD_LV_STATUS, in pqisrc_get_dev_vol_status()
929 device->volume_offline = offline; in pqisrc_get_dev_vol_status()
930 device->volume_status = status; in pqisrc_get_dev_vol_status()
943 pqi_scsi_dev_t *device, pqisrc_raid_map_t *raid_map) in pqisrc_raid_map_validation() argument
964 if (device->raid_level == SA_RAID_1) { in pqisrc_raid_map_validation()
969 } else if (device->raid_level == SA_RAID_ADM) { in pqisrc_raid_map_validation()
974 } else if ((device->raid_level == SA_RAID_5 || in pqisrc_raid_map_validation()
975 device->raid_level == SA_RAID_6) && in pqisrc_raid_map_validation()
998 pqisrc_get_device_raidmap(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_get_device_raidmap() argument
1025 …ret = pqisrc_prepare_send_raid(softs, &request, raid_map, raidmap_alloc_size, device->scsi3addr, N… in pqisrc_get_device_raidmap()
1042 ret = pqisrc_raid_map_validation(softs, device, raid_map); in pqisrc_get_device_raidmap()
1055 device->raid_map = raid_map; in pqisrc_get_device_raidmap()
1056 device->offload_to_mirror = next_offload_to_mirror; in pqisrc_get_device_raidmap()
1069 pqi_scsi_dev_t *device) in pqisrc_get_dev_ioaccel_status() argument
1081 ret = pqisrc_send_scsi_inquiry(softs, device->scsi3addr, in pqisrc_get_dev_ioaccel_status()
1089 device->offload_config = in pqisrc_get_dev_ioaccel_status()
1092 if (device->offload_config) { in pqisrc_get_dev_ioaccel_status()
1093 device->offload_enabled_pending = in pqisrc_get_dev_ioaccel_status()
1095 if (pqisrc_get_device_raidmap(softs, device)) in pqisrc_get_dev_ioaccel_status()
1096 device->offload_enabled_pending = false; in pqisrc_get_dev_ioaccel_status()
1100 device->offload_config, device->offload_enabled_pending); in pqisrc_get_dev_ioaccel_status()
1109 pqisrc_get_dev_raid_level(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_get_dev_raid_level() argument
1121 ret = pqisrc_send_scsi_inquiry(softs, device->scsi3addr, in pqisrc_get_dev_raid_level()
1131 device->raid_level = raid_level; in pqisrc_get_dev_raid_level()
1138 pqisrc_get_dev_data(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_get_dev_data() argument
1152 ret = pqisrc_send_scsi_inquiry(softs, device->scsi3addr, 0, inq_buff, in pqisrc_get_dev_data()
1163 device->devtype = inq_buff[0] & 0x1f; in pqisrc_get_dev_data()
1164 memcpy(device->vendor, &inq_buff[8], in pqisrc_get_dev_data()
1165 sizeof(device->vendor)); in pqisrc_get_dev_data()
1166 memcpy(device->model, &inq_buff[16], in pqisrc_get_dev_data()
1167 sizeof(device->model)); in pqisrc_get_dev_data()
1168 …DBG_DISC("DEV_TYPE: %x VENDOR: %.8s MODEL: %.16s\n", device->devtype, device->vendor, device->mod… in pqisrc_get_dev_data()
1170 if (pqisrc_is_logical_device(device) && device->devtype == DISK_DEVICE) { in pqisrc_get_dev_data()
1171 if (pqisrc_is_external_raid_device(device)) { in pqisrc_get_dev_data()
1172 device->raid_level = SA_RAID_UNKNOWN; in pqisrc_get_dev_data()
1173 device->volume_status = SA_LV_OK; in pqisrc_get_dev_data()
1174 device->volume_offline = false; in pqisrc_get_dev_data()
1177 pqisrc_get_dev_raid_level(softs, device); in pqisrc_get_dev_data()
1178 pqisrc_get_dev_ioaccel_status(softs, device); in pqisrc_get_dev_data()
1179 pqisrc_get_dev_vol_status(softs, device); in pqisrc_get_dev_data()
1187 device->is_obdr_device = (device->devtype == ROM_DEVICE && in pqisrc_get_dev_data()
1262 pqi_scsi_dev_t *device, in pqisrc_identify_physical_disk() argument
1274 bmic_device_index = BMIC_GET_DRIVE_NUMBER(device->scsi3addr); in pqisrc_identify_physical_disk()
1295 pqi_scsi_dev_t *device, in pqisrc_get_physical_device_info() argument
1303 ret= pqisrc_identify_physical_disk(softs, device, in pqisrc_get_physical_device_info()
1306 device->queue_depth = PQI_PHYSICAL_DISK_DEFAULT_MAX_QUEUE_DEPTH; in pqisrc_get_physical_device_info()
1310 device->queue_depth = in pqisrc_get_physical_device_info()
1312 device->device_type = id_phys->device_type; in pqisrc_get_physical_device_info()
1313 device->active_path_index = id_phys->active_path_number; in pqisrc_get_physical_device_info()
1314 device->path_map = id_phys->redundant_path_present_map; in pqisrc_get_physical_device_info()
1315 memcpy(&device->box, in pqisrc_get_physical_device_info()
1317 sizeof(device->box)); in pqisrc_get_physical_device_info()
1318 memcpy(&device->phys_connector, in pqisrc_get_physical_device_info()
1320 sizeof(device->phys_connector)); in pqisrc_get_physical_device_info()
1321 device->bay = id_phys->phys_bay_in_box; in pqisrc_get_physical_device_info()
1323 device->is_multi_lun = true; in pqisrc_get_physical_device_info()
1326 DBG_DISC("BMIC DEV_TYPE: %x QUEUE DEPTH: 0x%x \n", device->device_type, device->queue_depth); in pqisrc_get_physical_device_info()
1336 pqi_scsi_dev_t *device; in pqisrc_scsi_find_entry() local
1340 device = softs->dev_list[i]; in pqisrc_scsi_find_entry()
1341 if(device == NULL) in pqisrc_scsi_find_entry()
1344 device->scsi3addr)) { in pqisrc_scsi_find_entry()
1345 *same_device = device; in pqisrc_scsi_find_entry()
1346 if (device->in_remove == true) in pqisrc_scsi_find_entry()
1348 if (pqisrc_device_equal(device_to_find, device)) { in pqisrc_scsi_find_entry()
1416 pqisrc_add_device(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_add_device() argument
1420 …device->vendor, device->model, device->bus, device->target, device->lun, device->is_physical_devic… in pqisrc_add_device()
1422 device->invalid = false; in pqisrc_add_device()
1423 device->schedule_rescan = false; in pqisrc_add_device()
1424 device->softs = softs; in pqisrc_add_device()
1425 device->in_remove = false; in pqisrc_add_device()
1427 if(device->expose_device) { in pqisrc_add_device()
1428 pqisrc_init_device_active_io(softs, device); in pqisrc_add_device()
1430 os_add_device(softs,device); in pqisrc_add_device()
1439 pqisrc_remove_device(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_remove_device() argument
1443 …device->vendor, device->model, device->bus, device->target, device->lun, device->is_physical_devic… in pqisrc_remove_device()
1444 device->invalid = true; in pqisrc_remove_device()
1445 if (device->expose_device == false) { in pqisrc_remove_device()
1452 pqisrc_free_device(softs,device); in pqisrc_remove_device()
1456 pqisrc_wait_for_device_commands_to_complete(softs, device); in pqisrc_remove_device()
1458 os_remove_device(softs,device); in pqisrc_remove_device()
1468 pqisrc_adjust_list(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_adjust_list() argument
1475 if (!device) { in pqisrc_adjust_list()
1485 if (pqisrc_is_external_raid_device(device)) { in pqisrc_adjust_list()
1486 memcpy(addr1, device->scsi3addr, 8); in pqisrc_adjust_list()
1500 pqisrc_remove_target_bit(softs, device->target); in pqisrc_adjust_list()
1504 if(pqisrc_delete_softs_entry(softs, device) == PQI_STATUS_SUCCESS){ in pqisrc_adjust_list()
1505 scsi3addr = device->scsi3addr; in pqisrc_adjust_list()
1506 if (!pqisrc_is_logical_device(device) && !MASKED_DEVICE(scsi3addr)){ in pqisrc_adjust_list()
1507 DBG_NOTE("About to remove target bit %d \n", device->target); in pqisrc_adjust_list()
1508 pqisrc_remove_target_bit(softs, device->target); in pqisrc_adjust_list()
1512 pqisrc_device_mem_free(softs, device); in pqisrc_adjust_list()
1519 pqisrc_display_volume_status(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_display_volume_status() argument
1524 switch (device->volume_status) { in pqisrc_display_volume_status()
1594 device->bus, device->target, device->lun, status); in pqisrc_display_volume_status()
1599 pqisrc_device_mem_free(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_device_mem_free() argument
1602 if (!device) in pqisrc_device_mem_free()
1604 if (device->raid_map) { in pqisrc_device_mem_free()
1605 os_mem_free(softs, (char *)device->raid_map, sizeof(pqisrc_raid_map_t)); in pqisrc_device_mem_free()
1607 if (device->offload_to_mirror) { in pqisrc_device_mem_free()
1608 os_mem_free(softs, (int *)device->offload_to_mirror, sizeof(*(device->offload_to_mirror))); in pqisrc_device_mem_free()
1610 os_mem_free(softs, (char *)device,sizeof(*device)); in pqisrc_device_mem_free()
1617 pqisrc_free_device(pqisrc_softstate_t * softs, pqi_scsi_dev_t *device) in pqisrc_free_device() argument
1630 if(rcb->dvp == device) { in pqisrc_free_device()
1638 index = pqisrc_find_device_list_index(softs, device); in pqisrc_free_device()
1641 scsi3addr = device->scsi3addr; in pqisrc_free_device()
1642 if (!pqisrc_is_logical_device(device) && !MASKED_DEVICE(scsi3addr)) { in pqisrc_free_device()
1643 DBG_NOTE("Giving back target %i \n", device->target); in pqisrc_free_device()
1644 pqisrc_remove_target_bit(softs, device->target); in pqisrc_free_device()
1649 if (pqisrc_is_external_raid_device(device)) { in pqisrc_free_device()
1650 memcpy(addr1, device->scsi3addr, 8); in pqisrc_free_device()
1664 pqisrc_remove_target_bit(softs, device->target); in pqisrc_free_device()
1670 if (device->expose_device == true){ in pqisrc_free_device()
1671 pqisrc_delete_softs_entry(softs, device); in pqisrc_free_device()
1673 device->bus, device->target, device->lun); in pqisrc_free_device()
1675 pqisrc_device_mem_free(softs, device); in pqisrc_free_device()
1690 pqi_scsi_dev_t *device; in pqisrc_update_device_list() local
1712 device = softs->dev_list[i]; in pqisrc_update_device_list()
1713 device->device_gone = true; in pqisrc_update_device_list()
1719 device = new_device_list[i]; in pqisrc_update_device_list()
1721 dev_status = pqisrc_scsi_find_entry(softs, device, in pqisrc_update_device_list()
1727 device->new_device = false; in pqisrc_update_device_list()
1729 pqisrc_exist_device_update(softs, same_device, device); in pqisrc_update_device_list()
1733 device->new_device = true; in pqisrc_update_device_list()
1737 device->new_device = true; in pqisrc_update_device_list()
1744 device->new_device = false; in pqisrc_update_device_list()
1754 device = softs->dev_list[i]; in pqisrc_update_device_list()
1755 if(device == NULL) in pqisrc_update_device_list()
1757 if (device->device_gone) { in pqisrc_update_device_list()
1758 if(device->in_remove == true) in pqisrc_update_device_list()
1762 device->in_remove = true; in pqisrc_update_device_list()
1763 removed[nremoved] = device; in pqisrc_update_device_list()
1771 device = new_device_list[i]; in pqisrc_update_device_list()
1772 if (!device->new_device) in pqisrc_update_device_list()
1774 if (device->volume_offline) in pqisrc_update_device_list()
1779 scsi3addr = device->scsi3addr; in pqisrc_update_device_list()
1780 if (device->expose_device || !MASKED_DEVICE(scsi3addr)){ in pqisrc_update_device_list()
1781 if(pqisrc_add_softs_entry(softs, device, scsi3addr)){ in pqisrc_update_device_list()
1784 added[nadded] = device; in pqisrc_update_device_list()
1792 device = softs->dev_list[i]; in pqisrc_update_device_list()
1793 if(device == NULL) in pqisrc_update_device_list()
1795 if (device->offload_enabled != device->offload_enabled_pending) in pqisrc_update_device_list()
1798 device->bus, device->target, device->lun, in pqisrc_update_device_list()
1799 device->offload_enabled_pending, in pqisrc_update_device_list()
1800 device->offload_enabled); in pqisrc_update_device_list()
1802 device->offload_enabled = device->offload_enabled_pending; in pqisrc_update_device_list()
1808 device = removed[i]; in pqisrc_update_device_list()
1809 if (device == NULL) in pqisrc_update_device_list()
1811 pqisrc_display_device_info(softs, "removed", device); in pqisrc_update_device_list()
1812 pqisrc_remove_device(softs, device); in pqisrc_update_device_list()
1820 device = softs->dev_list[i]; in pqisrc_update_device_list()
1821 if (device->in_remove) in pqisrc_update_device_list()
1830 if (pqisrc_is_logical_device(device) && in pqisrc_update_device_list()
1831 device->firmware_queue_depth_set == false) in pqisrc_update_device_list()
1832 device->queue_depth = PQI_LOGICAL_DISK_DEFAULT_MAX_QUEUE_DEPTH; in pqisrc_update_device_list()
1834 if (device->scsi_rescan) { in pqisrc_update_device_list()
1835 os_rescan_target(softs, device); in pqisrc_update_device_list()
1843 device = added[i]; in pqisrc_update_device_list()
1844 if (device->expose_device) { in pqisrc_update_device_list()
1845 ret = pqisrc_add_device(softs, device); in pqisrc_update_device_list()
1848 device->bus, device->target, device->lun); in pqisrc_update_device_list()
1849 pqisrc_adjust_list(softs, device); in pqisrc_update_device_list()
1854 pqisrc_display_device_info(softs, "added", device); in pqisrc_update_device_list()
1859 device = new_device_list[i]; in pqisrc_update_device_list()
1860 if (!device) in pqisrc_update_device_list()
1862 if (!device->new_device) in pqisrc_update_device_list()
1864 if (device->volume_offline) { in pqisrc_update_device_list()
1865 pqisrc_display_volume_status(softs, device); in pqisrc_update_device_list()
1866 pqisrc_display_device_info(softs, "offline", device); in pqisrc_update_device_list()
1871 device = softs->dev_list[i]; in pqisrc_update_device_list()
1872 if(device == NULL) in pqisrc_update_device_list()
1875 i, device->bus, device->target, in pqisrc_update_device_list()
1876 device->lun); in pqisrc_update_device_list()
2002 bmic_ident_physdev_t *bmic_phy_info,pqi_scsi_dev_t *device) in pqisrc_get_device_vpd_info() argument
2005 memcpy(&device->wwid, &bmic_phy_info->padding[79], sizeof(device->wwid)); in pqisrc_get_device_vpd_info()
2035 pqi_scsi_dev_t *device = NULL; in pqisrc_scan_devices() local
2119 device = new_device_list[new_dev_cnt]; in pqisrc_scan_devices()
2120 memset(device, 0, sizeof(*device)); in pqisrc_scan_devices()
2121 memcpy(device->scsi3addr, scsi3addr, sizeof(device->scsi3addr)); in pqisrc_scan_devices()
2122 device->wwid = lun_ext_entry->wwid; in pqisrc_scan_devices()
2123 device->is_physical_device = is_physical_device; in pqisrc_scan_devices()
2125 device->is_external_raid_device = in pqisrc_scan_devices()
2134 device->firmware_queue_depth_set = true; in pqisrc_scan_devices()
2135 device->queue_depth = qdepth*256; in pqisrc_scan_devices()
2137 device->firmware_queue_depth_set = true; in pqisrc_scan_devices()
2138 device->queue_depth = qdepth*16; in pqisrc_scan_devices()
2140 if (device->queue_depth > softs->adapterQDepth) { in pqisrc_scan_devices()
2141 device->firmware_queue_depth_set = true; in pqisrc_scan_devices()
2142 device->queue_depth = softs->adapterQDepth; in pqisrc_scan_devices()
2146 device->firmware_queue_depth_set = false; in pqisrc_scan_devices()
2149 device->firmware_queue_depth_set = false; in pqisrc_scan_devices()
2155 ret = pqisrc_get_dev_data(softs, device); in pqisrc_scan_devices()
2158 (unsigned long long)BE_64(device->scsi3addr[0])); in pqisrc_scan_devices()
2164 if (device->devtype == RAID_DEVICE) { in pqisrc_scan_devices()
2165 device->firmware_queue_depth_set = true; in pqisrc_scan_devices()
2166 device->queue_depth = softs->adapterQDepth; in pqisrc_scan_devices()
2168 pqisrc_assign_btl(softs, device); in pqisrc_scan_devices()
2174 if (device->is_physical_device && in pqisrc_scan_devices()
2176 device->expose_device = false; in pqisrc_scan_devices()
2178 device->expose_device = true; in pqisrc_scan_devices()
2180 if (device->is_physical_device && in pqisrc_scan_devices()
2184 device->aio_enabled = true; in pqisrc_scan_devices()
2186 switch (device->devtype) { in pqisrc_scan_devices()
2194 if (device->is_obdr_device) in pqisrc_scan_devices()
2199 if (device->is_physical_device) { in pqisrc_scan_devices()
2200 device->ioaccel_handle = in pqisrc_scan_devices()
2202 pqisrc_get_physical_device_info(softs, device, in pqisrc_scan_devices()
2205 pqisrc_get_device_vpd_info(softs, bmic_phy_info, device); in pqisrc_scan_devices()
2207 device->sas_address = BE_64(device->wwid); in pqisrc_scan_devices()
2212 if (device->is_physical_device) { in pqisrc_scan_devices()
2213 device->sas_address = BE_64(lun_ext_entry->wwid); in pqisrc_scan_devices()
2282 pqi_scsi_dev_t *device = NULL; in pqisrc_cleanup_devices() local
2287 device = softs->dev_list[i]; in pqisrc_cleanup_devices()
2288 pqisrc_device_mem_free(softs, device); in pqisrc_cleanup_devices()