|
@@ -22,7 +22,7 @@
|
|
|
**************************************************************************
|
|
|
*/
|
|
|
|
|
|
-#define MCDI_RPC_TIMEOUT 10 /*seconds */
|
|
|
+#define MCDI_RPC_TIMEOUT (10 * HZ)
|
|
|
|
|
|
#define MCDI_PDU(efx) \
|
|
|
(efx_port_num(efx) ? MC_SMEM_P1_PDU_OFST : MC_SMEM_P0_PDU_OFST)
|
|
@@ -120,7 +120,7 @@ static void efx_mcdi_copyout(struct efx_nic *efx, u8 *outbuf, size_t outlen)
|
|
|
static int efx_mcdi_poll(struct efx_nic *efx)
|
|
|
{
|
|
|
struct efx_mcdi_iface *mcdi = efx_mcdi(efx);
|
|
|
- unsigned int time, finish;
|
|
|
+ unsigned long time, finish;
|
|
|
unsigned int respseq, respcmd, error;
|
|
|
unsigned int pdu = FR_CZ_MC_TREG_SMEM + MCDI_PDU(efx);
|
|
|
unsigned int rc, spins;
|
|
@@ -136,7 +136,7 @@ static int efx_mcdi_poll(struct efx_nic *efx)
|
|
|
* and poll once a jiffy (approximately)
|
|
|
*/
|
|
|
spins = TICK_USEC;
|
|
|
- finish = get_seconds() + MCDI_RPC_TIMEOUT;
|
|
|
+ finish = jiffies + MCDI_RPC_TIMEOUT;
|
|
|
|
|
|
while (1) {
|
|
|
if (spins != 0) {
|
|
@@ -146,7 +146,7 @@ static int efx_mcdi_poll(struct efx_nic *efx)
|
|
|
schedule_timeout_uninterruptible(1);
|
|
|
}
|
|
|
|
|
|
- time = get_seconds();
|
|
|
+ time = jiffies;
|
|
|
|
|
|
rmb();
|
|
|
efx_readd(efx, ®, pdu);
|
|
@@ -158,7 +158,7 @@ static int efx_mcdi_poll(struct efx_nic *efx)
|
|
|
EFX_DWORD_FIELD(reg, MCDI_HEADER_RESPONSE))
|
|
|
break;
|
|
|
|
|
|
- if (time >= finish)
|
|
|
+ if (time_after(time, finish))
|
|
|
return -ETIMEDOUT;
|
|
|
}
|
|
|
|
|
@@ -257,7 +257,7 @@ static int efx_mcdi_await_completion(struct efx_nic *efx)
|
|
|
if (wait_event_timeout(
|
|
|
mcdi->wq,
|
|
|
atomic_read(&mcdi->state) == MCDI_STATE_COMPLETED,
|
|
|
- msecs_to_jiffies(MCDI_RPC_TIMEOUT * 1000)) == 0)
|
|
|
+ MCDI_RPC_TIMEOUT) == 0)
|
|
|
return -ETIMEDOUT;
|
|
|
|
|
|
/* Check if efx_mcdi_set_mode() switched us back to polled completions.
|