@@ -57,8 +57,8 @@ extern struct list_head mrioc_list;
5757extern int prot_mask ;
5858extern atomic64_t event_counter ;
5959
60- #define MPI3MR_DRIVER_VERSION "8.12.0 .0.50"
61- #define MPI3MR_DRIVER_RELDATE "05-Sept-2024 "
60+ #define MPI3MR_DRIVER_VERSION "8.12.1 .0.50"
61+ #define MPI3MR_DRIVER_RELDATE "28-January-2025 "
6262
6363#define MPI3MR_DRIVER_NAME "mpi3mr"
6464#define MPI3MR_DRIVER_LICENSE "GPL"
@@ -81,13 +81,14 @@ extern atomic64_t event_counter;
8181
8282/* Admin queue management definitions */
8383#define MPI3MR_ADMIN_REQ_Q_SIZE (2 * MPI3MR_PAGE_SIZE_4K)
84- #define MPI3MR_ADMIN_REPLY_Q_SIZE (4 * MPI3MR_PAGE_SIZE_4K)
84+ #define MPI3MR_ADMIN_REPLY_Q_SIZE (8 * MPI3MR_PAGE_SIZE_4K)
8585#define MPI3MR_ADMIN_REQ_FRAME_SZ 128
8686#define MPI3MR_ADMIN_REPLY_FRAME_SZ 16
8787
8888/* Operational queue management definitions */
8989#define MPI3MR_OP_REQ_Q_QD 512
9090#define MPI3MR_OP_REP_Q_QD 1024
91+ #define MPI3MR_OP_REP_Q_QD2K 2048
9192#define MPI3MR_OP_REP_Q_QD4K 4096
9293#define MPI3MR_OP_REQ_Q_SEG_SIZE 4096
9394#define MPI3MR_OP_REP_Q_SEG_SIZE 4096
@@ -134,8 +135,6 @@ extern atomic64_t event_counter;
134135
135136#define MPI3MR_WATCHDOG_INTERVAL 1000 /* in milli seconds */
136137
137- #define MPI3MR_DEFAULT_CFG_PAGE_SZ 1024 /* in bytes */
138-
139138#define MPI3MR_RESET_TOPOLOGY_SETTLE_TIME 10
140139
141140#define MPI3MR_SCMD_TIMEOUT (60 * HZ)
@@ -331,6 +330,7 @@ enum mpi3mr_reset_reason {
331330#define MPI3MR_RESET_REASON_OSTYPE_SHIFT 28
332331#define MPI3MR_RESET_REASON_IOCNUM_SHIFT 20
333332
333+
334334/* Queue type definitions */
335335enum queue_type {
336336 MPI3MR_DEFAULT_QUEUE = 0 ,
@@ -390,6 +390,7 @@ struct mpi3mr_ioc_facts {
390390 u16 max_msix_vectors ;
391391 u8 personality ;
392392 u8 dma_mask ;
393+ bool max_req_limit ;
393394 u8 protocol_flags ;
394395 u8 sge_mod_mask ;
395396 u8 sge_mod_value ;
@@ -459,6 +460,8 @@ struct op_req_qinfo {
459460 * @enable_irq_poll: Flag to indicate polling is enabled
460461 * @in_use: Queue is handled by poll/ISR
461462 * @qtype: Type of queue (types defined in enum queue_type)
463+ * @qfull_watermark: Watermark defined in reply queue to avoid
464+ * reply queue full
462465 */
463466struct op_reply_qinfo {
464467 u16 ci ;
@@ -474,6 +477,7 @@ struct op_reply_qinfo {
474477 bool enable_irq_poll ;
475478 atomic_t in_use ;
476479 enum queue_type qtype ;
480+ u16 qfull_watermark ;
477481};
478482
479483/**
@@ -1093,6 +1097,7 @@ struct scmd_priv {
10931097 * @ts_update_interval: Timestamp update interval
10941098 * @reset_in_progress: Reset in progress flag
10951099 * @unrecoverable: Controller unrecoverable flag
1100+ * @io_admin_reset_sync: Manage state of I/O ops during an admin reset process
10961101 * @prev_reset_result: Result of previous reset
10971102 * @reset_mutex: Controller reset mutex
10981103 * @reset_waitq: Controller reset wait queue
@@ -1133,9 +1138,6 @@ struct scmd_priv {
11331138 * @io_throttle_low: I/O size to stop throttle in 512b blocks
11341139 * @num_io_throttle_group: Maximum number of throttle groups
11351140 * @throttle_groups: Pointer to throttle group info structures
1136- * @cfg_page: Default memory for configuration pages
1137- * @cfg_page_dma: Configuration page DMA address
1138- * @cfg_page_sz: Default configuration page memory size
11391141 * @sas_transport_enabled: SAS transport enabled or not
11401142 * @scsi_device_channel: Channel ID for SCSI devices
11411143 * @transport_cmds: Command tracker for SAS transport commands
@@ -1159,6 +1161,8 @@ struct scmd_priv {
11591161 * @snapdump_trigger_active: Snapdump trigger active flag
11601162 * @pci_err_recovery: PCI error recovery in progress
11611163 * @block_on_pci_err: Block IO during PCI error recovery
1164+ * @reply_qfull_count: Occurences of reply queue full avoidance kicking-in
1165+ * @prevent_reply_qfull: Enable reply queue prevention
11621166 */
11631167struct mpi3mr_ioc {
11641168 struct list_head list ;
@@ -1282,6 +1286,7 @@ struct mpi3mr_ioc {
12821286 u16 ts_update_interval ;
12831287 u8 reset_in_progress ;
12841288 u8 unrecoverable ;
1289+ u8 io_admin_reset_sync ;
12851290 int prev_reset_result ;
12861291 struct mutex reset_mutex ;
12871292 wait_queue_head_t reset_waitq ;
@@ -1332,10 +1337,6 @@ struct mpi3mr_ioc {
13321337 u16 num_io_throttle_group ;
13331338 struct mpi3mr_throttle_group_info * throttle_groups ;
13341339
1335- void * cfg_page ;
1336- dma_addr_t cfg_page_dma ;
1337- u16 cfg_page_sz ;
1338-
13391340 u8 sas_transport_enabled ;
13401341 u8 scsi_device_channel ;
13411342 struct mpi3mr_drv_cmd transport_cmds ;
@@ -1361,6 +1362,8 @@ struct mpi3mr_ioc {
13611362 bool fw_release_trigger_active ;
13621363 bool pci_err_recovery ;
13631364 bool block_on_pci_err ;
1365+ atomic_t reply_qfull_count ;
1366+ bool prevent_reply_qfull ;
13641367};
13651368
13661369/**
0 commit comments