Lines Matching full:device

175 /* Subroutine used to set Bus-Target-Lun for the requested 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
201 /* If controller device, add it to list because its lun/bus/target in pqisrc_add_softs_entry()
206 /* If exposed physical device give it a target then add it in pqisrc_add_softs_entry()
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()
216 /* If external raid device , assign target from the target pool. in pqisrc_add_softs_entry()
217 * If a non-zero lun device, search through the list & find the in pqisrc_add_softs_entry()
218 * device which has same target (byte 2 of LUN address). 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()
240 /* If logical device, add it to list because its lun/bus/target in pqisrc_add_softs_entry()
242 if(pqisrc_is_logical_device(device) && !pqisrc_is_external_raid_device(device)) in pqisrc_add_softs_entry()
245 /* This is a non-zero lun of a multi-lun device. in pqisrc_add_softs_entry()
246 * Search through our list and find the device which in pqisrc_add_softs_entry()
250 memcpy(addr1, device->scsi3addr, 8); in pqisrc_add_softs_entry()
261 * then the passed-in device is an additional lun of a in pqisrc_add_softs_entry()
262 * previously added multi-lun device. Use the same target in pqisrc_add_softs_entry()
263 * id as that previous device. Otherwise, use the new in pqisrc_add_softs_entry()
266 pqisrc_set_btl(device, temp_device->bus, in pqisrc_add_softs_entry()
271 DBG_ERR("The device is not a physical, lun or ptraid device" 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()
277 /* Actually add the device to the driver list in pqisrc_add_softs_entry()
283 softs->dev_list[j] = device; in pqisrc_add_softs_entry()
286 DBG_NOTE("Added device [%d of %d]: B %d: T %d: L %d\n", 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()
306 * of that device for further use*/ in pqisrc_find_btl_list_index()
310 DBG_DISC("Returning device list index %d\n", index); in pqisrc_find_btl_list_index()
322 /* Return a given index for a specific device within the
325 pqisrc_find_device_list_index(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_find_device_list_index() argument
335 * of that device for further use*/ in pqisrc_find_device_list_index()
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()
339 DBG_DISC("Returning device list index %d\n", index); in pqisrc_find_device_list_index()
347 /* Delete a given device from the softs dev_list*/
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()
357 DBG_NOTE("Removing device : B %d: T %d: L %d positioned at %d\n", in pqisrc_delete_softs_entry()
358 device->bus, device->target, device->lun, softs->num_devs); in pqisrc_delete_softs_entry()
362 DBG_NOTE("Invalid device, either it was already removed " in pqisrc_delete_softs_entry()
366 DBG_ERR("This is a bogus device\n"); in pqisrc_delete_softs_entry()
589 /* subroutine used to get physical and logical luns of the device */
720 * Function used to get physical and logical device list
785 /* Adding LOGICAL device entry for controller */ in pqisrc_get_phys_log_device_list()
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()
822 /* Function used to assign Bus-Target-Lun for the requested 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()
837 /* The specified device is the controller. */ 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()
843 /* When the specified device is a logical volume, in pqisrc_assign_btl()
845 * device list in pqisrc scan devices. */ 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()
858 /* Build and send the internal INQUIRY command to particular device */
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()
996 /* Get device raidmap for the requested device */
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()
1066 /* Get device ioaccel_status to validate the type of device */
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()
1107 /* Get RAID level of requested device */
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()
1136 /* Parse the inquiry response and determine the type of device */
1138 pqisrc_get_dev_data(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_get_dev_data() argument
1151 /* Send an inquiry to the device to see what it is. */ in pqisrc_get_dev_data()
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()
1184 * Check if this is a One-Button-Disaster-Recovery device in pqisrc_get_dev_data()
1187 device->is_obdr_device = (device->devtype == ROM_DEVICE && in pqisrc_get_dev_data()
1259 /* BMIC command to determine scsi device identify params */
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()
1290 * Function used to get the scsi device information using one of BMIC
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()
1331 /* Function used to find the entry of the device in a list */
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()
1362 /* Update the newly added devices as existed device */
1376 /* Whenever a logical device expansion happens, reprobe of in pqisrc_exist_device_update()
1414 /* Function used to add a scsi device to OS scsi subsystem */
1416 pqisrc_add_device(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_add_device() argument
1420device->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()
1429 /* TBD: Call OS upper layer function to add the device entry */ in pqisrc_add_device()
1430 os_add_device(softs,device); in pqisrc_add_device()
1437 /* Function used to remove a scsi device from OS scsi subsystem */
1439 pqisrc_remove_device(pqisrc_softstate_t *softs, pqi_scsi_dev_t *device) in pqisrc_remove_device() argument
1443device->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()
1447 *Hence, free the masked device resources such as in pqisrc_remove_device()
1448 *device memory, Target ID,etc., here. in pqisrc_remove_device()
1450 DBG_NOTE("Deallocated Masked Device Resources.\n"); in pqisrc_remove_device()
1451 /* softs->device_list[device->target][device->lun] = NULL; */ in pqisrc_remove_device()
1452 pqisrc_free_device(softs,device); in pqisrc_remove_device()
1455 /* Wait for device outstanding Io's */ in pqisrc_remove_device()
1456 pqisrc_wait_for_device_commands_to_complete(softs, device); in pqisrc_remove_device()
1457 /* Call OS upper layer function to remove the exposed device entry */ in pqisrc_remove_device()
1458 os_remove_device(softs,device); in pqisrc_remove_device()
1464 * When exposing new device to OS fails then adjst list according to the
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()
1476 DBG_ERR("softs = %p: device is NULL !!!\n", softs); in pqisrc_adjust_list()
1482 /*For external raid device, there can be multiple luns in pqisrc_adjust_list()
1483 *with same target. So while freeing external raid 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()
1517 /* Debug routine used to display the RAID volume status of the device */
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()
1615 /* OS should call this function to free the scsi device */
1617 pqisrc_free_device(pqisrc_softstate_t * softs, pqi_scsi_dev_t *device) in pqisrc_free_device() argument
1624 /* Clear the "device" field in the rcb. in pqisrc_free_device()
1625 * Response coming after device removal shouldn't access this field in pqisrc_free_device()
1630 if(rcb->dvp == device) { in pqisrc_free_device()
1631 DBG_WARN("Pending requests for the removing device\n"); in pqisrc_free_device()
1635 /* Find the entry in device list for the freed device softs->dev_list[i]& in pqisrc_free_device()
1636 *make it NULL before freeing the device memory 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()
1646 /*For external raid device, there can be multiple luns in pqisrc_free_device()
1647 *with same target. So while freeing external raid device, 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()
1672 DBG_NOTE("Removed memory for device : B %d: T %d: L %d\n", 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()
1682 /* Update the newly added devices to the device list */
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()
1717 DBG_IO("Device list used an array\n"); 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()
1726 /* New Device present in existing device list */ 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()
1732 /* Device not found in existing list */ in pqisrc_update_device_list()
1733 device->new_device = true; in pqisrc_update_device_list()
1736 /* Actual device gone need to add device to list*/ in pqisrc_update_device_list()
1737 device->new_device = true; in pqisrc_update_device_list()
1740 /*Older device with same target/lun is in removal stage*/ in pqisrc_update_device_list()
1741 /*New device will be added/scanned when same target/lun 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()
1847 DBG_WARN("scsi %d:%d:%d addition failed, device not added\n", 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()
1874 DBG_DISC("Current device %d : B%d:T%d:L%d\n", 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
2065 DBG_ERR("failed to allocate memory for BMIC ID PHYS Device : %d\n", ret); in pqisrc_scan_devices()
2075 DBG_ERR("failed to allocate memory for device list : %d\n", ret); in pqisrc_scan_devices()
2084 DBG_ERR("failed to allocate memory for device list : %d\n", ret); in pqisrc_scan_devices()
2105 /* Save the target sas adderess for external raid device */ in pqisrc_scan_devices()
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()
2154 /* Get device type, vendor, model, device ID. */ in pqisrc_scan_devices()
2155 ret = pqisrc_get_dev_data(softs, device); in pqisrc_scan_devices()
2157 DBG_WARN("Inquiry failed, skipping device %016llx\n", 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()