| .. | .. |
|---|
| 1 | 1 | /* |
|---|
| 2 | 2 | * Disk Array driver for HP Smart Array SAS controllers |
|---|
| 3 | + * Copyright (c) 2019-2020 Microchip Technology Inc. and its subsidiaries |
|---|
| 3 | 4 | * Copyright 2016 Microsemi Corporation |
|---|
| 4 | 5 | * Copyright 2014-2015 PMC-Sierra, Inc. |
|---|
| 5 | 6 | * Copyright 2000,2009-2015 Hewlett-Packard Development Company, L.P. |
|---|
| .. | .. |
|---|
| 57 | 58 | bool added_to_port; |
|---|
| 58 | 59 | }; |
|---|
| 59 | 60 | |
|---|
| 60 | | -#define EXTERNAL_QD 7 |
|---|
| 61 | +#define EXTERNAL_QD 128 |
|---|
| 61 | 62 | struct hpsa_scsi_dev_t { |
|---|
| 62 | 63 | unsigned int devtype; |
|---|
| 63 | 64 | int bus, target, lun; /* as presented to the OS */ |
|---|
| .. | .. |
|---|
| 65 | 66 | u8 physical_device : 1; |
|---|
| 66 | 67 | u8 expose_device; |
|---|
| 67 | 68 | u8 removed : 1; /* device is marked for death */ |
|---|
| 69 | + u8 was_removed : 1; /* device actually removed */ |
|---|
| 68 | 70 | #define RAID_CTLR_LUNID "\0\0\0\0\0\0\0\0" |
|---|
| 69 | 71 | unsigned char device_id[16]; /* from inquiry pg. 0x83 */ |
|---|
| 70 | 72 | u64 sas_address; |
|---|
| .. | .. |
|---|
| 75 | 77 | unsigned char raid_level; /* from inquiry page 0xC1 */ |
|---|
| 76 | 78 | unsigned char volume_offline; /* discovered via TUR or VPD */ |
|---|
| 77 | 79 | u16 queue_depth; /* max queue_depth for this device */ |
|---|
| 78 | | - atomic_t reset_cmds_out; /* Count of commands to-be affected */ |
|---|
| 80 | + atomic_t commands_outstanding; /* track commands sent to device */ |
|---|
| 79 | 81 | atomic_t ioaccel_cmds_out; /* Only used for physical devices |
|---|
| 80 | 82 | * counts commands sent to physical |
|---|
| 81 | 83 | * device via "ioaccel" path. |
|---|
| 82 | 84 | */ |
|---|
| 85 | + bool in_reset; |
|---|
| 83 | 86 | u32 ioaccel_handle; |
|---|
| 84 | 87 | u8 active_path_index; |
|---|
| 85 | 88 | u8 path_map; |
|---|
| .. | .. |
|---|
| 174 | 177 | struct CfgTable __iomem *cfgtable; |
|---|
| 175 | 178 | int interrupts_enabled; |
|---|
| 176 | 179 | int max_commands; |
|---|
| 180 | + int last_collision_tag; /* tags are global */ |
|---|
| 177 | 181 | atomic_t commands_outstanding; |
|---|
| 178 | 182 | # define PERF_MODE_INT 0 |
|---|
| 179 | 183 | # define DOORBELL_INT 1 |
|---|
| .. | .. |
|---|
| 300 | 304 | int needs_abort_tags_swizzled; |
|---|
| 301 | 305 | struct workqueue_struct *resubmit_wq; |
|---|
| 302 | 306 | struct workqueue_struct *rescan_ctlr_wq; |
|---|
| 307 | + struct workqueue_struct *monitor_ctlr_wq; |
|---|
| 303 | 308 | atomic_t abort_cmds_available; |
|---|
| 304 | 309 | wait_queue_head_t event_sync_wait_queue; |
|---|
| 305 | 310 | struct mutex reset_mutex; |
|---|