.. | .. |
---|
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; |
---|