Commit b0df96a0 authored by Reddy, Sreekanth's avatar Reddy, Sreekanth Committed by James Bottomley

[SCSI] mpt2sas: Fix for issue Missing delay not getting set during system bootup

Missing delay is not getting set properly. The reason is that it is not
defined in the same file from where it is being invoked.  The fix is to move
the missing delay module parameter from mpt2sas_base.c to mpt2sas_scsh.c.
Signed-off-by: default avatarSreekanth Reddy <Sreekanth.Reddy@lsi.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 49c12413
...@@ -80,10 +80,6 @@ static int msix_disable = -1; ...@@ -80,10 +80,6 @@ static int msix_disable = -1;
module_param(msix_disable, int, 0); module_param(msix_disable, int, 0);
MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)"); MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)");
static int missing_delay[2] = {-1, -1};
module_param_array(missing_delay, int, NULL, 0);
MODULE_PARM_DESC(missing_delay, " device missing delay , io missing delay");
static int mpt2sas_fwfault_debug; static int mpt2sas_fwfault_debug;
MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault "
"and halt firmware - (default=0)"); "and halt firmware - (default=0)");
...@@ -2199,7 +2195,7 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) ...@@ -2199,7 +2195,7 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc)
} }
/** /**
* _base_update_missing_delay - change the missing delay timers * mpt2sas_base_update_missing_delay - change the missing delay timers
* @ioc: per adapter object * @ioc: per adapter object
* @device_missing_delay: amount of time till device is reported missing * @device_missing_delay: amount of time till device is reported missing
* @io_missing_delay: interval IO is returned when there is a missing device * @io_missing_delay: interval IO is returned when there is a missing device
...@@ -2210,8 +2206,8 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) ...@@ -2210,8 +2206,8 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc)
* delay, as well as the io missing delay. This should be called at driver * delay, as well as the io missing delay. This should be called at driver
* load time. * load time.
*/ */
static void void
_base_update_missing_delay(struct MPT2SAS_ADAPTER *ioc, mpt2sas_base_update_missing_delay(struct MPT2SAS_ADAPTER *ioc,
u16 device_missing_delay, u8 io_missing_delay) u16 device_missing_delay, u8 io_missing_delay)
{ {
u16 dmd, dmd_new, dmd_orignal; u16 dmd, dmd_new, dmd_orignal;
...@@ -4407,9 +4403,6 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc) ...@@ -4407,9 +4403,6 @@ mpt2sas_base_attach(struct MPT2SAS_ADAPTER *ioc)
if (r) if (r)
goto out_free_resources; goto out_free_resources;
if (missing_delay[0] != -1 && missing_delay[1] != -1)
_base_update_missing_delay(ioc, missing_delay[0],
missing_delay[1]);
ioc->non_operational_loop = 0; ioc->non_operational_loop = 0;
return 0; return 0;
......
...@@ -1055,6 +1055,9 @@ void mpt2sas_base_validate_event_type(struct MPT2SAS_ADAPTER *ioc, u32 *event_ty ...@@ -1055,6 +1055,9 @@ void mpt2sas_base_validate_event_type(struct MPT2SAS_ADAPTER *ioc, u32 *event_ty
void mpt2sas_halt_firmware(struct MPT2SAS_ADAPTER *ioc); void mpt2sas_halt_firmware(struct MPT2SAS_ADAPTER *ioc);
void mpt2sas_base_update_missing_delay(struct MPT2SAS_ADAPTER *ioc,
u16 device_missing_delay, u8 io_missing_delay);
int mpt2sas_port_enable(struct MPT2SAS_ADAPTER *ioc); int mpt2sas_port_enable(struct MPT2SAS_ADAPTER *ioc);
/* scsih shared API */ /* scsih shared API */
......
...@@ -101,6 +101,10 @@ static ushort max_sectors = 0xFFFF; ...@@ -101,6 +101,10 @@ static ushort max_sectors = 0xFFFF;
module_param(max_sectors, ushort, 0); module_param(max_sectors, ushort, 0);
MODULE_PARM_DESC(max_sectors, "max sectors, range 64 to 32767 default=32767"); MODULE_PARM_DESC(max_sectors, "max sectors, range 64 to 32767 default=32767");
static int missing_delay[2] = {-1, -1};
module_param_array(missing_delay, int, NULL, 0);
MODULE_PARM_DESC(missing_delay, " device missing delay , io missing delay");
/* scsi-mid layer global parmeter is max_report_luns, which is 511 */ /* scsi-mid layer global parmeter is max_report_luns, which is 511 */
#define MPT2SAS_MAX_LUN (16895) #define MPT2SAS_MAX_LUN (16895)
static int max_lun = MPT2SAS_MAX_LUN; static int max_lun = MPT2SAS_MAX_LUN;
...@@ -7303,7 +7307,9 @@ _firmware_event_work(struct work_struct *work) ...@@ -7303,7 +7307,9 @@ _firmware_event_work(struct work_struct *work)
case MPT2SAS_PORT_ENABLE_COMPLETE: case MPT2SAS_PORT_ENABLE_COMPLETE:
ioc->start_scan = 0; ioc->start_scan = 0;
if (missing_delay[0] != -1 && missing_delay[1] != -1)
mpt2sas_base_update_missing_delay(ioc, missing_delay[0],
missing_delay[1]);
dewtprintk(ioc, printk(MPT2SAS_INFO_FMT "port enable: complete " dewtprintk(ioc, printk(MPT2SAS_INFO_FMT "port enable: complete "
"from worker thread\n", ioc->name)); "from worker thread\n", ioc->name));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment