mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 02:14:58 +00:00
scsi: mpi3mr: Use firmware-provided timestamp update interval
Make driver use the timestamp update interval value provided by firmware in the driver page 1. If firmware fails to provide non-zero value, then the driver will fall back to the driver defined macro. Signed-off-by: Prayas Patel <prayas.patel@broadcom.com> Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com> Link: https://lore.kernel.org/r/20240905102753.105310-3-ranjan.kumar@broadcom.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
9634bb0708
commit
fc1ddda330
@ -1327,6 +1327,7 @@ struct mpi3_driver_page0 {
|
||||
struct mpi3_driver_page1 {
|
||||
struct mpi3_config_page_header header;
|
||||
__le32 flags;
|
||||
u8 time_stamp_update;
|
||||
__le32 reserved0c;
|
||||
__le16 host_diag_trace_max_size;
|
||||
__le16 host_diag_trace_min_size;
|
||||
|
@ -1090,6 +1090,7 @@ struct scmd_priv {
|
||||
* @evtack_cmds_bitmap: Event Ack bitmap
|
||||
* @delayed_evtack_cmds_list: Delayed event acknowledgment list
|
||||
* @ts_update_counter: Timestamp update counter
|
||||
* @ts_update_interval: Timestamp update interval
|
||||
* @reset_in_progress: Reset in progress flag
|
||||
* @unrecoverable: Controller unrecoverable flag
|
||||
* @prev_reset_result: Result of previous reset
|
||||
@ -1277,7 +1278,8 @@ struct mpi3mr_ioc {
|
||||
unsigned long *evtack_cmds_bitmap;
|
||||
struct list_head delayed_evtack_cmds_list;
|
||||
|
||||
u32 ts_update_counter;
|
||||
u16 ts_update_counter;
|
||||
u16 ts_update_interval;
|
||||
u8 reset_in_progress;
|
||||
u8 unrecoverable;
|
||||
int prev_reset_result;
|
||||
|
@ -2694,7 +2694,7 @@ static void mpi3mr_watchdog_work(struct work_struct *work)
|
||||
return;
|
||||
}
|
||||
|
||||
if (mrioc->ts_update_counter++ >= MPI3MR_TSUPDATE_INTERVAL) {
|
||||
if (mrioc->ts_update_counter++ >= mrioc->ts_update_interval) {
|
||||
mrioc->ts_update_counter = 0;
|
||||
mpi3mr_sync_timestamp(mrioc);
|
||||
}
|
||||
@ -3867,6 +3867,29 @@ static int mpi3mr_repost_diag_bufs(struct mpi3mr_ioc *mrioc)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* mpi3mr_read_tsu_interval - Update time stamp interval
|
||||
* @mrioc: Adapter instance reference
|
||||
*
|
||||
* Update time stamp interval if its defined in driver page 1,
|
||||
* otherwise use default value.
|
||||
*
|
||||
* Return: Nothing
|
||||
*/
|
||||
static void
|
||||
mpi3mr_read_tsu_interval(struct mpi3mr_ioc *mrioc)
|
||||
{
|
||||
struct mpi3_driver_page1 driver_pg1;
|
||||
u16 pg_sz = sizeof(driver_pg1);
|
||||
int retval = 0;
|
||||
|
||||
mrioc->ts_update_interval = MPI3MR_TSUPDATE_INTERVAL;
|
||||
|
||||
retval = mpi3mr_cfg_get_driver_pg1(mrioc, &driver_pg1, pg_sz);
|
||||
if (!retval && driver_pg1.time_stamp_update)
|
||||
mrioc->ts_update_interval = (driver_pg1.time_stamp_update * 60);
|
||||
}
|
||||
|
||||
/**
|
||||
* mpi3mr_print_ioc_info - Display controller information
|
||||
* @mrioc: Adapter instance reference
|
||||
@ -4163,6 +4186,7 @@ retry_init:
|
||||
goto out_failed_noretry;
|
||||
}
|
||||
|
||||
mpi3mr_read_tsu_interval(mrioc);
|
||||
mpi3mr_print_ioc_info(mrioc);
|
||||
|
||||
if (!mrioc->cfg_page) {
|
||||
@ -4344,6 +4368,7 @@ retry_init:
|
||||
goto out_failed_noretry;
|
||||
}
|
||||
|
||||
mpi3mr_read_tsu_interval(mrioc);
|
||||
mpi3mr_print_ioc_info(mrioc);
|
||||
|
||||
if (is_resume) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user