Commit f8852744 authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley

[PATCH] PATCH [3/15] qla2xxx: Increase MBX IOXB timeout

Fix a problem where during heavy I/O the driver would
improperly timeout an outstanding MBX IOCB before the
firmware itself had a chance to issue and wait for the
command to timeout.
parent 968020d4
...@@ -292,15 +292,17 @@ qla2x00_iodesc_timeout(unsigned long data) ...@@ -292,15 +292,17 @@ qla2x00_iodesc_timeout(unsigned long data)
* *
* NOTE: * NOTE:
* The firmware shall timeout an outstanding mailbox IOCB in 2 * R_A_TOV (in * The firmware shall timeout an outstanding mailbox IOCB in 2 * R_A_TOV (in
* tenths of a second). The driver will wait 2.5 * R_A_TOV before scheduling * tenths of a second) after it hits the wire. But, if there are any request
* a recovery (big hammer). * resource contraints (i.e. during heavy I/O), exchanges can be held off for
* at most R_A_TOV. Therefore, the driver will wait 4 * R_A_TOV before
* scheduling a recovery (big hammer).
*/ */
static inline void static inline void
qla2x00_add_iodesc_timer(struct io_descriptor *iodesc) qla2x00_add_iodesc_timer(struct io_descriptor *iodesc)
{ {
unsigned long timeout; unsigned long timeout;
timeout = ((iodesc->ha->r_a_tov * 2) + (iodesc->ha->r_a_tov / 2)) / 10; timeout = (iodesc->ha->r_a_tov * 4) / 10;
init_timer(&iodesc->timer); init_timer(&iodesc->timer);
iodesc->timer.data = (unsigned long) iodesc; iodesc->timer.data = (unsigned long) iodesc;
iodesc->timer.expires = jiffies + (timeout * HZ); iodesc->timer.expires = jiffies + (timeout * HZ);
......
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